Pagina hits: 3095 [Vandaag: 2] | Momenteel: 6 gebruikers online

WebsiteBaker - Tips

Vanuit de website een ander template kiezen?

Templates / CSS
WebsiteBaker - Tips >> Templates / CSS


Vooral voor demonstratie websites is het prettig om de complete site met behulp van een ander template te laten zien.

Met een simpele aanpassing is dit ook in Website Baker te realiseren.

De index.php pagina in de root van een WB website haalt onder andere de benodigde template op uit de settings van de huidige pagina.
Om dit in de diverse modules beschikbaar te hebben wordt via een "define ('TEMPLATE')" een statische variabele hiervoor gemaakt.
Als we nu zorgen dat we voordat de define wordt uitgevoerd we er zelf één zetten, zal die template worden gebruikt, ongeacht wat er in WB of de huidige pagina staat opgegeven.

In de index.php wordt de functie $wb->get_page_details(); aangeroepen. In die functie wordt ook gekeken welke template gebruikt moet worden.
Voor deze regel moeten we dus een aanpassing maken die de TEMPLATE variabele definieert.

Om te vertellen welke template gebruikt moet worden sturen we de directory naam mee in de url in de vorm: wwww.mijnserver.nl/pages/home.php?template=allcss.
Als eerste wordt bekeken of de template directory wel bestaat. Als hij bestaat kunnen we die naam in de TEMPLATE variabele definieren.
Om te zorgen dat bij de volgende pagina opvraging de nieuwe template blijft bestaan slaan we hem op in een session variabele.

De volgende code neem je op in de index.php uit de root van je website, vlak voor de regel $wb->get_page_details();

// Sticky Template switcher
if ($_GET['template']!="") {  // get the template to display from URL
   if(file_exists(WB_PATH.'/templates/'.$_GET['template'].'/index.php')) {
      define('TEMPLATE',$_GET['template']);
      $_SESSION['TEMPLATE']=TEMPLATE;
    }
} else {   // else get the template to display from Session Variable
    if(isset($_SESSION['TEMPLATE']) AND $_SESSION['TEMPLATE'] != '')
        define('TEMPLATE',$_SESSION['TEMPLATE']);
}

Zonder een parameter gebruikt de website gewoon de standaard aangegeven template.
Zodra je ?template=round achter een willekeurige url te zet zal worden overgeschakeld naar die template.

Een mooi drop-down lijstje of een verzameling linkjes naar de verschillende templates maken het vervolgens helemaal compleet.



<< Naar het overzicht

Commentaren

Robbert 27-09-2010 - 08:30
Deze tip viel mij op en vind het heel leuk. Maar ergens is het ook nog een beetje beperkt.
Zo mist een functionaliteit om een pagina 1 keer met een andere template in te laden. Ook als pagina's andere templates hebben word hier niet meer op gereageerd. En zou het praktisch zijn om het systeem weer te resetten.

Dus als oplossing voor die punten heb ik het volgende als uitbreiding gemaakt:

// Template 1 malig veranderen.
if ($_GET['get_template']!="") {
if(file_exists(WB_PATH.'/templates/'.$_GET['get_template'].'/index.php')) {
define('TEMPLATE',$_GET['get_template']);
}
}

// Template resetten.
if ($_GET['del_template']!="") {
$_GET['set_template'] = '';
$_SESSION['TEMPLATE'] = '';
}

// Template veranderen.
if ($_GET['set_template']!="") {
if(file_exists(WB_PATH.'/templates/'.$_GET['set_template'].'/index.php')) {
define('TEMPLATE',$_GET['set_template']);
$_SESSION['TEMPLATE']=TEMPLATE;
}
} else {
if(isset($_SESSION['TEMPLATE']) AND $_SESSION['TEMPLATE'] != '')
define('TEMPLATE',$_SESSION['TEMPLATE']);
}



Het werkt nu als volgt:
- 1 keer de template veranderen (handig voor iframe wrappers waarbij je alleen de content bv nodig hebt):
index.php?get_template=template_naam
- Template veranderen:
index.php?set_template=template_naam
- Template resetten:
index.php?del_template=true


Groetjes, Robbert@vpri.nl

Time: 27-09-2010 09:30:23

Commentaar toevoegen


Onderwerpen


Meest gelezen