rt发现模板中的所有条件,循环之类的语句都要加<!-- {if ()} -->这样子的,为什么不可以直接{if ()}呢?还有,#BeginLibraryItem表示什么意思?要包含文件不是应该用include或require之类的吗?

解决方案 »

  1.   

    你指的是模板?<!-- -->是为了模板当html文件打开时if这样的php语句注释掉,这样不会影响模板的样子。这个是为了调试模板用的。#BeginLibraryItem是模块开始,ecshop是把网页模块分成了一个个小块,这样使用时就更灵活,不同的网页需要什么模块就把相应的模块加进来。#BeginLibraryItem而不是include是因为ecshop有自己一套模板解释程序,他会根据这样的标识进行解释。
      

  2.   

    应该是这个 includes\cls_template.php
      

  3.   

    smarty_prefilter_preCompile 这个方法就是解析#BeginLibraryItem
      

  4.   


    但是有些模板删除了<!-- if() -->这些注释语句会显示不正确:例如ecshop中的invoice_query.lbi(用于发货查询):
    原代码:<meta http-equiv="Content-Type" content="text/html; charset=gbk">
    <!--{if $invoice_list}-->
    <style type="text/css">
    .boxCenterList form{display:inline;}
    .boxCenterList form a{color:#404040; text-decoration:underline;}
    </style>
    <div class="box">
     <div class="box_1">
      <h3><span>{$lang.shipping_query}</span></h3>
      <div class="boxCenterList">
        <!-- 发货单查询{foreach from=$invoice_list item=invoice} -->
       {$lang.order_number} {$invoice.order_sn}<br />
       {$lang.consignment} {$invoice.invoice_no}
       <div class="blank"></div>
       <!-- 结束发货单查询{/foreach}-->
      </div>
     </div>
    </div>
    <div class="blank5"></div>
    <!-- {/if} -->
    正确显示:
    发货查询
    订单号 2009061909851
    发货单 232421
    订单号 2009052224892
    发货单 1123344 
    但删除所有<!-- -->语句后却不显示订单号和发货单的数据:
    发货查询
    订单号
    发货单
      

  5.   


    哇。。连smarty中的assign, display函数都自己写,太厉害了
      

  6.   

    <!-- if() -->你可以删除<!-- -->但不能删除if()
    模板最终都是以php解析的,没了if当然就会出错。
      

  7.   


    你的意思是说<!-- -->是用来调试时候用的,if()是必须存在的是吧?!
      

  8.   

    <!-- -->是html语言的注释。
      

  9.   

    这个是当你直接用浏览器打开的时候,给web前端调试用的
      

  10.   

    那你把<!-- 和 -->去掉然后在浏览器打开html文件看看会不会一片混乱
      

  11.   

    如果你只删掉注释的符号,里面的if啊else啊还留在那呢
      

  12.   

    <!-- if() -->
    <div>.....</div>
    像如上语句include到一个html中,用网页打开,网页不会显示if()。
    而include到一个php中if条件就会起作用.