上一篇
dedecms织梦怎么让likearticle的mytypeid支持多个栏目和子栏目
- 行业动态
- 2024-04-19
- 1
在DedeCMS(织梦)中,likearticle标签用于调用相关文章,其中mytypeid参数通常用于指定要显示文章的栏目ID,默认情况下,mytypeid仅支持单个栏目ID,如果你希望likearticle标签支持多个栏目和子栏目,你可以通过以下方法实现:
1、创建自定义函数
你需要在DedeCMS的模板文件中创建一个自定义函数,该函数用于获取多个栏目及其子栏目的文章,在模板文件的适当位置(foot.htm),添加以下代码:
<?php function getLikeArticle($mytypeidArr, $limit = 10) { global $dsql; $sql = "SELECT * FROM #@__arctiny WHERE 1"; foreach ($mytypeidArr as $mytypeid) { $sql .= " OR (typeid='$mytypeid' OR typeid IN (SELECT id FROM #@__arctype WHERE reid='$mytypeid'))"; } $sql .= " ORDER BY senddate DESC, id DESC LIMIT $limit"; $dsql>SetQuery($sql); $dsql>Execute(); $result = $dsql>GetArray(); return $result; } ?>
2、修改likearticle标签
接下来,你需要修改DedeCMS的likearticle标签,使其支持多个栏目和子栏目,在include/taglib/arclist.lib.php文件中,找到likearticle标签的定义,然后替换原有的mytypeid参数处理逻辑为以下代码:
if (!empty($mytypeid)) { if (is_array($mytypeid)) { $mytypeidArr = $mytypeid; } else { $mytypeidArr = explode(',', $mytypeid); } $sql .= " AND (typeid IN (" . implode(',', $mytypeidArr) . ") OR typeid IN (SELECT id FROM #@__arctype WHERE reid IN (" . implode(',', $mytypeidArr) . ")))"; }
3、使用likearticle标签
现在,你可以在DedeCMS的模板中使用likearticle标签来调用多个栏目和子栏目的文章了。
<div > <?php $mytypeidArr = array(1, 2, 3); // 指定要显示文章的栏目ID数组 $likeArticles = getLikeArticle($mytypeidArr, 10); // 调用自定义函数,获取相关文章列表 foreach ($likeArticles as $k => $v) { echo "<a href='" . GetArcURL($v) . "' target='_blank'>" . $v['title'] . "</a>"; if ($k < count($likeArticles) 1) { echo " | "; } } ?> </div>
通过以上步骤,你可以实现在DedeCMS中让likearticle标签支持多个栏目和子栏目的功能,注意,这里的代码仅作为示例,你可能需要根据实际需求进行调整。
本站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本站,有问题联系侵删!
本文链接:http://www.xixizhuji.com/fuzhu/316158.html