Bij het gebruik van de Frontpage-module heb ik gemerkt dat bij de Full html code-modus de links naar de styles, scripts, favicon, ... opnieuw herlegd moeten worden, omdat je in feite met een volledig blanco php-pagina begint (wat ook de bedoeling is).
Het viel me op dat deze zaken die gedefineerd werden in de info-file nu anders moeten worden opgeroepen dan wat ik oorspronkelijk gebruikt had:
<?php print $styles; ?> wordt bij de Frontpage-editor bv <?php print drupal_get_css();?>. (Bron)
Nu vroeg ik me af wat de beste praktijk is om dergelijke zaken op te roepen. Ik heb nl. gemerkt in de page.tpl.php dat beide methodes werken, en zou wat consistentie willen aanhouden tijdens het opbouwen van een website.
Waarom bestaan er twee methodes (zal ongetwijfeld een technisch goeie reden hebben) en welke is het meest aangewezen?
Auteur:
knalstaaf
Door hansrossel op 29 juli, 2010 - 16:12
Het is de nobele bedoeling om Drupal themers niet te veel af te schrikken met php code en daarom is het sterk aan te raden (en dus best practice) in tpl.php files enkel variabelen te printen met php via de eenvoudige if $a print $a endif structuur.
Alle logica en functies dienen bij voorkeur berekend te worden in template.php of een module en hun resultaat vastgelegd in een variabele die dan eenvoudig kan geprint worden in de tpl.php file.
Een functie rechtstreeks oproepen in een tpl.php file zoals <?php print drupal_get_css();?>, zal werken maar is niet zo goed. Voor je het weet staan je tpl.php bestanden dan vol met php berekeningen en (absoluut verboden daar) sql queries.
Theme variabelen zoals $styles zijn daarom ook enkel bruikbaar binnen de tpl.php bestanden waarvoor ze voorzien werden. Bekijk eens lijn 1872 in includes/theme.inc en dan zul je zien dat daar de variabele $styles binnen de preprocess functie voor page.tpl.php gedefinieerd wordt.
Bedankt! Ik zal hier rekening mee houden. Ik hou nl. niet zo van keuzes als het op programmeren aankomt, zeker wat Drupal betreft. Er is altijd een goeie en een slechte keuze, wat hier nogmaals bewezen wordt.
Ik ben trouwens van de Frontpage-module afgestapt. Nu werk ik met een extra page-front.tpl.php, zodat ik meer bewegingsvrijheid heb (of toch zo ervaar) wat themen betreft (en dus bovenstaande variabelen correct kan gebruiken). Loopt prima dusver.
Het is de nobele bedoeling om Drupal themers niet te veel af te schrikken met php code en daarom is het sterk aan te raden (en dus best practice) in tpl.php files enkel variabelen te printen met php via de eenvoudige if $a print $a endif structuur.
Alle logica en functies dienen bij voorkeur berekend te worden in template.php of een module en hun resultaat vastgelegd in een variabele die dan eenvoudig kan geprint worden in de tpl.php file.
Bijvoorbeeld om in template.php variabelen te maken voor page.tpl.php gebruik je http://api.drupal.org/api/function/template_preprocess_page/6.
Een functie rechtstreeks oproepen in een tpl.php file zoals <?php print drupal_get_css();?>, zal werken maar is niet zo goed. Voor je het weet staan je tpl.php bestanden dan vol met php berekeningen en (absoluut verboden daar) sql queries.
Theme variabelen zoals $styles zijn daarom ook enkel bruikbaar binnen de tpl.php bestanden waarvoor ze voorzien werden. Bekijk eens lijn 1872 in includes/theme.inc en dan zul je zien dat daar de variabele $styles binnen de preprocess functie voor page.tpl.php gedefinieerd wordt.
Hans
KOBA
Bedankt! Ik zal hier rekening mee houden. Ik hou nl. niet zo van keuzes als het op programmeren aankomt, zeker wat Drupal betreft. Er is altijd een goeie en een slechte keuze, wat hier nogmaals bewezen wordt.
Ik ben trouwens van de Frontpage-module afgestapt. Nu werk ik met een extra page-front.tpl.php, zodat ik meer bewegingsvrijheid heb (of toch zo ervaar) wat themen betreft (en dus bovenstaande variabelen correct kan gebruiken). Loopt prima dusver.