+ -
当前位置:首页 → 问答吧 → smarty 插件里 smarty_block函数怎么用?

smarty 插件里 smarty_block函数怎么用?

时间:2010-01-14

来源:互联网

smarty 插件里 smarty_block函数怎么用?

作者: 九剑   发布时间: 2010-01-14

要能用smarty块函数插件,有两种方式
1.写个php文件放在smarty里面plugins目录下,做为插件;
2.使用这个函数$smarty->register_block("translates", "do_translation");
第一种方式,文件php代码:
<?PHP

/*
* Smarty plugin
* -------------------------------------------------------------
* FileName: block.translate.php
* Type: block
* Name: translat
* -------------------------------------------------------------
*/
function smarty_block_translate($params, $content, & $smarty, & $repeat) {
    if (isset ($content)) {
        print_r($params);
        var_dump($content);
    }
}
?>
第二种方式代码:
$smarty->register_block("translates", "do_translation");
function do_translation($params, $content, & $smarty, & $repeat) {
    if (isset ($content)) {
        print_r($params);
        var_dump($content);
        }
    }
模版页面调用代码:
<{translate type="plugin" info="使用插件的方式调用块函数"}>
插件块函数的内容
<{/translate}>
<{translates type="register_block" info="使用register_block()函数的方式调用块函数"}>
register_block块函数的内容
<{/translates}>
不懂再详谈

作者: adm889486   发布时间: 2010-01-15

太感谢了,快函数里可不可以用$smarty->assign()

作者: 九剑   发布时间: 2010-01-15

function smarty_block_translate($params, $content, & $smarty, & $repeat) ,里的参数$params, $content, & $smarty, & $repeat都什么作用?谢谢

作者: 九剑   发布时间: 2010-01-15

$smarty->assign() ;是用于smarty调用模版的函数,块函数只能用模版页面中....
$params是一个数组, 里面存放的是你传给块函数的变量名和变量的值,比如:
<{translate type="plugin" info="使用插件的方式调用块函数"}>
传入的参数就有type和info 使用$params['type']就可以得到相应的值
$content 是你写在块函数之间的值
如:<{translate type="plugin" info="使用插件的方式调用块函数"}>
插件块函数的内容
<{/translate}>
$content 值为"插件块函数的内容"
& $smarty 就是对$smarty变量的引用;你可以去看看smarty里面所有的插件函数,都有这个参数,就是这样引用的
参数 &$repeat 通过参考引用传递给函数执行过程并为其提供一个可能值来控制显示块多少遍。具体也不是很清楚

作者: adm889486   发布时间: 2010-01-15

大哥我以后怎么联系你?太谢谢了

作者: 九剑   发布时间: 2010-01-15

QQ:137632045

作者: adm889486   发布时间: 2010-01-15

/*
* Smarty plugin
* -------------------------------------------------------------
* FileName: block.tmar.php
* Type: block
* Name: translat
* -------------------------------------------------------------
*/

<?php
function smarty_block_mar($peram,$content,&$marty,&$repeat){
extract($peram);
if(!isset($font)){
$font=13;
}
if(!isset($color))
    $color="red";
//$str.="<span style='font-size:$font;color:$color'>";
//$content='效果发挥吃';
//$str=$content;
//$str.="</span>";
//$str.="<marquee>";
//$str.=$content;
//$str.="</marquee>";
//return $str;
mysql_connect("localhost","root","123456");
mysql_select_db("li");
mysql_query('set names gbk');
if(!isset($num)){
$num=10;
}
if(!isset($table)){
$table='liu';
}
$sql = "select * from $table limit 0,$num";
$result = mysql_query($sql);
while($row=mysql_fetch_assoc($result)){
$n[]=$row;
}
//$content='效果发挥吃';
$content=$n;
$str=$content;
return $str;
}
?>

作者: 九剑   发布时间: 2010-01-15

<div style="color:blue">
<ul>
{@ mar num=5 table=hui @}
{@ section name=i loop=$str @}
<li>{@ $str.liu_title @}</li>
{@ /section @}
{@ /mar @}
</ul>
</div>

作者: 九剑   发布时间: 2010-01-15

怎么输出一个array?要怎么才能在前台显示出来?

作者: 九剑   发布时间: 2010-01-15

我加你了

作者: 九剑   发布时间: 2010-01-15