觉得自己对模板引擎有了解的大大来看 ..?

字体: | 打印

情境是这样的 ... 非常简单 ...

QUOTE:

判断 Date("G") ...

根据不同的结果显示 早上好 上午好 下午好 晚上好 ...

整个网页只需要这三个字儿 ... 其他都不用管 ...
这个功能大家是怎么实现的呢 ...?

是这样 ..?

QUOTE:

php side
$array = ( '早上好', '上午好', '下午好', '晚上好' );
if ( date('G') < 9 ) $tmp = 1;
elseif  // something like this

$this->template->assign( 'greeting', $array[ $tmp ] );

html side
{greeting}
或者是这样 ...?

QUOTE:

php side
if ( date('G') < 9 ) $tmp = 1;
elseif  // something like this

$this->template->choose_block( 'greeting', $array[ $tmp ] );

html side
{greeting:早上好,上午好,下午好,晚上好}
又或者是这样 ..?

QUOTE:

php side
$tmp = date('G');

html side
{if $tmp lt 9 }
早上好
{elseif .... }
.............
{/if}
现在您在实现这个功能的时候用的是什么方式呢 ..?

或者您有什么更好的方式 ...?

欢迎发表意见 ...

我也来说两句 查看全部评论 相关评论

  • terry39 (2008-6-30 21:22:54)

    给 JS 判断了,能减轻服务器负担,何乐而不为呢?
  • fyland (2008-6-30 21:45:09)

    QUOTE:

    原帖由 terry39 于 2008-6-30 21:22 发表
    给 JS 判断了,能减轻服务器负担,何乐而不为呢?
  • 七月十五 (2008-6-30 22:03:15)

    原则上不能太依赖客户端,客户端永远是不可信任的
  • terry39 (2008-6-30 22:04:50)

    给JS一个值,让JS判断显示 ,不是采集JS的值来显示 ...

    如果无所谓服务端的运算量,写一个 函数也不增加什么工作量
  • 七月十五 (2008-6-30 22:07:30)

    不建议在模板端用很多的if...else...等流程控制,相当于在V里写C。
  • 七月十五 (2008-6-30 22:08:45)

    QUOTE:

    原帖由 terry39 于 2008-6-30 22:04 发表
    给JS一个值,让JS判断显示 ,不是采集JS的值来显示 ...

    如果无所谓服务端的运算量,写一个 函数也不增加什么工作量
    如果在手机等客户端浏览器上用,JS估计不太能起作用。所以不能太依赖JS。现在应该考虑程序的健壮性。
  • terry39 (2008-6-30 22:09:59)

    可以换个思维么?

    模板端里使用 if ... else 等判断,只是显示逻辑,和业务逻辑无关
  • terry39 (2008-6-30 22:11:50)

    QUOTE:

    原帖由 七月十五 于 2008-6-30 22:08 发表

    如果在手机等客户端浏览器上用,JS估计不太能起作用。所以不能太依赖JS。现在应该考虑程序的健壮性。
    你说的没错

    现在终端设备已经不仅仅只是计算机了

    个人便携终端的广泛应用是必然趋势 ...
  • 七月十五 (2008-6-30 22:16:16)

  • 七月十五 (2008-6-30 22:18:41)

    如果你不嫌麻烦,把'早上好','下午好','晚上好' 改成 $array[0],$array[1],$array[2]
  • 飘渺晴霜 (2008-6-30 22:35:00)

  • 我要读书网 (2008-6-30 23:18:02)

    QUOTE:

    原帖由 七月十五 于 2008-6-30 22:07 发表
    不建议在模板端用很多的if...else...等流程控制,相当于在V里写C。
    没那么死板.
    tpl编译之后才算是V.
    举个很简单的例子, 某用户的blog可以绑定自己的国际域名名单默认的是网站提供的二级域名,.
    模块1 算出用户是否注册国际域名,是否有资格使用,然后得出结果后 assign 1
    模块2 算出用户网站 提供的二级域名assign 2
    模块3 算出用户是被禁止登陆或者浏览 assign 3
    直接在模版里 if(1)elseif(2)else (3)
    是不是v 和c都很清晰?新上手维护人员是不是很容易读懂?
    这样避免了再使用一模块来判断 和assign,
    这样可以做到系统可配置话,modules写好了,只需要修改配置文件来更新系统.而不必要频繁去改c,
    就刚才那例子再深入吧,再加判断条件,我只需要增加modules而已,c基本不变.对应修改模版一下。工作量非常小.
  • fhjr999 (2008-6-30 23:19:55)

    我本身不喜欢C/S模式,虽然可以减轻服务器的负担,但是却会降低跟搜索引擎的亲和度。

    对于这个功能,我觉得不应该交给一个标签来实现,因为适用性不强。

    最好的方式,我感觉应该使用模板引擎提供的逻辑控制来进行输出,这样可以更加灵活,你可以显示成不同的颜色,可以为每个配上一个图片等等。

    因为这个是只需要做一次的,因此这样并不会带来什么麻烦。

    如果做成模板引擎的插件形式也可以。
  • fhjr999 (2008-6-30 23:26:10)

    QUOTE:

    原帖由 七月十五 于 2008-6-30 22:07 发表
    不建议在模板端用很多的if...else...等流程控制,相当于在V里写C。
    还是涉及到一个概念的问题,什么才是V,什么才是C
    我认为,C与M的作用仅仅是用来取出数据,至于如何格式化输出,则全部是V的工作,当然也不是绝对的,你也许需要在M或者C中组装出一定结构,方便处理的数据(仅仅是组装,并不是输出格式化),这些就不应该交给V来做了。
    格式化部分也是属于显示的,不是吗??
    将格式化数据部分混入C或者M,才是真正的概念不清晰。
  • terry39 (2008-6-30 23:48:31)

    QUOTE:

    原帖由 fhjr999 于 2008-6-30 23:26 发表


    还是涉及到一个概念的问题,什么才是V,什么才是C
    我认为,C与M的作用仅仅是用来取出数据,至于如何格式化输出,则全部是V的工作,当然也不是绝对的,你也许需要在M或者C中组装出一定结构,方便处理的数据(仅仅是 ...
    你说的应该是 数据结构

    编程 = 算法 + 数据结构
  • zshtom (2008-7-01 00:39:38)

    如果是smarty 那么可以写一个插件 完成这个功能 插件是php 的
    如果是dz类型的模板 直接一个php函数解决
  • programmerhuang (2008-7-01 07:44:44)

    我觉得楼主这个应该是属于View的.
    但最好不要在View里做太多逻辑的过程.
    支持像上面说的, 调用一个函数, 或者在smarty中加入一个modifier或标签, 把时间参数传给他们
    也可以说有点像你的: {greeting:早上好,上午好,下午好,晚上好}, 但要把判断放到这个函数/modifier/标签中

    像下面这样, 不知道有没有写错Smarty不是非常熟, 呵呵.

    QUOTE:

    PHP:
    $this->template->assign("time", date('G'));
    $this->template->register_function("greeting", "greetingByTime");
    function greetingByTime($params)
    {
    //这里面判断
    }

    html side:
    {greeting time=$time}
    这样的话, 把注册过程提取到公共的让人调用, 以后其它地方也可以方便的调用, 只要传个时间就可以了
    代码跟其它的也差不了多少
  • 七月十五 (2008-7-01 10:04:30)

    如此理解编程,不客气的尚在幼儿园阶段。
    看到很多人对这个议题的愤怒,我想说的是:做程序还是谦和一点的好。
    把问题想得透一点,想得深一点,看看别人的驳论,回头再来审视自己想法,会有所收益。
    愤怒回带来多少的收益呢?能比心平气和的审视自己多一些么?不得而知。
  • terry39 (2008-7-01 10:21:35)

    回复楼上,你可以质疑我,请不要质疑 “程序  = 算法 + 数据结构”,提出这句话的人,是图灵奖获得者
  • fyland (2008-7-01 10:26:05)

    QUOTE:

    原帖由 terry39 于 2008-7-1 10:21 发表
    回复楼上,你可以质疑我,请不要质疑 “程序  = 算法 + 数据结构”,提出这句话的人,是图灵奖获得者
    你在16楼的说法是“编程 = 算法 + 数据结构”,而不是“程序  = 算法 + 数据结构”,所以七月十五的质疑是有道理的,至少我很赞同。因为我认为 编程 > 程序。