preg_replace bepaalde tekst
Ik ben bezig op dit moment met mijn eigen template systeem, uiteraard is die niet de beste, maarja, ik ga er wel handige functies in zetten en ik wil ervan leren.
Zo ook wil ik dat er een 'select' in de menu is. Dat heb ik al voor elkaar gekregen, dat die de het geselecteerde tabje bijvoorbeeld van je menu (de class) replaced met 'selected'. Maar, aangezien de andere tabjes niet in gebruik zijn, blijft bijvoorbeeld de {menuSelected["home"]} nog in de class staan:
Voorbeeld, je hebt:
<a class="{menuSelected["home"]}" href="./index.php">HOME</a> -
<a class="{menuSelected["niethome"]}" href="./index.php">NIET HOME</a>
En je geeft aan dat 'home' geselecteerd moet worden, dan wordt het:
<a class="selected" href="./index.php">HOME</a> -
<a class="{menuSelected["niethome"]}" href="./index.php">NIET HOME</a>
Maar, de niet geselecteerde, {menuSelected["niethome"]}, die blijft staan. Ik wil via preg_replace (de enige functie volgens mij die dat kan) de hele {menuSelected["niethome"]} weghalen, dus dat het dit wordt:
<a class="selected" href="./index.php">HOME</a> -
<a class="" href="./index.php">NIET HOME</a>
Of terwijl:
{menuSelected["niethome"]}
de "niethome" is dus een voorbeeld, dat tussen de "" kan dus alles zijn, "hghjbhg", "contact", "blabahs" whatever je kan bedenken, zolang dat hele gedeelte maar verdwijnt.
Dus iets als dit ofzo, maarja, dit werkt dan weer niet:
{menuSelected["(^.?)"]}
Ik heb echter geen enkele ervaring met preg_replace, en snap totaal niks van al die dingen die je moet gebruiken om het werkend te maken...
Misschien dat een van jullie weet heeft over hoe het werkt, of een andere functie kent waarmee je hetzelfde resultaat krijgt.
Let op: ik gebruik dus ook variablen, die zijn {$variablenaam} onder anderen, dus alles verwijderen tussen de {} lijkt mij geen goed idee...
Met vriendelijke groet,
Jasper
Daarnaast, dit alles is nu nog hardcoded en wijst naar scripts? Dus je hebt wel een templatesysteem, maar geen systeem voor interne links? Stel je hebt op den duur een heleboel pagina's in je site en je wilt een pagina hernoemen, veranderen dan al je verwijzingen mee?
Voorbeeld: je hebt de volgende pagina's: A, B, C, D
Vanaf B en C wordt verwezen naar A en nu hernoem je A naar E. Worden de verwijzingen in B en C dan automatisch aangepast?
Thomas van den Heuvel op 22/07/2015 21:05:21:
Misschien is het genereren van menu's met een templatesysteem niet de weg die je wilt gaan. Wat is er op tegen om dit in native PHP te doen? Je kunt de menu's dan "berekenen" en de selected class meteen op de goede plek zetten (mits je "weet" op welke pagina je zit) in plaats van een heleboel entries/opmaak met een zware operatie wegvegen.
Daarnaast, dit alles is nu nog hardcoded en wijst naar scripts? Dus je hebt wel een templatesysteem, maar geen systeem voor interne links? Stel je hebt op den duur een heleboel pagina's in je site en je wilt een pagina hernoemen, veranderen dan al je verwijzingen mee?
Voorbeeld: je hebt de volgende pagina's: A, B, C, D
Vanaf B en C wordt verwezen naar A en nu hernoem je A naar E. Worden de verwijzingen in B en C dan automatisch aangepast?
Daarnaast, dit alles is nu nog hardcoded en wijst naar scripts? Dus je hebt wel een templatesysteem, maar geen systeem voor interne links? Stel je hebt op den duur een heleboel pagina's in je site en je wilt een pagina hernoemen, veranderen dan al je verwijzingen mee?
Voorbeeld: je hebt de volgende pagina's: A, B, C, D
Vanaf B en C wordt verwezen naar A en nu hernoem je A naar E. Worden de verwijzingen in B en C dan automatisch aangepast?
Ik begrijp wat je bedoelt, maar het is de bedoeling dat het template systeem voor iedereen snel zal zijn met wat voor pagina je ook laad, en een menu kan lastig zijn, je weet niet of mensen nog een sub-menu hebben. Het is dus niet de bedoeling dat in de template zelf berekeningen worden gemaakt, erbuiten zal wel kunnen, maar dan zit je met de style en opmaak van de gebruiker.
Ik bedoel meer een soort 'TPL' systeem, dit is hoe het werkt, als iemand op elke pagina een header, footer menu etc. heeft, dan wordt tussen de menu en de footer de content gestopt:
Code (php)
1
2
3
4
5
2
3
4
5
$template->setModus(
'header', // De header
'menu', // Tussen hier
'footer' // en hier wordt de content geladen
);
'header', // De header
'menu', // Tussen hier
'footer' // en hier wordt de content geladen
);
Tsja, geen idee hoe ik het verder moet uitleggen...
Maar deze worden verder gegenereerd door PHP.
(EDIT: dit deed Joomla (in het verleden) volgens mij ook - deze heeft/had in de backend een onderdeel "Menu's")
Gewijzigd op 23/07/2015 14:58:46 door Thomas van den Heuvel
Thomas van den Heuvel op 23/07/2015 14:39:01:
Alternatief: maak een interface waarbij gebruikers een menu'tje in elkaar kunnen klikken (een soort van boomstructuur dus). Per menu geef je aan aan welke placeholder in je template deze gehangen moet worden. En dit bepaalt, mede op grond van je (main)template-design hoe deze menu's er uit komen te zien.
Maar deze worden verder gegenereerd door PHP.
(EDIT: dit deed Joomla (in het verleden) volgens mij ook - deze heeft/had in de backend een onderdeel "Menu's")
Maar deze worden verder gegenereerd door PHP.
(EDIT: dit deed Joomla (in het verleden) volgens mij ook - deze heeft/had in de backend een onderdeel "Menu's")
Jaja, maar 't is geen CMS hah? Je moet de templates zelf via PHP bij elkaar gooien... Maarja, iets zegt me dat niemand hier met een antwoord komt dat ik op dit moment nodig heb XD