最近开发一个网站, 遇到一个很尴尬的事情, 织梦的{dede:channel}标签调用currentstyle的时候, 无法再让某些字段调用function函数处理,就出现了这样一个问题
{dede:channel typeid='1' row='6' currentstyle='<li class="a"><a href="~typelink~">~typename~<span class="xg1 num">???这里该填什么???</span></a></li>'}<li><a href="[field:typelink/]">[field:typename/]<span class="xg1 num">[field:id function="GetTotalArc(@me)"/]</span></a></li>{/dede:channel}
需求是这样子的,有一个栏目列表 , 需要调用该栏目下的文章数量, 当选中该栏目的时候并高亮显示。本文这里使用的是GetTotalArc()函数通过栏目的id来获取到该栏目下的文章数量
那么问题来了,在currentstyle里面没法调用function
解决办法
打开\include\taglib下的channel.lib.php文件
我们之所以可以用~typelink~,~typename~这些获取到我们想要的数据,就是因为这一句,找到这一句
$linkOkstr = str_replace("~typename~",$row['typename'],$linkOkstr);
可以看到,图中有几条这样的语句,织梦用这样的方式替换我们模板上的关键字
ps:我的程序经过了无数次的二开,可能图中看到的代码跟你的有点不一样
因为织梦通过这个语句替换我们的关键字, 那么我们就照样子画葫芦,把我们需要的字段加进去
加上这一句,把我们需要的函数插进去;
$linkOkstr = str_replace("~rel~",$row['rel'],$linkOkstr);$linkOkstr = str_replace("~id~",$row['id'],$linkOkstr);$linkOkstr = str_replace("~typelink~",$row['typelink'],$linkOkstr);$linkOkstr = str_replace("~typename~",$row['typename'],$linkOkstr);$linkOkstr = str_replace("~number~",GetTotalArc($row['id']),$linkOkstr);
这个时候函数就插进currentstyle里面去了
模板调用
直接以~关键字~的形式调用即可
{dede:channel typeid='1' row='6' currentstyle='<li class="a"><a href="~typelink~">~typename~<span class="xg1 num">???这里该填什么???</span></a></li>'}<li><a href="[field:typelink/]">[field:typename/]<span class="xg1 num">[field:id function="GetTotalArc(@me)"/]</span></a></li>{/dede:channel}
这时候在前端就可以看到, 栏目列表调用该栏目文章总数,并且在选中的时候可以高亮显示
发表评论