ecshop小京东的模板中用到了楼层的概念,看下了模板每个楼层都写了一下,用几个楼层就写了几段,个人感觉这样的有点冗余,不如做个函数,直接循环一下
有两种方法,第一种是:写个函数来实现楼层的显示,第二种是直接做一个模板函数,直接在页面上循环,第一种方法,本人觉得麻烦,就试了第二种,居然成功了
smarty2好像不支持 模板函数,下面提供一个官方的例子,
{* 定义函数 *}
{function name=menu level=0}
<ul class="level{$level}">
{foreach $data as $entry}
{if is_array($entry)}
<li>{$entry@key}</li>
{call name=menu data=$entry level=$level+1}
{else}
<li>{$entry}</li>
{/if}
{/foreach}
</ul>
{/function}
{$menu = ['item1','item2','item3' => ['item3-1','item3-2','item3-3' =>['item3-3-1','item3-3-2']],'item4']}
{call name=menu data=$menu}
{call menu data=$menu} {* 简写*}
用在小京东的模板上我们可以模仿一下
{function name=louceng } <!-- TemplateBeginEditable name="商品分类楼层1" --> <!-- #BeginLibraryItem "/library/cat_goods.lbi" -->
{$child_cat=get_child_cat({$cateid}, 3)}
<!-- #EndLibraryItem --> {/function}
然后写上调用就完成了,后边这个可以写一个数组
{$lou =4} {call louceng cateid=$lou}
对于原来的模板,我有些看不懂,因为原来的模板是可以在后台配置的,关于配置那个地方的功能,有些复杂,
个人意见,对于商城的运营,还是需要技术团队来支持的,一些小的功能还是没有必要做的太复杂,
有时直接写数组与配置文件还是必要的,有于一小点的便利,可能会引入很多代码,有时这样的代价太大,没有必要
后面附人个人微信二维码