Co je to slug?

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

.