DedeCMS(织梦)二级栏目调用及判断输出

DedeCMS(织梦)二级栏目调用及判断输出,第1张

概述  首先想到的是模版里不用sql,不用php,就用dede已有的dede标签通过不同的嵌套来达到目的。努力尝试了很多,有方法倒是可以解决,只是简单的方式影响效

下面是内存溢出 jb51.cc 通过网络收集整理的代码片段。内存溢出小编现在分享给大家,也给大家做个参考。

首先想到的是模版里不用 sql,不用 PHP,就用 dede 已有的 dede 标签通过不同的嵌套来达到目的。努力尝试了很多,有方法倒是可以解决,只是简单的方式影响效率:每个顶级栏目下的二级栏目要被重复遍历 3 次;如果用复杂的方式,虽说不用遍历这么多次,但遍历时取出的无用信息实在太多,心有不甘啊,无奈之下,只好求助于 dede 下万能标签{dede:PHP}和{dede:sql}。——如果想要{dede:PHP}在模版里起作用,需要在 dede 后台进行设置,进入到 dede 后台,在 dede 后台——系统——系统基本参数——其他选项 里面,第二个参数默认模版引擎禁用标签里有 PHP,在这里将 PHP 去掉然后点击下面的确定即可让{dede:PHP}标签生效。 经过笔者多次测试及代码优化,最后可以判断 是否含有二级栏目的调用方法如下:

{dede:channelartList typeID='top'}

<li><a href="{dede:fIEld name='typeurl'/}">{dede:fIEld name='typename'/}</a>

{dede:PHP}

$ID = $refObj->FIElds['ID'];

$sql = ("SELECT * FROM dede_arctype where reID ='$ID'");

$db->Setquery($sql);

$db->Execute();

if($db->GetTotalRow()){

echo '<ul>';

while($row = $db->GetArray()){

$url = str_replace('{CMSpath}','',($row[typedir]));

echo "<li><a href=".$url.">".($row[typename])."</a></li>";

};

echo '</ul>';

};

{/dede:PHP}

</li>

{/dede:channelartList}

代码释义:

1、$ID = $refObj->FIElds[‘ID’]; 此段代码取得的 ID 是由上层{dede:channelartList typeID=’top’}标签循环出来的当前顶级栏目 ID,只有将当前的 ID 放入下面的 sql 语句中,才能配合循环判断相应的顶级栏目下是否含有二级栏目,如果将 ID 固定,将无法完成循环判定;


2、$db->GetTotalRow();此语句取得的是执行完 sql 查询后得到的查询总记录条数,在这里用来做判定是否含有二级栏目的条件;


3、$url = str_replace(‘{CMSpath}’,”,($row[typedir]));从数据库里查出来的二级栏目地址带有{CMSpath},直接从数据库取出后{CMSpath}在模版里将无法被解析,所以如果在此处不加处理,连接将会发生错误。这里这个语句要根据自己站点的实际情况进行配置,如果在后台添加二级栏目的时候,路径没有使用系统默认的,那这里就不需要处理了。说明下这个{CMSpath},这个其实就是 dede 的安装路径,这个在 dede 后台——系统——系统基本参数——核心设置里第一个参数 Dedecms 安装目录 这个里面的就是解析出来的路径。

以上是内存溢出(jb51.cc)为你收集整理的全部代码内容,希望文章能够帮你解决所遇到的程序开发问题。如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

总结

以上是内存溢出为你收集整理的DedeCMS(织梦)二级栏目调用及判断输出全部内容,希望文章能够帮你解决DedeCMS(织梦)二级栏目调用及判断输出所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/1027958.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-23
下一篇 2022-05-23

发表评论

登录后才能评论

评论列表(0条)

保存