Uno slug è una parte dell’URL quando si accede a una risorsa. Diciamo che hai un URL, come quello qui sotto, che mostra tutte le auto nel tuo sistema:
http://localhost/cars
Quando vuoi fare riferimento a una particolare auto nel tuo sistema, dovresti fornire il seguente URL:
http://localhost/cars/audi-a6/
Nota come l’URL è ancora molto logico, e molto SEO friendly. In termini di utilizzo dello slug, questo è a vostra discrezione. La stringa audi-a6 di cui sopra può essere un identificatore unico per un’auto nel vostro sistema – diciamo che avete un database relazionale con i seguenti campi:
idcar_namecar_brandcar_unique_identifier
Il campo car_unique_identifier
verrebbe quindi utilizzato per memorizzare i valori che vengono visualizzati nello slug; nell’esempio che ho specificato sopra con un’auto Audi A6, questo è dove la vostra stringa audi-a6 dovrebbe stare.
Lo si può usare anche in altri modi – per esempio, se si ha un controller dei post che funziona come un blog. Il titolo di una pagina potrebbe essere lo slug per essa, se è codificato come URL. Per il nostro articolo chiamato “Best ways to make SEO better”, potreste fornire il seguente URL:
http://localhosts/posts/best-ways-to-make-seo-better
Eseguirete quindi url_decode()
sullo slug, e otterrete la stringa best ways to make seo better, che potete usare per trovare un post tramite il suo titolo.
Non è necessario fermarsi qui – potete decidere di avere più slug per rappresentare qualcosa – diamo un’occhiata a come lo fa BBC. Ho preso un articolo a caso di oggi, che ha il seguente URL:
http://www.bbc.co.uk/news/world-africa-24506006
Questo si collega a un articolo chiamato: L’Unione Africana sollecita la CPI a lasciar cadere i casi contro i leader. Il modo in cui la BBC sta facendo è che usano l’ultima parte dello slug world-africa-24506006, che è 24506006, per identificare una voce unica nel loro sistema. Poi molto probabilmente usano world-africa per denotare la categoria a cui appartiene un post (anche se questa può essere solo una supposizione, è comunque un’ipotesi educata).
Infine, immaginiamo la seguente tabella DB, per documenti di ricerca.
idcategorytitle
Potresti avere un esempio che funziona come quello qui sotto.
http://localhost/papers
Questo URL rappresenta tutti gli articoli di ricerca attualmente nel sistema. Si potrebbe quindi essere in grado di accedere a tutti gli articoli di ricerca sulla fisica attraverso il seguente slug:
http://localhost/papers/physics
Il nostro slug è la fisica, e il nostro database select attualmente assomiglia a qualcosa come:
SELECT *FROM papersWHERE LOWER(papers.category) = 'physics'
Si potrebbe quindi esporre il seguente URL:
http://localhost/papers/physics/gravitation
Ora il nostro slug è composto da fisica e gravitazione. La nostra query dietro le quinte può assomigliare a qualcosa come:
SELECT *FROM papersWHERE LOWER(papers.category) = 'physics'AND LOWER(papers.title) = 'gravitation'
Questo ci permette di identificare univocamente una voce nel nostro sistema.
Allora abbiamo usato ripetutamente gli slug per filtrare le nostre informazioni. Nell’esempio, quando abbiamo eseguito l’URL senza slug:
http://localhost/papers
Vogliamo elencare tutte le ricerche disponibili. Quando abbiamo eseguito l’URL con lo slug physics:
http://localhost/papers/physics
Abbiamo voluto elencare tutte le ricerche sulla fisica, restringendo così i nostri risultati. Infine, quando abbiamo fornito due slug, abbiamo potuto identificare univocamente una voce nel nostro sistema.
http://localhost/papers/physics/gravitation
Potevamo modellare questo in modo diverso? Certamente! A seconda dei requisiti del nostro sistema, possiamo normalizzare e denormalizzare le nostre tabelle relazionali. Avremmo potuto avere un sistema di permalink, in modo che la nostra tabella dei post assomigliasse a questa:
id title permalink
Potremmo quindi avere la seguente voce:
| 20013 | Gravitation | physics-gravitation-breakthrough |
Così da esporre l’URL:
http://localhost/papers/physics-gravitation-breakthrough
Nell’esempio precedente, lo slug physics-gravitation-breakthrough ci permette di identificare univocamente un post tramite:
SELECT * FROM papers WHERE papers.permalink = physics-gravitation-breakthrough