Smarty Template Engine 32. díl – Konfigurační soubory III.
V tomto díle si ukážeme zbylé možnosti jak kodérů, tak samotných PHP programátorů, při práci s konfiguračními soubory.
Jsem programátor
Smarty v sobě skrývá spoustu pokročilých možností nastavení. Nastavují se stejně jako předešlé direktivy nejlépe v jakémsi hlavičkovém souboru, z kterého čerpá celá naše webová prezentace. V našem případě jde tedy o umístění v souboru: hlavicka.php.Právě konfiguračními soubory se zabývají tyto parametry:
$config_dir
Popisovali jsme si již v předešlém díle. Slouží k nastavení výchozího adresáře pro umístění konfiguračních souborů.
$config_overwrite
nastavení: true/false, defaultně: true
V případě defaultního nastavení, tedy na true, nastavuje přepisování proměnných čerpaných z konfiguračního souboru tak, jak jsme si ukázali v minulém příkladě. Tedy, stejně pojmenovaná proměnná bude přepsána proměnnou stejného názvu, ale přidanou níže v kódu. Či, pokud je každá z nich umístěna v jiné sekci, uzavřené v konfiguračním souboru v hranatých závorkách, přednost bude mít ta, jejíž sekce je v šabloně volána níže.
Nastavení na false však umožňuje získat nečekanou možnost v případě, že proměnnou jakoby přetížíme v rámci jedné sekce. Můžeme pak takovouto posloupnost proměnných vypisovat jako pole prvků jak příkazy section, foreach, tak funkcí cycle.
V prvním příkladě si ukážeme chování při nastavení na defaultní hodnotu: TRUE
muj_config.conf
[Colours]
#barvicky
fC = #FF9900
fC = #00FF99
fC = #9900FF
Při volání v šabloně se dočkáme jediného výsledku, tedy načtení hodnoty poslední proměnné:
index.tpl
{config_load file='muj_config.conf' section=Colours}
{include file='./hlavicka.tpl' hlavicka='Smarty Template Engine'}
<p>
<span style="color:{#fC#};">barva:{#fC#}</span>
</p>
{include file='./paticka.tpl'}
V případě, že nastavíme tuto proměnnou na FALSE, však můžeme proměnnou použit jako pole následujícím způsobem:
hlavicka.php
$smarty->config_overwrite = 'false';
muj_config.conf
[Colours]
#barvicky
fC = #FF9900
fC = #00FF99
fC = #9900FF
index.php
<?php
require_once("./hlavicka.php");
$a[0] = '0';
$a[1] = '1';
$a[2] = '2';
$smarty->assign('ukazka', $a);
$smarty->display('index.tpl');
?>
index.tpl
{config_load file='muj_config.conf' section=Colours}
{include file='./hlavicka.tpl' hlavicka='Smarty Template Engine'}
<p>
{section name=a loop=$ukazka}
<span style="color:{cycle values=#fC#};">{$ukazka[a]}<br/>
{/section}
</p>
{include file='./paticka.tpl'}
Tento příklad by nám tedy měl vypsat každý z řádků jinou barvou. Rád bych upozornil, že pro zdárnou změnu je také třeba znovu uložit konfigurační soubor, ten se totiž jinak bude načítat z cache paměti Smarty a žádné změny v zobraní bychom se nedočkali.
Další možností jak editovat takovou proměnnou je změna přímo v konfiguračním souboru Config_File.class.php, konkrétně pak parametr funkce „Config_File“ → overwrite;
K takovéto editaci bych ovšem nepřistupoval, protože pokud byste např. Přecházeli na novou verzi, či jakkoliv jinak upravovali Smarty soubory, těžko zpětně dohledáte změnu.