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::isRe­gistered(‚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…

    • Zend::register(‚te­xy‘, $texy);

    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::isRe­gistered(‚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/texy­2/texy/texy.php“);

    $texy = new Texy();
    // načtení souboru „syntax.texy“ obsahující texy text
    $txy = file_get_conten­ts(„syntax.te­xy“);
    $html = $texy->process($txy);
    $smarty->assign(‚texy­‘,$html);
    //
    ?>

    2. do šablony potom stačí vložit {$texy}
    3. toť vše :)

Přidat komentář

Povinné

Povinné, skryté

Security Image Povinné
Opište text z obrázku

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


Kalendář

December 2024
M T W T F S S
« Jan    
 1
2345678
9101112131415
16171819202122
23242526272829
3031  

Poslední články

Locations of visitors to this page