ecshop小京东模板切换到smarty3.13之模板函数,用模板函数替换楼层

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}

对于原来的模板,我有些看不懂,因为原来的模板是可以在后台配置的,关于配置那个地方的功能,有些复杂,

个人意见,对于商城的运营,还是需要技术团队来支持的,一些小的功能还是没有必要做的太复杂,

有时直接写数组与配置文件还是必要的,有于一小点的便利,可能会引入很多代码,有时这样的代价太大,没有必要

后面附人个人微信二维码

时间: 2024-09-13 08:23:12

ecshop小京东模板切换到smarty3.13之模板函数,用模板函数替换楼层的相关文章

ecshop小京东的模板切换到smarty3.1.3之去掉原生的php语法

在小京东的模板中,随处可以看到 <?php $GLOBALS['smarty']->assign('index_image',get_advlist('首页-分类ID'.$GLOBALS['smarty']->_var['goods_cat']['id'].'-左侧图片', 1)); ?> 类似这样的编码,由于smarty3.1不支持原生的php语句了,所以要做下调整,改成以下模式就可以了   {$index_image3=get_advlist('首页-分类ID3通栏广告', 1

ecshop模板切换到smarty3.1.30

ecshop使用的是smarty的阉割版 如果使用smarty3来替换掉ecshop的原版呢,有一些不兼容的地方一个个地来排除,第一个  {insert_scripts files='jquery.json.js,transport.js'} 在libs/plugins文件夹中新建文件function.insert_scripts.php,加入以下代码 function smarty_function_insert_scripts($args ) { // var_dump($args['fil

ecshop手机端模板引擎切换到smarty3.1.30-之改造insert_ads

在网上下载的一个小京东的模板4.1的模板,原模板引擎是ecshop的,感觉不是很好用,切换到smarty吧, 选择了新版的smarty3.1.30使用,遇到的第一个问题就是有一些函数使用起来不对,所以改造一下,遇到的第一个就是insert_ads 这个广告在手机端只显示一个,所以就简化了一个,改成了这个样子 function insert_ads1($arr) { static $static_res = NULL; $time = gmtime(); $sql = 'SELECT a.ad_i

每周聚划算 超值软件汇总第三期:厉害了word哥!“小京东+”商城0.6折立省2681元!

总担心好价格稍纵即逝?云市场头条每周聚划算!超值软件汇总,致力于为大家发现.比价.筛选性价比最高的靠谱软件,让企业更加省心省力! 距离云市场12.21促销还有一周时间,预算花的差不多的小伙伴们,最后一次特价采购机会准备好了么?本期最值得推荐的是商之翼的"小京东+"SaaS商城,云市场特价第一年只要0.6折199元,立刻节省2681元!厉害了word哥! > 阿里云官方实验平台+云中沙箱沙箱点八折优惠 云中沙箱,基于阿里云真实环境的官方实验平台,深度体验阿里云真实环境中的操作,根据

ThinkPHP自定义函数解决模板标签加减运算的方法_php实例

本文实例讲述了ThinkPHP自定义函数解决模板标签加减运算的方法.分享给大家供大家参考.具体如下: 实际项目中,我们经常需要标签变量加减运算的操作.但是,在ThinkPHP中,并不支持模板变量直接运算的操作. 幸运的是,它提供了自定义函数的方法,我们可以利用自定义函数解决: ThinkPHP模板自定义函数语法如下: 格式:{:function(-)} (参考官方帮助文档:http://thinkphp.cn/Manual/196) 利用这个,我们来试做加法和减法. 一.在ThinkPHP中定义

在PHP世界中选择最合适的模板与使用方法第1/2页_php模板

在PHP世界中选择最合适的模板 /google 的广告条--> 事情的起因:你用过FastTemplate吗?对于PHP工程中的模板应用,其实我和我的同事们已经在许多的项目中接触过--关于它的好处,我想无论是在实际开发阶段还是上升到设计模式的角度都已经有很多"前辈先哲"讨论过了.就项目实施而言,在一些中型甚至大型的项目中,有效的将HTML(还有其他文本形式的表现层)和PHP代码分开,不仅在开发阶段可以分别提高界面设计人员和应用程序编写人员的工作效率,更会给项目的测试和维护带来巨大

【C/C++学院】0823-静态联合编译与动态联合编译/父类指针子类指针释放/虚函数/纯虚函数概念以及虚析构函数/抽象类与纯虚函数以及应用/虚函数原理/虚函数分层以及异质链表/类模板的概念以及应用

静态联合编译与动态联合编译 #include <iostream> #include <stdlib.h> //散列 void go(int num) { } void go(char *str) { } //class //::在一个类中 class A { public: void go(int num) { } void go(char *str) { } }; void main() { ///auto p = go;编译的阶段,静态联编 void(*p1)(char *s

c++-C++中的模板函数创建的函数的生存期是什么?

问题描述 C++中的模板函数创建的函数的生存期是什么? 首先是声明模板,调用模板的时候编译器会创建实例函数,这个函数的生存期是什么呢? 调用完之后就消失还是一直存在? 如果再次调用的话,还需要再创建实例函数吗? 解决方案 C++模板函数C++中的函数模板c++ 函数模板 解决方案二: 模板是直接根据实例的生命期决定,模板函数应该一直存在,只是对象来调用 解决方案三: 调用之后就消失了,再次实例化重新创建

【C/C++学院】0825-类模板/final_override/类模板与普通类的派生类模板虚函数抽象模板类/类模板友元/位运算算法以及类声明/Rtti 实时类型检测/高级new创建/类以及函数包装器

类模板 类模板多个类型默认类型简单数组模板 #pragma once template <class T=int>//类模板可以有一个默认的值 class myArray { public: myArray(); ~myArray(); }; #include "myArray.h" template <class T=int>//每一个函数都需要加上一个默认的值 myArray<T>::myArray() //类模板成员函数在外部,需要加载类型初始