{if $highlight_name}
Welcome, <font color="{#fontColor#}">{$name}!</font>
{else}
Welcome, {$name}!
{/if}
这样可以不?

解决方案 »

  1.   

    不是,我要做成函数的形式,不需要这么的代码的,而且你这样也不可能根据参数调用不同的内容,比如$list(id),当代入$list(1)显示1分类的内容,当代入$list(2)时显示2分类的内容
      

  2.   

    你这个明显应该是在php中完成的东西,不是是在模版中完成的吧。。
      

  3.   

    我知道,函数定义是在php中完成,但在模版中怎么调用啊?
      

  4.   

    $list[id]不同id的数据要显示的样式是一定的吧你就在php中assign不同步值就可以了阿,还要在模版中去干什么?本来模版就是说页面的通用性。
      

  5.   

    要让用户决定显示什么内容,让用户编辑php文件不太现实吧?看了phpcms之类的都是写成函数的形式
      

  6.   

    assign的时候指定为函数不行吗?
      

  7.   

    还是有问题,smarry的机制是赋值给模版显示的,并不能读取模版中函数的参数来执行后再现示,这样的话就还得改php文件,而不能通赤修改模版中某些函数的参数来达到效果
      

  8.   

    xuzuning(唠叨) 能否举例?刚学smarty不久
      

  9.   

    对不起,我不用smartysmarty手册中完整的例子,你可以看看
      

  10.   

    程序
    $tpl=new smarty;
    function test($param,$smarty)
    {
      echo $param['id'];
    }
    $tpl->register_function('test','test');
    ----------------
    模板
    {{test id=1}}
      

  11.   

    写错了.上面的echo $param['id']应该为return $param['id'];
      

  12.   

    function smarty_function_eightball($params, &$smarty)
    {
     $answers = array('Yes',
     'No',
     'No way',
     'Outlook not so good',
     'Ask again soon',
     'Maybe in your reality'); $result = array_rand($answers);
     return $answers[$result];
    }
    ?>
     
     
    which can be used in the template as: 在模板中调用方法如下:Question: Will we ever have time travel?
    Answer: {eightball}.
     
    上面这个例子怎么通不过啊?它跟register_function有何不同?
      

  13.   

    请不要问这么奇怪的问题。你又能告诉我下面这两句sql有何不同?为何第二句通不过?
    select * from table where id=5wo yao * cong table dang id=5
      

  14.   

    如果使用
    <?php
    function smarty_function_eightball($params, &$smarty)
    {
    }
    ?>
    的写法。而且不愿意使用register_function的话。必须要将这个函数单独存成一个文件
    ,文件名必须用function.eightball.php并放在smarty目录下的plugnins目录下。
      

  15.   

    $tpl=new smarty;
    function test($pararm,$smarty)
    {
     extract $pararm;
     $a=array(1,1,2,4,4);
      return $a
    }
    $tpl->register_function('test','test');
    ----------------
    模板
    函数返回是一数组,模版中怎么显示它呢?
      

  16.   

    如果你用section等循环来做的话
    可以用if (smarty.section.smarty_key.index mod 2 == 0)来判断
    对于不同行,用不同的颜色
      

  17.   

    我现在要显示正常的数据啊,就像
    section name=art loop=$a
    $a[art]
    /section
    这样子的
    但上面不行啊,怎么办?
      

  18.   

    不好,那样子函数里就包含了HTML代码,格式就被限定死了
      

  19.   

    我现在要显示正常的数据啊,就像
    section name=art loop=$a
    $a[art]
    /section
    这样子的
    但上面不行啊,怎么办?
    _____________________________
    就是这样的写法啊?
    有什么问题吗?
      

  20.   

    TombFigure(美丽人生) :你有没有测试过的?loop=变量,但我现在要传递的是一个带参数的自定义函数test,
    $tpl=new smarty;
    function test($pararm,$smarty)
    {
     extract $pararm;
     $a=array(1,1,2,4,4);
      return $a
    }
    $tpl->register_function('test','test');
      

  21.   

    呵呵 那我就不明白了 那你为什么还有用register_function来做?
    为什么不用assign 把函数处理的结果传过去?手册上是这样说section的:
    属性 类型 描述 
    loop [$variable_name] 决定循环次数的变量名称
      

  22.   

    差异很大的话,不妨在php里面调用不同的smarty模板,这样调试会简单很多
      

  23.   

    模板中:
    {insert name="functionName" params1 = P1 params2 = P2 }
    解释一下
    getBanner:函数名
    params1:参数一,等号右边是在代码里assign出来的
    params2:同上。代码中:
    function insert_functionName($p1,$p2)
    {
        echo $p1.$p2;
    }
    注意函数名
      

  24.   

    抱歉上面的帖子有一处错误,现修改了一下。模板中:
    {insert name="functionName" params1 = P1 params2 = P2 }
    解释一下
    functionName:函数名
    params1:参数一,等号右边是在代码里assign出来的
    params2:同上。代码中:
    function insert_functionName($p1,$p2)
    {
        echo $p1.$p2;
    }
    注意函数名
      

  25.   

    莫非你要在模板里面写一个函数然后调用?这我还真不会。insert是smarty里面的内建函数,就是用来在模板里调用,根据传递的参数输出不同内容的,并且不会被缓存,多用于动态调用广告图片之类的。我觉得我答得挺对题的啊:-)