Slug je součástí adresy URL při přístupu ke zdroji. Řekněme, že máte adresu URL, jako je ta níže, která zobrazuje všechny vozy v systému:
http://localhost/cars
Když byste chtěli odkázat na konkrétní vůz v systému, zadali byste následující adresu URL:
http://localhost/cars/audi-a6/
Všimněte si, že adresa URL je stále velmi logická a velmi přívětivá pro SEO. Pokud jde o použití slugu, je to na vašem vlastním uvážení. Výše uvedený řetězec audi-a6 může být jedinečným identifikátorem vozu ve vašem systému – řekněme, že máte relační databázi s následujícími poli:
idcar_namecar_brandcar_unique_identifier
Pole car_unique_identifier
by pak bylo použito k uložení hodnot, které se zobrazí ve slugu; v příkladu, který jsem uvedl výše s vozem Audi A6, by se zde nacházel váš řetězec audi-a6.
Můžete jej použít i jiným způsobem – například pokud máte řadič příspěvků, který funguje jako blog. Název stránky by mohl být jejím slugem, pokud je zakódován v adrese URL. Pro náš článek s názvem „Nejlepší způsoby, jak zlepšit SEO“ můžete zadat následující adresu URL:
http://localhosts/posts/best-ways-to-make-seo-better
Na slug byste pak spustili url_decode()
a získali byste řetězec best ways to make seo better, který můžete použít pro vyhledání příspěvku prostřednictvím jeho názvu.
Nemusí to skončit – můžete se rozhodnout mít více slugů, které budou něco reprezentovat – podívejme se, jak to dělá BBC. Vzal jsem náhodný článek z dnešního dne, který má následující adresu URL:
http://www.bbc.co.uk/news/world-africa-24506006
Tento odkaz vede na článek s názvem: Africká unie naléhá na ICC, aby stáhl případy proti vedoucím představitelům. BBC to dělá tak, že k identifikaci jedinečného záznamu ve svém systému používá poslední část slimáka world-africa-24506006, což je 24506006. Pak s největší pravděpodobností používají world-africa k označení kategorie, do které příspěvek patří (ačkoli to může být pouze předpoklad, stále je to kvalifikovaný odhad).
Nakonec si představme následující tabulku DB, pro výzkumné články.
idcategorytitle
Můžete mít příklad, který funguje jako ten níže.
http://localhost/papers
Tato adresa URL představuje všechny výzkumné práce, které jsou aktuálně v systému. Pak byste mohli mít přístup ke všem výzkumným pracím o fyzice prostřednictvím následujícího slugu:
http://localhost/papers/physics
Náš slug je fyzika a náš výběr databáze v současné době vypadá nějak takto:
SELECT *FROM papersWHERE LOWER(papers.category) = 'physics'
Můžete pak vystavit následující URL:
http://localhost/papers/physics/gravitation
Nyní je náš slug složen z fyziky a gravitace. Náš dotaz v zákulisí může vypadat nějak takto:
SELECT *FROM papersWHERE LOWER(papers.category) = 'physics'AND LOWER(papers.title) = 'gravitation'
To nám umožní jednoznačně identifikovat položku v našem systému.
Takže jsme opakovaně použili slugy, abychom mohli filtrovat naše informace. V příkladu, kdy jsme spustili adresu URL bez jakýchkoli slug:
http://localhost/papers
Chtěli jsme vypsat všechny dostupné výzkumné práce. Když jsme spustili adresu URL se slugem physics:
http://localhost/papers/physics
Chtěli jsme vypsat všechny výzkumné práce o fyzice, čímž jsme zúžili naše výsledky. Nakonec, když jsme zadali dva slugy, mohli jsme v našem systému jednoznačně identifikovat položku:
http://localhost/papers/physics/gravitation
Mohli jsme to modelovat jinak? Samozřejmě! V závislosti na požadavcích našeho systému můžeme naše relační tabulky normalizovat a denormalizovat. Mohli jsme mít zaveden systém permalinků, takže naše tabulka příspěvků by vypadala takto:
id title permalink
Mohli jsme pak mít následující záznam:
| 20013 | Gravitation | physics-gravitation-breakthrough |
Takto vystavíme adresu URL:
http://localhost/papers/physics-gravitation-breakthrough
Ve výše uvedeném příkladu nám slug physics-gravitation-breakthrough umožňuje jednoznačně identifikovat příspěvek prostřednictvím:
SELECT * FROM papers WHERE papers.permalink = physics-gravitation-breakthrough
.