Wat is een slak?

Ik ben momenteel bezig met de CodeIgniters-tutorial in zijn fantastische documentatie. Er is echter een term die vaak wordt gebruikt en die een “slak” wordt genoemd. Ik heb veel rondgekeken om erachter te komen wat de term betekent en ik kan niet begrijpen wat het is en waar het voor dient. Hier is een voorbeeld van wanneer het wordt gebruikt:

Met deze code kunt u twee verschillende zoekopdrachten uitvoeren. Je kunt alles krijgen
nieuwsrecords, of krijg een nieuwsbericht door zijn slug


Antwoord 1, autoriteit 100%

Een slug maakt deel uit van de URL wanneer u een bron opent. Stel dat u een URL heeft, zoals hieronder, die alle auto’s in uw systeem weergeeft:

http://localhost/cars

Als u naar een bepaalde auto in uw systeem wilt verwijzen, geeft u de volgende URL op:

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

Merk op hoe de URL nog steeds erg logisch is en erg SEO-vriendelijk. Wat betreft het gebruik van de slug, dat is naar eigen goeddunken. De audi-a6string hierboven kan een unieke identificatie zijn voor een auto in je systeem — laten we zeggen dat je een relationele database hebt met de volgende velden:

id
car_name
car_brand
car_unique_identifier

Het veld car_unique_identifierzou dan worden gebruikt om de waarden op te slaan die in de slug worden weergegeven; in het voorbeeld dat ik hierboven heb gespecificeerd met een Audi A6-auto, is dit waar je audi-a6-snaar zou leven.

Je kunt het ook op andere manieren gebruiken, bijvoorbeeld als je een posts-controller hebt die werkt als een blog. De titel van een pagina kan de slug zijn, als deze URL-gecodeerd is. Voor ons artikel met de naam “De beste manieren om SEO te verbeteren”, kunt u de volgende URL opgeven:

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

Je zou dan url_decode()uitvoeren op de slug, en je zou de string beste manieren om seo beter te makenverkrijgen, die je kunt gebruiken om een post via de titel.

Het hoeft daar niet te stoppen – je kunt besluiten om meerdere naaktslakken te hebben om iets te vertegenwoordigen – laten we eens kijken hoe BBC het doet. Ik heb een willekeurig artikel van vandaag genomen met de volgende URL:

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

Dit linkt naar een artikel met de naam: Afrikaanse Unie dringt er bij ICC op aan zaken tegen leiders te laten vallen. De manier waarop BBC het doet, is dat ze het laatste deel van de slug world-africa-24506006, dat is 24506006, gebruiken om een ​​uniek item in hun systeem te identificeren. Ze gebruiken dan hoogstwaarschijnlijk world-africaom de categorie aan te duiden waartoe een bericht behoort (hoewel dit misschien slechts een veronderstelling is, is het nog steeds een weloverwogen gok).

Laten we ons ten slotte de volgende DB-tabel voorstellen, voor onderzoekspapers.

id
category
title

Misschien heb je een voorbeeld dat werkt zoals hieronder.

http://localhost/papers

Deze URL vertegenwoordigt alle onderzoekspapers die momenteel in het systeem aanwezig zijn. Je zou dan toegang hebben tot alle onderzoekspapers over natuurkunde via de volgende slug:

http://localhost/papers/physics

Onze slug is fysica, en onze databaseselectie ziet er momenteel ongeveer zo uit:

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

U kunt dan de volgende URL vrijgeven:

http://localhost/papers/physics/gravitation

Onze naaktslak bestaat nu uit fysicaen zwaartekracht. Onze vraag achter de schermen kan er ongeveer zo uitzien:

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

Hierdoor kunnen we een vermelding in ons systeem op unieke wijze identificeren.

Dus we hebben herhaaldelijk slugs gebruikt om onze informatie eruit te filteren. In het voorbeeld, toen we de URL zonder enige slugs uitvoerden:

http://localhost/papers

We wilden alle beschikbare onderzoekspapers op een rijtje zetten. Toen we de URL uitvoerden met de fysicaslug:

http://localhost/papers/physics

We wilden alle onderzoekspapers over fysicaop een rijtje zetten, waardoor onze resultaten werden beperkt. Toen we ten slotte twee slugs aanleverden, konden we een vermelding in ons systeem op unieke wijze identificeren.

http://localhost/papers/physics/gravitation

Hadden we dit anders kunnen modelleren? Natuurlijk! Afhankelijk van de vereisten van ons systeem, kunnen we onze relationele tabellen normaliseren en denormaliseren. We hadden een permalink-systeem kunnen hebben, zodat onze berichtentabel er als volgt uitzag:

id
 title
 permalink

We hadden dan de volgende invoer kunnen hebben:

| 20013 | Gravitation | physics-gravitation-breakthrough |

Zo wordt de URL zichtbaar:

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

In het bovenstaande voorbeeld stelt de slug physics-gravitation-breakthroughons in staat om een ​​bericht op unieke wijze te identificeren via:

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

Antwoord 2, autoriteit 70%

Kort antwoord

Het is het what-is-a-slug-gedeelte in de URL van deze vraag.


Antwoord 3, autoriteit 9%

“slug” is een volledig contextafhankelijk woord, maar bij het programmeren of wat deze vraag betreft verwijst “slug” hier naar een URL. We weten dat een URL niet elk teken kan bevatten. Dat is de reden waarom wanneer een bericht, pagina of controller deze in de titel heeft getypt, zodat de slug wordt gebruikt als URL. Wat automatisch kan worden afgeleid.

Dus in één regel is slug een URL-vriendelijke versievan een willekeurige naam.


Antwoord 4, autoriteit 3%

Het volgende is een voorbeeld van een naaktslak:

<?php
 function create_slug($string){
  $slug=preg_replace('/[^A-Za-z0-9-]+/', '-', $string);
  return $slug;
   }
  echo create_slug('does this thing work or not');
   //returns 'does-this-thing-work-or-not'
  ?>

Antwoord 5

Alle antwoorden hierboven zijn correct, maar ik wil direct antwoord op de vraag.
Slugin het voorbeeld van de Codeigniter-tutorial verwijst naar de URL “nieuws“. Als u geen “news” als uw $slug of slug in uw database heeft en u voert deze url in uw browser uit, zal “index.php/news/view” fout 404_page niet gevonden retourneren.
Ik kwam dit probleem tegen totdat ik de bovenstaande antwoorden las, waardoor ik begreep wat Slug bedoelde.
Ik verander mijn slug in nieuws in de databasetabel.
Slug is als een aanwijzer.

Other episodes