Oznámení
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
- 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.