Re: [SMARTY-DEV] compilerblock plugins patch

From: Date: Mon, 02 Dec 2002 16:03:59 +0000
Subject: Re: [SMARTY-DEV] compilerblock plugins patch
References: 1 2 3  Groups: php.smarty.dev 
Request: Send a blank email to php-smarty-dev+get-361@lists.php.net to get a copy of this message
forgot to meantion you should clear the $smarty->_block_iterator variable at the end of your smarty_block_iterator function just before the if-construct is closed: unset($smart->_block_iterator); Otherwise you cannot use two iterators in the same template ;-) "André Rabold" <arabold@nero.com> schrieb im Newsbeitrag news:20021202160121.66192.qmail@pb1.pair.com... > You CAN pass values from inside a block into the block function itself by > doing this: > > ---------------------------------------------------- > > {* TEMPLATE *} > {iterator dir="reverse"} > {additem value="xyz"} > {additem value="123"} > {* ... *} > {/iterator} > > ---------------------------------------------------- > > /* ADDITEM Function */ > function smarty_function_additem($params, &$smarty) { > if (!isset($smarty->_block_iterator)) > $smarty->_block_iterator = array(); > $smarty->_block_iterator[] = $params["value"]; > } > > ---------------------------------------------------- > > /* ITERATOR BLOCK FUNCTION */ > function smarty_block_iterator($params, $content, &$smarty) { > if (is_array($smarty->_block_iterator) && count($smarty->_block_iterator) > > 0) { > if ($params["dir"] == "reverse") { > for ($i = count($smarty->_block_iterator); $i > 0; $i--) { > echo $smarty->_block_iterator[$i-1]; > } > } > else { > for ($i = 0; $i < count($smarty->_block_iterator); $i++) { > echo $smarty->_block_iterator[$i]; > } > } > } > > ---------------------------------------------------- > > This should output the array which build using the {additem} function. > > > > "Monte Ohrt" <monte@ispi.net> schrieb im Newsbeitrag > news:1038842016.11742.21.camel@lena.ispi.prv... > > I'm wondering, what if we changed the block functions to use this > > method, does anything break? (besides needing to be recompiled) If not, > > this would keep the API simpler and no new documentation needed, maybe a > > technical note adjustment. > > > > Does your method resolve the issue of evaluating variables in a block > > function at runtime? Problem outlined in this posting: > > > > > > http://marc.theaimsgroup.com/?l=smarty-dev&m=103774868829224&w=2 > > > > Monte > > > > On Mon, 2002-12-02 at 05:47, M Mohr wrote: > > > hello, > > > > > > i patched smarty to support block-function at compile time. the > > > compilerblock-function is searched as compilerblock.[name].php in the > > > plugins_dirs and has precedence before simple (==old) > > > compiler-funcions. > > > > > > alternatively you can register compilerblock-functions using > > > $smarty->register_compilerblock_function(..). > > > > > > the function has to be declared as: > > > > > > function func($tag_args, $start_tag, &$smarty) ... > > > > > > or > > > > > > function smarty_compilerblock_csv($tag_args, $start_tag, &$smarty) ... > > > > > > where tag_args ar the (unparsed) arguments, like in the simple > > > compiler-functions and $start_tag is a boolean indicating wether the > > > function was called at the beginning or the end of the block. > > > > > > i attached the diff against the lates cvs-version. it's not small, but > > > pretty simple, since it is a mainly a rip-off of > > > Smarty_Compiler::_compile_block_tag() > > > > > > i would love to see it applied in Smarty-2.3.2 and i am willing to > > > provide documentation for such plugins and to maintain this patch if > > > necessary. > > > > > > any use for it? > > > any comments? > > > > > > regards > > > messju mohr > > > > > > ______________________________________________________________________ > > > > > > -- > > > Smarty Development Mailing List (http://smarty.php.net/) > > > To unsubscribe, visit: http://www.php.net/unsub.php > > -- > > Monte Ohrt <monte@ispi.net> > > > >

« previous php.smarty.dev (#361) next »