让ecshop支持自定义分类模板子类可以继承的方法

2016-09-07 22:02 来源:www.chinab4c.com 作者:ecshop专家

ecshop是一个功能方面比较完善的商城的程序,但是毕竟不同于一般的cms类系统。无法自定义每个分类的模板,这样就造成了分类模板一成不变的样式,对于美观以及个性方面可能要差点。不过ec的开源给了php开发者一个很大的diy空间,ecshop的二次开发性也是蛮强大的。

 
下面是chinab4c实现的ecshop自定义分类模板的方法,子类可以继承最顶级的模板。好处是不用修改数据库,可以在后台分类自定义模板。功能比较简单,代码也很少,只是一个小技巧,用ecshop的朋友可以来尝试一下。
 
ecshop 自定义分类模板的方法实现步骤
 
打开根目录的category.php文件(不要问我根目录在哪里),找到大概401行 “$smarty->display(‘category.dwt’, $cache_id);”,将此行注释掉或者删除。在其下面添加下面代码
 
$cat_arr = get_parent_cats($cat_id);
foreach ($cat_arr AS $val)
{
         $cats['style']=$val['style'];
}
if(empty($cat['style']))
 {
if(!empty($cats['style']))
         {
$smarty->display($cats['style'], $cache_id);
}
else
        {
    $smarty->display('category.dwt', $cache_id);
    }
}
else
{
$smarty->display($cat['style'], $cache_id);
}
代码工作完成,然后进入后台,商品分类,找到你要添加自定义模板的那个分类。在分类的样式表文件后面的输入框中,输入你想要应用的模板文件的名称,比如“category_shoes.dwt”(前提是你的主题文件中要存在此模板文件,必须是完整的模板文件名称)
 
ok,工作完成,更新缓存去前台参观一下吧。
ecshop 自定义分类模板的方法注意要点
 
此方法应用的是ecshop自带的“可以自定义分类的样式表文件”的修改版本。如果你原来用了后台分类的自定义分类的样式表文件,那么只能告诉你——鱼与熊掌不可兼得。(其实这种方法要比原来程序自带的那种要强大)
使用了此方法就不要在模板中载入下面这段代码了
<!-- {if $cat_style} -->
<link href="{$cat_style}" rel="stylesheet" type="text/css" />
<!-- {/if} -->
顶级分类定义了的话,子类可以继承顶级分类的模板。如果顶级分类没有定义,顶级分类和子类都会载入默认的模板样式“$smarty->display(‘category.dwt’, $cache_id);”
子类同样可以自定义模板,如果想要子类模板不一样的话,同样需要单独定义。
ecshop 自定义分类模板的方法代码解说
 
前面5行代码实现调用当前类别的顶级分类的style,赋值到“ $cats['style'] ”
第6行判断当前自定义模板是否为空,接下来,如果不存在就判断顶级分类模板是否存在,存在就继承顶级模板,不存在就调用默认的category.dwt
最后两行是在当前自定义模板存在的情况下,就载入当前自定义的模板。
(责任编辑:chinab4c)