Smarty plugin pro Texy!
3. January 2007
Jistě jste slyšeli o templatovacím systému Smarty a převaděči textu do formátovaného HTML kódu s názvem Texy!. Smarty používám již téměř rok. Texy! jsem začal používat právě teď a potřeboval jsem najít způsob jak ho bezbolestně zaintegrovat do stávajícího webu. Výsledkem je tento jednoduchý Smarty plugin.
Pro tvorbu webů v PHP používám Zend Framework (doplněný o vlastní přetížené třídy a vlastní pluginy). Následující fragment kódu ukazuje vytvoření nové instance Texy! a uložení pointeru do registrů.
require_once('texy-1.1/texy/texy.php');
$texy = new Texy();
Zend::register('texy', $texy);
Následující kód je ze souboru block.texy.php, který musí být umístěn v plugin adresáři Smartů.
/*
* Smarty plugin
* -------------------------------------------------------------
* File: block.texy.php
* Type: block
* Name: texy
* Purpose: convert a block of text from Texy! to HTML
* -------------------------------------------------------------
*/
function smarty_block_texy($params, $content, &$smarty, &$repeat) {
if(!$repeat){
if(Zend::isRegistered('texy')) {
$texy = Zend::registry('texy');
$str = $texy->process($content);
return $str;
} else {
return $content;
}
}
}
A následuje kýžená ukázka použití na přímo ve smarty templatu.
Pokud je splněna podmínka
if(Zend::isRegistered(‚texy‘))
bude blok textu
zpracován pomocí Texy!. V opačném případě bude zobrazen beze
změny.
{texy}{$article->content}{/texy}
Jak vidíte je to velmi jednoduché.
Článek patří do kategorie: PHP
9 Komentářů Přidat komentář
1. Adam Heinrich | 5. January 2007 v 16.57
O Smarty jsem neslyšel, ale začíná se mi líbit:-)
2. d3x | 2. October 2007 v 21.45
Zdarvim, hezký plugin ale něják mi neni jistý tenhle řádek…
Nemá to být náhodou: $smarty->assign(‚texy‘, $texy);
Jinak mi to hlásí chybu. Dík za radu
3. Vlasta | 2. October 2007 v 22.08
Kod je spravne – jen je potreba si uvedomit, ze se v clanku pracuje se Zend Frameworkem. Pokud ZF nepouzivate, tak neni duvod Zend::register pouzivat (jedna se objektovou nahrazku globalnich promennych)
4. d3x | 2. October 2007 v 22.22
Jo díky za vysvětlení a nevíš jak by vypadal kód bez použití ZF – nepoužívám:( S php nejsem tak daleko ale rozumim.)
5. Vlasta | 2. October 2007 v 22.44
[4] Pak bych tedy nastavil instanci texy do Smarty:
$smarty->assign(‚texy‘, $texy);
a v pluginu bych místo řádky, která pracuje se Zendem uvedl:
$texy = $smarty->get_template_vars(‚texy‘);
6. d3x | 3. October 2007 v 0.14
Díky
7. d3x | 3. October 2007 v 0.31
Ještě maličkost ---> co by mělo být v podmínce místo: if(Zend::isRegistered(‚texy‘))
8. Vlasta | 3. October 2007 v 7.18
[7]
$texy = $smarty->get_template_vars(‚texy‘);
if($texy != null) {
…
}
9. d3x | 3. October 2007 v 16.44
Kdo chce návod bez Zend Framework a plugins tak tady to je:
1.
// načtení aplikace texy
require_once (INSTALL_PATH.„smarty/texy2/texy/texy.php“);
$texy = new Texy();
// načtení souboru „syntax.texy“ obsahující texy text
$txy = file_get_contents(„syntax.texy“);
$html = $texy->process($txy);
$smarty->assign(‚texy‘,$html);
//
?>
2. do šablony potom stačí vložit {$texy}
3. toť vše :)
Přidat komentář
Povolené HTML značky:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <code> <em> <i> <strike> <strong>
Odkazovat na tento článek | Přihlásit se k odběru těchto komentářů přes RSS Feed