WebsiteBaker - Tips
Korte links gebruiken in WebsiteBaker |
| WebsiteBaker - Tips >> Code / Hacks |
Een onderwerp wat regelmatig in het WebsiteBaker forum voorkomt is het weghalen van de /pages/ directory in de url's en links die automatisch in het WebsiteBaker CMS worden gemaakt.
Er is nu een oplossing die in veel gevallen dit probleem zal oplossen.
Waarom is die /pages/ map er eigenlijk.
WebsiteBaker heeft jaren geleden gekozen voor een methode waarbij de pagina's volgens SEO (Serach Engine Optimization) richtlijnen worden gemaakt.
Geen URL's als www.mijnwebsite.nl/index/php?option=123&id=456&extra=789 voor een pagina met de titel "Contact".
Voor iedere pagina wordt een direkt opvraagbare pagina geschreven.
Geen statische pagina zoals bij HTML websites, maar een pagina waar alleen een klein beetje info in staat die van belang zijn voor het CMS om de juiste content te kunnen ophalen.
Het probleem hierbij is dat er ook een aantal mappen bestaan met bestanden die nodig zijn voor het functioneren van het CMS.
Bijvoorbeeld de mappen admin, include, framework enz..
Deze mappen zijn dus niet bruikbaar voor WebsiteBaker om pagina's in te schrijven
Het gevolg daarvan is dat je dus geen pagina's of structuren als "admin" of "media" zou kunnen maken.
Door alle pagina's in een map /pages/ te plaatsen is dit probleem opgelost.
De naam van die map is trouwens eenvoudig aan te passen via de "Instellingen" pagina. Je kan hem bijvoorbeeld aanpassen naar /doc/ of /cms/. Dat ziet er al iets minder "Engels" uit, en werkt ook prima.
Je moet alleen wel even zorgen dat die map ook echt bestaat, en dat WebsiteBaker de juiste rechten krijgt om daarin ook bestanden te kunnen maken.
Een oplossing..
Voor veel websites is er nu een mooie oplossing.
Ik schrijf bewust "Een oplossing". Er zijn in het WebsiteBaker forum meerdere oplossingen te vinden, echter allemaal met hun eigen probleempjes.
Je kan het geen module of snippet noemen. Maar het zorgt er wel voor dat je pagina's opvraagbaar zijn door achter de domeinnaam alleen de menu titel te geven.
Het maakt gebruik van de "Mod_ReWrite" functionaliteit van Apache webservers (Het werkt dus niet op Windows IIS servers), in combinatie met een klein script en een Droplet.
Een .htaccess bestand in de root van de website zal de opgevraagde URL bekijken, en - als de pagina rechtstreeks iet bestaat - splitsen in een domein-deel en een pagina-deel.
Het pagina-deel als parameter aan een speciaal script worden gegeven.
Het script gaat op zoek in de WebsiteBaker database naar de gevraagde pagina.
Hij doet dat door de menu-titel (of een deel daarvan) op te zoeken in de tabellen.
Als hij de juiste pagina heeft gevonden zal die op de normale manier worden getoond.
Om dit werkend te krijgen hoef je alleen vanuit de download de bestanden .htaccess en short.php via FTP in de rootmap van je webserver te zetten.
Het menu (show_menu2) en interne links.
Het menu systeem in WebsiteBaker heeft natuurlijk geen weet van deze oplossing. Als die geen pagina's met verkorte url's maakt heeft de hele oplossing geen zin.
Nu kan je door wat spelen met parameters show_menu2 wel zover krijgen dat hij ook korte linkjes zal maken, maar alle links die vanuit modules, of binnen pagina's worden gemaakt zullen nog naar de standaard WebsiteBaker URL's verwijzen.
Gelukkig hebben we tegenwoordig Droplets.
Droplets kunnen de complete informatie die op een webpagina wordt uitgestuurd bekijken, én aanpassen.
Het derde deel van deze oplossing is dus een droplet, die je via je template activeert en alle links (in menu of content) zal veranderen naar verkorte links.
Maak hiervoor in de AdminTools -> Droplets een nieuwe droplet aan, en noem hem bijvoorbeeld [[short]].
Plak de code erin die in de download in het bestandje "dropletcode.txt" staat, en plaats ergens in je template (bijvoorbeeld na de laatste <html>) [[short]]
Problemen..
Iedere oplossing heeft z'n probleem. ( Johan Cruijff ? )
Er wordt in deze oplossing gebruik gemaakt van de menu-titel van een pagina.
Het spreekt voor zich dat een menu-titel maar één keer mag voorkomen in de totale website.
Vooral bij meertalige websites heb je al snel meerdere "Contact" pagina's.
In dat geval zal de hier beschreven oplossing niet werken.
Ook een structuur waar je bijvoorbeeld pagina's als /producten/informatie en /services/informatie gebruikt zal het script niet kunnen bepalen welke "informatie" pagina wordt gevraagd, en dus altijd de eerste die hij vindt tonen.
Bij simpele website structuren werkt deze oplossing wel prima.
Nieuws en andere modules met "eigen" pagina's.
De nieuws module genereert zijn eigen pagina's (net als deze tips pagina) die niet in het menu voorkomen.
De pagina's hebben dus ook geen menu-titel, en worden niet veranderd.
Voor dit soort pagina's wal dus nog steeds de volledige URL (als /pages/posts/mijn-nieuwspagina.php) worden gebruikt.
Download
Je kan de hierboven beschreven oplossing downloaden via short.allwww.nl
Veel succes.
<< Naar het overzicht
Commentaren
Commentaar toevoegen
Onderwerpen
- Modules (5)
- Snippets (4)
- Code / Hacks (7)
- Templates / CSS (4)
- Droplets (1)
- Van alles (1)
