查询条件能写在模板里吗?

#1 phpcaicai

比方说 能在模板里控制,调出指定栏目数据,和条数,想让美工自己去调出数据

目的是要这样写, 比如在product分类里取5条数据

<{foreach rows=5 category=product order=time DESC}>
  • xxoo

  • <{/foreach}>

    2010-05-16 21:14:38

    #2 harrie

    http://www.smarty.net/manual/en/language.function.section.php

    你可以看以下section里边的max

    {section name=foo start=10 loop=20 step=2}
      {$smarty.section.foo.index}
    {/section}


    {section name=bar loop=21 max=6 step=-2}
      {$smarty.section.bar.index}
    {/section}

    但是和控制查询不一样

    2010-05-16 21:28:04

    #3 phpcaicai

    这些是smarty内置的 我怎么自定义 模板标签呢?
    而且我要打破常规,不在程序里查询好结果模板输出
    而是更具 模板标签给出的条件进行查新,这种做法可实现吗?

    比如我可以模板里任意查询指定的分类

    2010-05-16 21:31:19

    #4 jake

    这里分开来看:
    1. 在模板内限制记录数量,这样其实是限制“显示”数量,也就是程序提供100条记录,但是模板内只显示10条。
    2. 在模板内进行查询,这实现起来就很困难了,尤其smarty本身的理念,是希望程序和模板分离,查询这些是程序的事情,模板仅负责“显示”的逻辑。而且这个分离,是团队开发的必然,也很少会有人反其道而行。
    当然,模板引擎也是PHP实现的,所以PHP实现的东西,模板引擎也可以实现,只是如果希望在程序/模板分离的理念下,将模板引擎做成能够做程序的事情的话,难度可不是一般的高,几乎和重头写一套PHP框架差不多了。我曾经见过一款基于smarty的PHP框架,具体不是很清楚,楼主可以搜索一下,研究研究。

    2010-05-16 22:38:49

    #5 harrie

    当然也是可以实现的,不过我并不赞同这样做

    $this->register_modifier("stripslashes","stripslashes");
    这样子在模版中就可以使用
    {$foo|stripslashes} 来实现php的stripslashes函数了。
    这个stripslashes可以是任何函数并且可以带有参数。
    如果有兴趣,可以试试。。。

    2010-05-17 16:12:36

    #6 azwl

    模板我认为就是用来显示的。把查询条件加入模板,好像就违背了MVC。

    2010-05-17 17:31:05

    #7 azwl

    模板我认为就是用来显示的。把查询条件加入模板,好像就违背了MVC。

    2010-05-17 17:31:12