Mikä on slug?

Slug on osa URL-osoitetta, kun käytät resurssia. Sanotaan, että sinulla on alla olevan kaltainen URL-osoite, joka näyttää kaikki järjestelmässäsi olevat autot:

http://localhost/cars

Kun haluaisit viitata tiettyyn järjestelmässäsi olevaan autoon, antaisit seuraavan URL-osoitteen:

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

Huomaa, että URL-osoite on edelleen hyvin looginen ja erittäin SEO-ystävällinen. Mitä tulee slugin käyttöön, se on oman harkintasi mukaan. Yllä oleva audi-a6-merkkijono voi olla auton yksilöllinen tunniste järjestelmässäsi – sanotaan, että sinulla on relaatiotietokanta, jossa on seuraavat kentät:

idcar_namecar_brandcar_unique_identifier

Kenttää car_unique_identifier käytettäisiin tällöin niiden arvojen tallentamiseen, jotka näytetään slugissa; edellä määrittelemässäni esimerkissä, jossa on Audi A6 -auto, audi-a6-merkkijono sijoittuisi sinne.

Voit käyttää sitä myös muilla tavoin – esimerkiksi jos sinulla on posts-ohjain, joka toimii kuten blogi. Sivun otsikko voi olla sen slug, jos se on URL-koodattu. Artikkelillemme, jonka nimi on ”Parhaat tavat tehdä SEO:sta parempaa”, voit antaa seuraavan URL-osoitteen:

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

Silloin suorittaisit url_decode() slugiin, ja saisit merkkijonon parhaita tapoja tehdä SEO:sta parempaa, jota voit käyttää löytääksesi postauksen sen otsikon kautta.

Sen ei tarvitse pysähtyä tähän – voit päättää, että sinulla voi olla useampia slugeja edustamaan jotakin asiaa – tarkastellaanpa, miten BBC:llä toimitaan. Olen ottanut satunnaisen artikkelin tältä päivältä, jonka URL-osoite on seuraava:

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

Tämä linkittää artikkeliin nimeltä: Afrikan unioni kehottaa ICC:tä luopumaan johtajien syytteistä. BBC:n tapa on se, että se käyttää slugin world-africa-24506006 viimeistä osaa, joka on 24506006, yksilöidäkseen ainutlaatuisen merkinnän järjestelmässään. Sen jälkeen he todennäköisesti käyttävät world-africa-merkintää merkitsemään kategoriaa, johon viesti kuuluu (vaikka tämä voi olla vain oletus, se on silti valistunut arvaus).

Viimeiseksi kuvitellaan seuraava DB-taulukko, tutkimuspapereita varten.

idcategorytitle

Voi olla, että sinulla on esimerkki, joka toimii alla olevan esimerkin tavoin.

http://localhost/papers

Tämä URL-osoite edustaa kaikkia järjestelmässä tällä hetkellä olevia tutkimuspapereita. Silloin voisit päästä käsiksi kaikkiin fysiikan tutkimuspapereihin seuraavan slugin kautta:

http://localhost/papers/physics

Slugimme on fysiikka, ja tietokantamme valinta näyttää tällä hetkellä jotakuinkin seuraavalta:

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

Voit sitten altistaa seuraavan URL-osoitteen:

http://localhost/papers/physics/gravitation

Nyt slugimme koostuu fysiikasta ja gravitaatiosta. Kyselymme kulissien takana voi näyttää jotakuinkin seuraavalta:

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

Siten voimme yksilöidä merkinnän yksiselitteisesti järjestelmässämme.

Olemme siis käyttäneet slugeja toistuvasti suodattaaksemme tietojamme. Esimerkissä, kun ajoimme URL-osoitteen ilman etuliitteitä:

http://localhost/papers

Haluimme luetella kaikki saatavilla olevat tutkimusjulkaisut. Kun ajoimme URL-osoitteen fysiikan slugin kanssa:

http://localhost/papers/physics

Haluimme luetella kaikki fysiikkaa käsittelevät tutkimusjulkaisut, jolloin rajasimme tuloksiamme. Lopuksi, kun annoimme kaksi slugia, pystyimme yksilöimään merkinnän yksiselitteisesti järjestelmässämme:

http://localhost/papers/physics/gravitation

Olisimmeko voineet mallintaa tämän toisin? Totta kai! Järjestelmämme vaatimuksista riippuen voimme normalisoida ja denormalisoida relaatiotaulukot. Meillä olisi voinut olla käytössä permalink-järjestelmä, jolloin viestit-taulukkomme olisi näyttänyt seuraavalta:

 id title permalink

Tällöin meillä olisi voinut olla seuraava merkintä:

 | 20013 | Gravitation | physics-gravitation-breakthrough |

Siten URL-osoite olisi paljastunut:

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

Ylläolevassa esimerkissä slug physics-gravitation-breakthrough mahdollistaa viestin yksilöllisen tunnistamisen seuraavalla tavalla:

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