Met spoed PHP Developer gezocht voor URL Slugs

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

TonnyBoy Verweij

TonnyBoy Verweij

31/01/2015 09:22:52
Quote Anchor link
Beste,

Ik zoek iemand die voor mij URL Slugs kan maken die SEO Friendly zijn, zoals dit:
www.behelix.com/events/afterflirt

Waarbij www.behelix.com/events ook een pagina is, ik moet dit zelf handig kunnen uitbreiden, dus eventuele uitleg is welkom!
Heb enige kennis van PHP dus dat moet het probleem niet zijn.

Het heeft enige haast, prijs kunnen we samen wel uitkomen!

Interesse? Dan kan je mailen naar: [email protected]

Met vriendelijke groet,
Tonny-Boy Verweij
 
PHP hulp

PHP hulp

23/11/2024 10:28:15
 
Php knipper

php knipper

31/01/2015 17:56:33
Quote Anchor link
.htaccess
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
RewriteEngine On
RewriteBase /

RewriteCond %{HTTP_HOST} ^www\.behelix\.com$ [NC]
RewriteRule ^(.*)$ http://behelix.com/$1 [R=301,L]

RewriteRule ^events$ index.php?pagina=events
RewriteRule ^events/$ index.php?pagina=events
RewriteRule ^events/(.*)$ index.php?pagina=events&sub=$1
RewriteRule ^events/(.*)/$ index.php?pagina=events&sub=$1


index.php
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
if($_GET['pagina'] == "events") {
    if($_GET['sub'] == "afterflirt") {
        $include = "paginas/events/afterflirt.php";
    }
else {
        $include = "paginas/events/index.php";
    }
}
else {
    $include "paginas/home/index.php";
}


if(file_exists($include)) {
    include($include);
}
else {
    echo "De pagina bestaat niet";
}

?>


dan heb je een opzet hoe het werkt
Gewijzigd op 31/01/2015 17:57:07 door php knipper
 
Ivo P

Ivo P

01/02/2015 02:05:35
Quote Anchor link
of

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
RewriteEngine On

# als bestaat, dan niets doen
RewriteCond %{REQUEST_FILENAME} -d [OR]
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^  - [L]

# de rest gaat naar index.php
RewriteRule ^(.*)$ index.php [L,QSA]


Vervolgens zorg je in index.php dat er uitgezocht wordt wat er in de url staat

$url = $_SERVER['REQUEST_URI'];

simpel gezegd: je kunt met explode() kijken welke onderdelen je hebt.

Als blijkt dat deel 1 "events" is, dan start je een functie die daarmee zijn ding doet.
Als deel 2 ook bestaat, dan doe je daar iets mee in de genoemde functie, of als hij onbreekt doe je daarmee ook je ding.

Dat maakt dat je .htaccess altijd werkt. Ook als je nog 4 alternatieve termen hebt naast "events".
(dat zou je nog dynamisch kunnen doen in de rewriterules)
Maar vooral is dat handig als je soms 1, soms 2 en soms 5 elementen in je url hebt staan:

/events/afterflirt/aanmelden/2/personen

Met verschillende aantallen elementen worden de rewriterules namelijk al snel ondoorzichtig en als er een fout in zit, is dat vaak heel moeilijk te debuggen.
In PHP heb je daar veel meer controle over in het algemeen.
 
Thomas van den Heuvel

Thomas van den Heuvel

01/02/2015 11:43:28
Quote Anchor link
Mja.

1. .htaccess met één RewriteRule die alles doorstuurt naar index.php
2. index.php als je single entry point
3. ???
4. PROFIT

De topicstarter vraagt min of meer naar stap 3 (specifiek: het bouwen van slugs, met oog op uitbreidbaarheid), waar ook het meeste werk zit :).

Soortgelijke snippets als de bovenstaande zul je ook nodig hebben, omdat dit toch om een soort van totaaloplossing vraagt.

Waar je voor zou kunnen kiezen is een boomstructuur met nodes, zoiets dus:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
root
|
+---- public
|          +---- home
|          |
|          +---- news
|          |        +---- artikel 1
|          |        |
|          |        +---- artikel 2
|          |
|          +---- contact
|          |
|          ...
|
+---- admin
|         +---- beheerpagina 1
|         |
|         +---- beheerpagina 2
...


Al deze pagina's hebben nummers (node id's) en titels. Van deze titels wil je slugs maken. Elk niveau in de boom scheid je in de volledige URL van een pagina door een forward slash (/). De volledige URL van een pagina is dus opgebouwd door (de slugs van) de nodes vanaf de root naar de uiteindelijke pagina achter elkaar te zetten.

Er zijn genoeg stukken code te vinden om slugs te maken van titels. Vaak worden alle niet-leesbare karakters gestript, maar er valt ook wat voor te zeggen om toch te proberen om deze karakters om te zetten naar een leesbare variant. Mijn eigen code voor het opbouwen van slugs is afgeleid uit dit artikel.

Per node kun je aangeven wat deze node is: een placeholder (om simpelweg nodes te groeperen), een alias (van een andere node), een redirect (denk aan een shortcut) of een "echte" pagina. Ook zou je per node kunnen aangeven of deze bij moet dragen aan de opbouw van een URL of niet, je wilt niet al je publieke pagina's laten starten met "/public".

Aan deze node kun je nog meer "ophangen": het pagina-type (dit is bijvoorbeeld een class met een specifiek doel, bijvoorbeeld "article", en deze pagina-types hebben vervolgens weer eigenschappen (bijvoorbeeld artikel-id)). Het fijne van deze opzet is dat je deze types kunt instantiëren en je code herbruikbaar wordt (je kunt meerdere artikelen aanmaken in je boom, maar je artikel pagina-type hoef je maar 1x te schrijven. Authenticatie kun je hier ook in kwijt.

Maar dan komt het: misschien wil je vanuit pagina X binnen je site een interne link leggen naar pagina Y. Dit zou je kunnen "hardcoden" door te refereren aan de volledige URL, maar wat als je de pagina nu verplaatst (of van domein verandert, of de hele site naar een subdirectory verhuist)? Dan heb je een dode link in je site :/. Wat beter zou zijn is dus een soort van "interne link functie" die je voor al je interne navigatie gebruikt. Een heel groot voordeel hiervan is dat je je site "mobiel" houdt: je kunt deze neerzetten waar je wilt, dit is ook enorm fijn als je ontwikkelt op locatie A, en dezelfde site live hebt staan op locatie B. Anders moet je allerlei trucs uithalen met je hosts file, virtual hosts, een URL search-and-replace op je hele database... *brr*

Als je een linkfunctie hebt die refereert aan je node-id dan maakt het niet uit waar die pagina in je site-hierarchie staat of hoe de uiteindelijke URL luidt. Hiermee kun je pagina's dus ook vrij verplaatsen binnen je site zonder dat er iets breekt.

Dit hele verhaal heb ik bij wijze van oefening gebruikt bij het bouwen van mijn webpagina.

afbeelding backend

Hierbij moet je dus wel een aantal onderwerpen tegelijkertijd oppakken als je "van slugs gebruik wilt maken".

Je kunt er natuurlijk ook voor kiezen om voor een bestaand framework te gaan in plaats van je eigen wiel opnieuw uit te vinden.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.