iCarsOnline

iCarsOnline

your online auto source!

MayaSpace

MayaSpace

Baby Patron | Web Personal

The Word of the Lord

The Word of the Lord

BroadCasts Religious

Abogado Garza

Abogado Garza

Lawyer Web Page

Sep
18

Hoy en día la creación slugs basados en lo títulos de nuestros artículos es muy popular. WordPress, Drupal y muchos más lo utilizan de forma excelente. Sin duda los slugs son muy favorables para el posicionamiento web (SEO) en los buscadores especialmente en Google.

No basta con tener configurado tu htaccess o algún script que permita trabajar con urls amigables, especialmente si trabajamos con una tabla de artículos necesitaremos crear un slug de los títulos para que puedan ser leídos por el método que usemos para generar urls amigables.

Aquí un método que anos ayudara en este proceso.

function caracteres_latinos($cadena){
	//acentos
	$cadena = ereg_replace("(À|Á|Â|Ã|Ä|Å|à|á|â|ã|ä|å)","a",$cadena);
	$cadena = ereg_replace("(È|É|Ê|Ë|è|é|ê|ë)","e",$cadena);
	$cadena = ereg_replace("(Ì|Í|Î|Ï|ì|í|î|ï)","i",$cadena);
	$cadena = ereg_replace("(Ò|Ó|Ô|Õ|Ö|Ø|ò|ó|ô|õ|ö|ø)","o",$cadena);
	$cadena = ereg_replace("(Ù|Ú|Û|Ü|ù|ú|û|ü)","u",$cadena);

	//la ñ
	$cadena = ereg_replace("(Ñ|ñ)","n",$cadena);

	//caracteres extraños
	$cadena = ereg_replace("(Ç|ç)","c",$cadena);
	$cadena = ereg_replace("ÿ","y",$cadena);

	return $cadena;
}

function generar_slug($cadena, $separador = '-'){
	//sin espacios al inicio o al final
	$cadena = trim($cadena);

	//limpiamos caracteres los latinos
	$cadena =  caracteres_latinos($cadena);

	//pasamos a minuscula la cadena
	$cadena = strtolower($cadena);

	//limpiamos saltos de lineas y tab
	$cadena = ereg_replace("[ \t\n\r]+", " ", $cadena);

	//limpiamos todos los caracteres invalidos
	$cadena = ereg_replace("[^ A-Za-z0-9_]", "", $cadena);

	//limpieza de espacios vacios de los valores invalidos al final de la cadena
	$cadena = trim($cadena);

	//reemplazamos los espacios vacios por el separador
	$cadena = str_replace(" ", $separador, $cadena);

	return $cadena;
}

$str = generar_slug('Así es el ejemplo para generar el Slug ¿o no?');

//retornara #-> asi-es-el-ejemplo-para-generar-el-slug-o-no
echo $str;

Muy sencillo pero practico, lo podemos usar para generar un slug del titulo de nuestros artículos y grabarlo en otro campo de nuestra tabla el cual se convertiría en un identificador de la noticia.

Categorizado: Desarrollo Web | Web2Dev
Etiquetado: | | |

Comparte esta noticia:

Articulos Relacionados

5 Valiente(s) Opinaron, falta el tuyo comenta


    1

    Excelente. Hacía tiempo que quería quitar los acentos de las url de mi web y no lo había conseguido al 100 %. Con este script si me ha salido.

    Gracias!!


    2

    Hola

    me parece super interesante! estoy tratando de hacer un CMS y eso me llevo a ver un poco en la web q es lo de urls amigables, y este articulo me parece bastante claro.

    pero como se utiliza? no entiendo como deberia funcionar la estructura. :( alguien q me oriente un poquito??

    Gracias

    Ana.


    3

    @Anabella: Esta función podrias utilizarla justo antes de guardar el titulo de la noticia en tu tabla con lo cual generas el slug y tambien lo guardas.

    algo asi

    // supongamos que $_POST['titulo'] = “Anabella programando un CMS en php”;

    $titulo = $_POST['titulo'];
    //$titulo=”Anabella programando un CMS en php”

    $slug = generar_slug($titulo);
    //$slug=”anabella-programando-un-cms-en-php”

    $contenido = $_POST['contenido']);
    //$contenido=”El cms consta de 5 archivos…. etc”

    $query =”INSERT INTO noticias (titulo,slug, contenido)
    VALUES (‘”.$titulo.”‘, ‘”.$slug.”‘, ‘”.$contenido.”‘)”;

    Luego el slug se volveria algo similar a un identificador de la noticia, que despues mediante la url.

    /index.php?noticia=anabella-programando-un-cms-en-php

    $query = “SELECT * FROM noticias WHERE slug=’”.$_GET['noticia'].”‘”;

    algo asi es la idea obviamente no olvidando validaciones previas :D .

    Saludos.


    4

    Hola Alguien me puede explicar como se utiliza este script? tengo en la base donde se guarda el contenido de las paginas un campo reservado para el nombre amigable y despues pretendo levantar en el index cada contenido dependiendo de lo solicitado pero donde debe estar este script y que info debo enviarle?

    Gracias Ana


    5

    Muy interesante!,

    He encontrado una rutina en que hace lo mismo pero algo mas elegante.

    http://debuggable.com/posts/title-to-url-slug-conversion:480f4dd6-a398-4c76-895c-4844cbdd56cb

    para convertir URL que es algo mas “fina” pero hace lo mismo.

    Yo le tuve que añadir una conversión de UTF8 a ISO al principio ( utf8_decode()) por que trabajo con UTF8.


2 Sitio(s) que enlazan a esta noticia

  • floreame.net:
    Septiembre 18, 2008 a las 4:03 pm
  • Danos tu opinion sobre esta noticia.

    CalinSoft se reserva el derecho de eliminar o editar todo comentario que considere ofensivo o difamatorio. Debatir, criticar NO ES INSULTAR.