¿Qué es un slug?

Un slug es una parte de la URL cuando se accede a un recurso. Digamos que usted tiene una URL, como la siguiente, que muestra todos los coches en su sistema:

http://localhost/cars

Cuando usted quiere hacer referencia a un coche en particular en su sistema, usted proporcionaría la siguiente URL:

http://localhost/cars/audi-a6/

Fíjese cómo la URL sigue siendo muy lógica, y muy amigable para el SEO. En cuanto al uso de la babosa, eso es a su propia discreción. La cadena audi-a6 anterior puede ser un identificador único para un coche en su sistema – digamos que usted tiene una base de datos relacional con los siguientes campos:

idcar_namecar_brandcar_unique_identifier

El campo car_unique_identifier se utilizaría para almacenar los valores que se muestran en el slug; en el ejemplo que he especificado anteriormente con un coche Audi A6, aquí es donde su cadena audi-a6 viviría.

También puedes utilizarlo de otras maneras – por ejemplo, si tienes un controlador de entradas que funciona como un blog. El título de una página podría ser el slug de la misma, si se codifica la URL. Para nuestro artículo llamado «Best ways to make seo better», puede proporcionar la siguiente URL:

http://localhosts/posts/best-ways-to-make-seo-better

Entonces ejecutarías url_decode() en el slug, y obtendrías la cadena best ways to make seo better, que puedes usar para encontrar un post a través de su título.

No tiene por qué parar ahí – puedes decidir tener múltiples slugs para representar algo – echemos un vistazo a cómo lo hace la BBC. He tomado un artículo al azar de hoy, que tiene la siguiente URL:

http://www.bbc.co.uk/news/world-africa-24506006

Esto enlaza con un artículo llamado: La Unión Africana insta a la CPI a abandonar los casos contra los líderes. La forma en que la BBC lo hace es que utiliza la última parte del slug world-africa-24506006, que es 24506006, para identificar una entrada única en su sistema. A continuación, lo más probable es que utilicen world-africa para denotar la categoría a la que pertenece una entrada (aunque esto puede ser sólo una suposición, no deja de ser una conjetura).

Por último, imaginemos la siguiente tabla de la BD, para los trabajos de investigación.

idcategorytitle

Puede que tenga un ejemplo que funcione como el siguiente.

http://localhost/papers

Esta URL representa todos los trabajos de investigación actualmente en el sistema. Usted podría entonces acceder a todos los trabajos de investigación sobre física a través del siguiente slug:

http://localhost/papers/physics

Nuestro slug es la física, y nuestra selección de la base de datos actualmente se ve algo como:

SELECT *FROM papersWHERE LOWER(papers.category) = 'physics'

Puede entonces exponer la siguiente URL:

http://localhost/papers/physics/gravitation

Ahora nuestro slug está compuesto por la física y la gravitación. Nuestra consulta detrás de las escenas puede ser algo como:

SELECT *FROM papersWHERE LOWER(papers.category) = 'physics'AND LOWER(papers.title) = 'gravitation'

Esto nos permite identificar de forma única una entrada en nuestro sistema.

Así que hemos utilizado slugs repetidamente con el fin de filtrar nuestra información. En el ejemplo, cuando ejecutamos la URL sin ninguna babosa:

http://localhost/papers

Queríamos listar todos los artículos de investigación disponibles. Cuando ejecutamos la URL con el slug de física:

http://localhost/papers/physics

Queríamos listar todos los artículos de investigación sobre física, reduciendo así nuestros resultados. Por último, cuando proporcionamos dos slugs, pudimos identificar de forma exclusiva una entrada en nuestro sistema.

http://localhost/papers/physics/gravitation

¿Podríamos haber modelado esto de forma diferente? Por supuesto. Dependiendo de los requisitos de nuestro sistema, podemos normalizar y desnormalizar nuestras tablas relacionales. Podríamos haber tenido un sistema de enlace permanente en su lugar, de modo que nuestra tabla de mensajes se parecía a esto:

 id title permalink

Podríamos entonces han tenido la siguiente entrada:

 | 20013 | Gravitation | physics-gravitation-breakthrough |

Así, la exposición de la URL:

 http://localhost/papers/physics-gravitation-breakthrough

En el ejemplo anterior, la babosa física-gravitación-rompimiento nos permite identificar de forma única un puesto a través de:

 SELECT * FROM papers WHERE papers.permalink = physics-gravitation-breakthrough