当前位置:首页 > 行业动态 > 正文

dedecms织梦怎么让likearticle的mytypeid支持多个栏目和子栏目

在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标签支持多个栏目和子栏目的功能,注意,这里的代码仅作为示例,你可能需要根据实际需求进行调整。

0

随机文章