En slug er en del af URL’en, når du får adgang til en ressource. Lad os sige, at du har en URL, som f.eks. nedenstående, der viser alle biler i dit system:
http://localhost/cars
Når du ønsker at henvise til en bestemt bil i dit system, skal du angive følgende URL:
http://localhost/cars/audi-a6/
Bemærk, hvordan URL’en stadig er meget logisk og meget SEO-venlig. Hvad angår brugen af sluggen, er det op til dit eget skøn. Audi-a6-strengen ovenfor kan være en unik identifikator for en bil i dit system – lad os sige, at du har en relationel database med følgende felter:
idcar_namecar_brandcar_unique_identifier
Feltet car_unique_identifier
vil så blive brugt til at gemme de værdier, der bliver vist i sluggen; i det eksempel, som jeg har angivet ovenfor med en Audi A6-bil, er det her, din audi-a6-streng vil ligge.
Du kan også bruge det på andre måder – f.eks. hvis du har en posts-controller, der fungerer som en blog. Titlen for en side kan være sluggen for den, hvis den er URL-kodet. For vores artikel med navnet “Best ways to make SEO better” kan du angive følgende URL:
http://localhosts/posts/best-ways-to-make-seo-better
Du ville så køre url_decode()
på sluggen, og du ville få strengen best ways to make seo better, som du kan bruge til at finde et indlæg via dets titel.
Det behøver ikke at stoppe her – du kan beslutte dig for at have flere slugs til at repræsentere noget – lad os se på, hvordan BBC gør det. Jeg har taget en tilfældig artikel fra i dag, som har følgende URL:
http://www.bbc.co.uk/news/world-africa-24506006
Dette linker til en artikel med navnet:
http://www.bbc.co.uk/news/world-africa-24506006
Dette linker til en artikel med navnet: Den Afrikanske Union opfordrer ICC til at droppe sager mod ledere. Den måde, BBC gør det på, er, at de bruger den sidste del af sluggen world-africa-24506006, som er 24506006, til at identificere en unik post i deres system. Derefter bruger de højst sandsynligt world-africa til at betegne den kategori, som et indlæg tilhører (selv om dette måske kun er en antagelse, er det stadig et kvalificeret gæt).
Sluttelig, lad os forestille os følgende DB-tabelle, for forskningsartikler.
idcategorytitle
Du kan have et eksempel, der fungerer som det nedenstående.
http://localhost/papers
Denne URL repræsenterer alle de forskningsartikler, der i øjeblikket findes i systemet. Du vil så kunne få adgang til alle forskningsartikler om fysik via følgende slug:
http://localhost/papers/physics
Vores slug er fysik, og vores database select ser i øjeblikket ud som:
SELECT *FROM papersWHERE LOWER(papers.category) = 'physics'
Du kan så udsætte følgende URL:
http://localhost/papers/physics/gravitation
Nu er vores slug sammensat af fysik og gravitation. Vores forespørgsel bag kulisserne kan se nogenlunde sådan ud:
SELECT *FROM papersWHERE LOWER(papers.category) = 'physics'AND LOWER(papers.title) = 'gravitation'
Derved kan vi entydigt identificere en post i vores system.
Så vi har brugt slugs gentagne gange for at filtrere vores oplysninger. I eksemplet, da vi kørte URL’en uden slugs:
http://localhost/papers
Vi ønskede at opregne alle de tilgængelige forskningsartikler. Når vi kørte URL’en med sluggen physics:
http://localhost/papers/physics
Vi ønskede at få vist alle forskningsartikler om fysik og dermed indsnævre vores resultater. Endelig kunne vi, når vi angav to slugs, entydigt identificere en post i vores system:
http://localhost/papers/physics/gravitation
Kunne vi have modelleret dette på en anden måde? Selvfølgelig! Afhængigt af vores systemkrav kan vi normalisere og denormalisere vores relationstabeller. Vi kunne have haft et permalink-system på plads, så vores indlægstabel så således ud:
id title permalink
Vi kunne så have haft følgende post:
| 20013 | Gravitation | physics-gravitation-breakthrough |
Sådan eksponerer vi URL’en:
http://localhost/papers/physics-gravitation-breakthrough
I eksemplet ovenfor giver sluggen physics-gravitation-breakthrough os mulighed for at identificere et indlæg entydigt via:
SELECT * FROM papers WHERE papers.permalink = physics-gravitation-breakthrough