在DedeEIMS的1.1版本中栏目自定义模板的实现方法
目前官方的DedeEIMS中把栏目自定义修改模板的功能给取消了,据说是为了把模板绑定简单化,但无疑这样给用户带来极大不便。
目前官方DedeEIMS中模板的定义方式是从内容模型中定义的,而且自定义模型中的模板也只能定义文档模板、列表模板、频道封面模板,而没有栏目属性中“仅为单独内容页”的模板定义,实际上该类栏目的模板是“catalog_sgpage.htm”文件。官方的这种模板绑定方式无疑让用户的栏目很难实现个性化,同样是使用“新闻动态”内容模型的几个栏目必须使用同样的模板,这肯定是让广大用户不痛快的地方。
经过分析后台的发布模块,现将修改方式分享给大家:
1、从数据库中修改栏目表中模板绑定的数据。“SELECT * FROM dede_arctype WHERE id=9”,其中字段tempsgpage即为栏目中“仅为单独内容页”对应的模板,tempindex字段为“频道封面”对应的模板,templist字段对应的为“最终列表栏目”对应的模板。修改相应的字段,如我要修改的是about us栏目的“仅为单独内容页”的模板,怎修改字段tempsgpage为“{style}/{lang}/index_about.htm”,“index_about.htm”这个文件就是我自定义的模板文件。按说修改完这里我的about us需要的模板就应该修改完了,但是官方的ListView类有一个bug,需要修复后才能正常运行。
2、打开ListView类的php文件“include/arc.listview.class.php”,找到MakePartTemplets方法和DisplayPartTemplets方法,找到每个方法中的这一行代码“$tempfile = str_replace(“{lang}”,$this->Fields[‘lang’],$tempfile);”,大概在277行,297行,336行,357行附近,在每行代码“tempfile = str_replace(“{lang}”,$this->Fields[‘lang’],$tempfile)”下增加一行代码“$tempfile = str_replace(“{style}”,$GLOBALS[‘cfg_df_style’],$tempfile);//modify by 逍遥乘风”(注意是所有的该代码下都要增加一行上面提供的代码),保存上传覆盖,即可成功生成自己自定义模板的页面了。添加这一行代码的道理很简单,该类中官方没有替换数据表字段中“{style}”的值,该值是从“DEDEDATA.”/config.cache.inc.php””中定义的。因为找不到错误的模板路径,所以该系统只会使用默认模板。
祝大家好运!