在网站开发过程中,DedeCMS(帝国CMS)作为一款功能强大的内容管理系统,被广泛使用。对于一些个性化的需求,仅仅依赖DedeCMS自带的模板标签和函数是远远不够的。这时候,自定义函数的作用就凸显出来了。本文将深入探讨DedeCMS自定义函数的调用方法,并结合实际案例进行实战应用,帮助大家更好地掌握这一技能。
一、什么是DedeCMS自定义函数?
DedeCMS自定义函数是指在DedeCMS模板文件中,通过定义一段PHP代码,实现特定功能的一种方式。自定义函数可以重复调用,提高代码复用性,使模板更加简洁易读。
二、DedeCMS自定义函数的调用方法
1. 在模板文件中定义自定义函数
“`php
function custom_function($param1, $param2) {
// 函数体
// …
return $result;
}
>
“`
2. 在模板文件中调用自定义函数
“`php
// 调用自定义函数
$result = custom_function($param1, $param2);
>
“`
三、DedeCMS自定义函数实战应用
以下是一些常见的DedeCMS自定义函数应用场景:
1. 获取文章分类名称
假设我们有一个文章分类列表,需要将其名称显示在模板中。以下是一个自定义函数实现该功能的示例:
“`php
function get_category_name($cid) {
$sql = “
dedecms自定义图片字段标签问题
之前选择的自定义图片图集
一、添加一个获取图片地址的方法
打开/include/extend.func.文件(注:这个文件就是系统预留的自定义函数接口文件,主要用于二次开发用的。如果你是老版本,默认没有这个文件,自己创建一个PHP文件即可),在最下面的?>上一行加入以下函数代码:(如果结尾没有?>那就直接在最下面添加)
function GetOneImgUrl($img,$ftype=1){ if($img<>''){$dtp= new DedeTagParse();$dtp->LoadSource($img); if(is_array($dtp->CTags)){ foreach($dtp->CTags as$ctag){ if($ctag->GetName()=='img'){$width=$ctag->GetAtt('width');$height=$ctag->GetAtt('height');$imgurl= trim($ctag->GetInnerText());$img=''; if($imgurl!=''){ if($ftype==1){$img.=$imgurl;} else{$img.='<img src=”'.$imgurl.'” width=”'.$width.'” height=”'.$height.'”/>';}}}}}$dtp->Clear(); return$img;}}
可以直接用下面的方法调用
[field:自定义图片字段名 function=”GetOneImgUrl(@me,显示类型)”/]
最终使用方法。
{dede:arclist typeid='12' addfields='datu' channelid='17' limit='0,7'}
<li><a href=”[field:arcurl/]” target=”_blank”><img border=”0″ src=”[field:datu%20function='GetOneImgUrl(@me,1)'/]”></a></li>
{/dede:arclist}
最终调用到这个图片地址。
关于dedecms修改模板的一个基础问题
◆DedeCms模板安装/制作概述:
DedeCms系统的模板是非固定的,用户可以在新建栏目时可以自行选择栏目模板,官方仅提供最基本的默认模板,即是内置系统模型的各个模板,由于DedeCms支持自定义频道模型,用户自定义新频道模型后,还需要按该模型的字段设计一套新的模板,此外,DedeCms也支持使用风格的形式使用模板,默认风格是 default,它表示系统默认使用 cmspath/templets/default这个文件夹的模板,如果你下载了一套新的模板,你可以不必要删除 default原有的文件,把下载的模板文件夹命名你想要的风格名称,如 style2等,然后在后台修改了默认的模板风格名称为 style2,那系统将使用 templets/style2这文件当作默认模板,但是若你手工指定了栏目模板的位置,则后台参数风格的定义无效。
一、概念,设计和使用模板,必须要理解下面几个概念
1、板块(封面)模板:
指网站主页或比较重要的栏目封面频道使用的模板,一般用“index_识别ID.htm”命名,此外,用户单独定义的单个页面或自定义标记,也可选是否支持板块模板标记,如果支持,系统会用板块模板标记引擎去解析后才输出内容或生成特定的文件。
2、列表模板:
指网站某个栏目的所有文章列表的模板,一般用“list_识别ID.htm”命名。
3、档案模板:
表示文档查看页的模板,如文章模板,一般用“article_识别ID.htm”命名。
4、其它模板:
一般系统常规包含的模板有:主页模板、搜索模板、RSS、JS编译功能模板等,此外用户也可以自定义一个模板创建为任意文件。
二、命名,DedeCms模板默认命名规则如下
1、模板保存位置:
模板目录:cmspath/templets/样式名称(英文,默认为default,其中system为系统底层模板,plus为插件使用的模板)/具体功能模板文件}
2、模板文件命名规范:
(1)index_识别ID.htm:表示板块(栏目封面)模板;
(2)list_识别ID.htm:表示栏目列表模板;
(3)article_识别ID.htm:表示内容查看页(文档模板,包括专题查看页);
(4)search.htm:搜索结果列表模板;
(5)index.htm:主页模板;
注解:[识别ID]可以在“频道模型管理”的地方获得,当然,你也可以在“频道模型管理”的地方确定某个频道的模板命名。
例:list_image.htm表示是就是内容类型为图片集的栏目默认列表模板。
article_article.htm表示的是文章查看页模板。
三、其它模板说明
1、默认底层模板
位置: cmspath/templets/system
功能:在没有指定标记的默认底层模板的时候,系统将自动调用这个文件夹的相应文件作为底层模板。
2、插件目录模板
位置: cmspath/templets/plus
功能:评论、友情链接、RSS地图等模板。
3、会员后台模板
位置: cmspath/member/templets
功能:会员后台的模板。
四、二次开发
DedeCms主要的模板解析类是 include/inc_arcpart_view.php、include/inc_arclist_view.php、include/inc_archives_view.php,这些类是与pub_dedetag.php一起工作的,如果你想为文档模板、列表模板、板块模板增加一些功能,可以直接修改这几个类的ParseTemplet()或ParseTempletsFirst()这类的方法,把标记名称,属性对应试相应该的功能函数即时。
希望能帮到你




