Oznámení

Provoz fóra byl ukončen

smarty syntaxe

před 12 lety

yedlick
Člen | 3

Potreboval bych radu, jak implementovat tagy sablonovaciho systemu Smarty do Texy! Smarty tag zacina { a konci }. Uvnitr by byl typicky zapis Smarty funkce, ktera muze obsahovat mimo znaku a mezer uvozovky, apostrofy a ruzne parametry. Nejjednodussi reseni mi pripada vypnout zpracovani Texy! mezi temito tagy. Pokousel jsem se o to pres registerLinePattern ale bez vysledku.
Resenim je samozrejme i vypnuti syntaxe kolem { a }, ale tagy se vyuzivaji pomerne casto. Byla by nejaka pomoc?

Editoval yedlick (6. 9. 2007 16:38)

před 12 lety

David Grudl
Nette Core | 6806

Vlastův blog: Smarty plugin pro Texy!

před 12 lety

yedlick
Člen | 3

Díky za odpověď, tento příspěvek jsem už dneska viděl, ale to co řeším, je opačný problém. Asi jsem se minule špatně vyjádřil. Potřeboval bych, aby v kódu který generuje Texy! zůstal nezměněný zápis Smarty tagu. Např.:
nějaký text v **Texy!** se {smarty_tag parametr="hodnota"} a další část textu po zpracování v Texy vypadalo takto: nějaký text v <b>Texy!</b> se {smarty_tag parametr="hodnota"} a další část textu a ne takto: nějaký text v <b>Texy!</b> se {smarty_tag parametr=„hodnota“} a další část textu.

Tedy aby část textu od { po } znamenalo vypnutí zpracování Texy!

před 12 lety

David Grudl
Nette Core | 6806

Přes registerLinePattern je to nejvhodnější, viz příklad examples/user syntax. Handler by měl vypadat asi takto:

// add new syntax: *bold*
$texy->registerLinePattern(
    'userInlineHandler',  // callback function or method
    '#\{(.+)\}#U', // regular expression
    'smartySyntax' // any syntax name
);

/**
 * Pattern handler for inline syntaxes
 *
 * @param TexyLineParser
 * @param array   reg-exp matches
 * @return TexyHtml|string
 */
function userInlineHandler($parser, $matches)
{
    list(, $mContent) = $matches; // tohle záleží na podobě regulárního výrazu
    $texy = $parser->getTexy();
    return $texy->protect($mContent, Texy::CONTENT_BLOCK);
}

Jak funguje $texy->protect() je vysvětleno tady. Zkrátka nalezený řetězec ochrání před dalšími modifikacemi.

před 12 lety

yedlick
Člen | 3

Super, díky moc. Už se mi to podařilo rozběhat.