[Smarty] Variabelen in class toekennen en in alle .tpl files gebruiken

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Sam Clauw

Sam Clauw

31/07/2013 22:45:32
Quote Anchor link
Ik ben nog niet zo lang geleden met Smarty begonnen. Vroeger had ik er al even mee gewerkt als designer, maar nu wil ik er als ontwikkelaar volledig mee weg zijn. Voor m'n huidige site heb ik ondertussen de mappenstructuur veranderd zodat Smarty er correct in geïntegreerd kan worden:

application
----- classes
---------- website.class.php
----- includes
---------- config.inc.php
----- libs
---------- smarty
--------------- ...
----- public
---------- cache
---------- configs
---------- templates
--------------- foot.tpl
--------------- head.tpl
--------------- home.tpl
--------------- contact.tpl
--------------- ...
---------- templates_c
httpdocs
----- css
----- images
----- js
----- index.php
----- home.php
----- contact.php
----- ...

Bij wijze van testen heb ik al even een index.php bestand aangemaakt die de template file "index.tpl" van de nodige variabelen kan voorzien én die de head.tpl en foot.tpl files include:

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

include_once('includes/site.inc.php');
include_once('includes/config.inc.php');

require(SMARTY_DIR . 'Smarty.class.php');

$smarty = new Smarty();

$smarty->setTemplateDir(BASIC_PATH . '/application/public/templates/');
$smarty->setCompileDir(BASIC_PATH . '/application/public/templates_c/');
$smarty->setConfigDir(BASIC_PATH . '/application/public/configs/');
$smarty->setCacheDir(BASIC_PATH . '/application/public/cache/');

$smarty->display('index.tpl');

?>


Het is nu mijn bedoeling om in head.tpl een iteratie te voorzien die alle menu variabelen (knoppen en links) kan outputten. Ik denk niet dat het de bedoeling is om in de httpdocs map een head.php bestand aan te maken, en daarmee heb ik dus een class "website.class.php" aangemaakt waarin ik de smarty variabelen zou kunnen declareren.

Dus dat moet iets in de aard van het volgende worden:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<?php

$smarty
->assign('menu',
    array(    'home' => array(    'name' => 'Home',
                                'url' => '/welkom-op-de-website'),
            'contact' => array(    'name' => 'Contact',
                                'url' => '/contacteer-ons')
    )
);


?>


Nu vraag ik me dan toch af of ik via deze manier goed bezig ben en of dit voor een grote website met veel pagina's wel kan lukken? Tips of verbeteringen zijn dus mee dan welkom, een kritische kijk mag ;)
 
PHP hulp

PHP hulp

24/12/2024 13:28:36
 
Reshad F

Reshad F

31/07/2013 23:26:47
Quote Anchor link
Of je kan dit in de database stoppen en door alle waardes heen gaan.. of in een ini bestandje?
 
Sam Clauw

Sam Clauw

31/07/2013 23:30:33
Quote Anchor link
De bedoeling is inderdaad om het menu vanuit de database op te halen, ik wilde met die array enkel aantonen dat het volledige menu in de class wordt aangemaakt ;)
 



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.