织梦dede如何按关键字调用文章?

99ANYc3cd6
预计阅读时长 17 分钟
位置: 首页 织梦建站 正文

使用 like 标签(最常用、最灵活)

这是织梦官方提供的最强大、最灵活的标签,专门用于实现“相关文章”这类功能,它可以在一个频道页(列表页、内容页)中,根据当前文章的关键字、栏目ID、ID范围等条件来查询并调用文章。

织梦dede 按照关键字调用文章
(图片来源网络,侵删)

标签语法

{dede:like row='10' titlelen='40' orderby=''}
    <a href='[field:arcurl/]'>[field:title/]</a>
{/dede:like}

主要参数说明

  • row='':调用文章的数量,row='8' 表示调用8篇文章,len=''长度,例如titlelen='30'` 表示标题最多显示30个字符(中文字符)。
  • orderby='':排序方式,这是实现“按关键字调用”的核心。
    • keyword按关键字匹配度排序(最推荐),它会优先显示与当前文章关键字最匹配的文章。
    • hotclick:按点击量排序。
    • pubdate:按发布时间排序。
    • id:按文章ID排序。
  • typeid='':指定在某个栏目ID下调用。typeid='5' 只在ID为5的栏目里查找。
  • innertext='':自定义单条记录的HTML模板,默认是 <a href='[field:arcurl/]'>[field:title/]</a>
  • aid='':指定文章ID,用于根据某篇特定文章的关键字来调用。

实战示例:在文章内容页调用“相关文章”

这是最经典的应用场景,当用户看完一篇文章后,在页面底部显示几篇与当前文章内容(关键字)相关的文章。

步骤:

  1. 打开你的文章内容页模板文件,通常位于 /templets/default/article_article.htm
  2. 在你希望显示“相关文章”的位置(例如文章末尾),插入以下代码:
<div class="related-article">
    <h3>相关文章</h3>
    <ul>
        {dede:like row='5' titlelen='35' orderby='keyword'}
        <li>
            <a href="[field:arcurl/]" title="[field:title/]">[field:title/]</a>
        </li>
        {/dede:like}
    </ul>
</div>

代码解释:

  • row='5':调用5篇相关文章,len='35'`:标题最多显示35个字符,超出部分用省略号(需要在CSS中处理)。
  • orderby='keyword'关键参数,告诉织梦根据当前文章的关键字来查找并按匹配度排序。
  • [field:arcurl/]:文章的链接地址。
  • [field:title/]:文章的标题。

使用 arclist 标签配合 keyword 属性

arclist 是织梦最基础的列表调用标签,它也可以通过 keyword 属性来按关键字调用文章,但它的功能比 like 标签要简单一些,主要用于在列表页或特定页面按指定关键字调用。

织梦dede 按照关键字调用文章
(图片来源网络,侵删)

标签语法

{dede:arclist keyword='织梦,教程' row='10' titlelen='40'}
    <a href='[field:arcurl/]'>[field:title/]</a>
{/dede:arclist}

主要参数说明

  • keyword=''核心参数,这里直接填入你想要搜索的关键字,多个关键字用英文逗号 分隔,它会在文章标题和内容中搜索这些关键字。
  • row='', titlelen='' 等参数与 like 标签用法相同。

like 标签的区别

特性 like arclist
主要用途 页或列表页,基于当前环境(如当前文章、当前栏目)调用相关内容。 在任何页面,基于手动指定的条件(如指定关键字、栏目)调用内容。
关键字来源 可以自动获取当前文章的关键字(orderby='keyword'),也可以手动指定。 必须手动指定关键字(keyword='')。
灵活性 非常高,可以结合当前文章的ID、栏目ID、关键字等多个维度进行智能匹配。 相对较低,主要用于固定的、已知的条件查询。
推荐场景 页的相关文章列表页下的相关推荐 标签云页面搜索结果页某个固定关键词的聚合页

使用SQL直接查询(高级用法)

当你需要实现更复杂的逻辑,或者上述标签无法满足需求时,可以直接在模板中执行SQL查询,这种方法性能最好,但需要对SQL语法和织梦的数据表结构有一定了解。

织梦文章关键字表结构

织梦的文章关键字存储在 dede_archives 表的 keywords 字段中,这是一个文本字段,存储的是由逗号分隔的关键字字符串,织梦,dedecms,教程

示例:获取与当前文章关键字匹配的其他文章

这个例子需要在内容页模板中使用,并且需要结合PHP。

{dede:php}
    // 1. 获取当前文章的关键字
    $keywords = $this->Fields['keywords'];
    // 2. 如果关键字不为空
    if (!empty($keywords)) {
        // 将关键字字符串转换为数组,并过滤空值
        $keywordArray = array_filter(explode(',', $keywords));
        // 如果关键字数组不为空
        if (!empty($keywordArray)) {
            // 3. 构建SQL查询
            // 查询条件:关键字包含数组中的任意一个,并且文章ID不能是当前文章ID
            $keywordLikeArray = array();
            foreach ($keywordArray as $k) {
                $keywordLikeArray[] = "keywords LIKE '%{$k}%'";
            }
            $keywordLikeStr = implode(' OR ', $keywordLikeArray);
            $sql = "SELECT id, title, arc FROM `dede_archives` WHERE ({$keywordLikeStr}) AND id!={$this->Fields['id']} ORDER BY rand() LIMIT 5;";
            // 4. 执行查询
            $dsql->SetQuery($sql);
            $dsql->Execute('me');
            // 5. 循环输出结果
            echo '<div class="related-article-sql"><h3>SQL实现的相关文章</h3><ul>';
            while ($row = $dsql->GetArray('me')) {
                $arcurl = GetOneArchive($row['id']);
                echo "<li><a href='{$arcurl['arcurl']}' title='{$row['title']}'>{$row['title']}</a></li>";
            }
            echo '</ul></div>';
        }
    }
{/dede:php}

代码解释:

织梦dede 按照关键字调用文章
(图片来源网络,侵删)
  1. $this->Fields['keywords']:获取当前文章的关键字。
  2. explode(',', $keywords):将关键字字符串(如 "a,b,c")拆分成数组 ['a', 'b', 'c']
  3. 构建一个 LIKE 查询条件,确保文章的关键字字段中包含数组中的任意一个。
  4. id!={$this->Fields['id']}:排除掉当前文章本身。
  5. ORDER BY rand() LIMIT 5:随机排序并取出5条结果。
  6. GetOneArchive($row['id']):这是一个织梦内置函数,用于根据文章ID获取文章的详细信息,包括URL。

总结与推荐

方法 优点 缺点 推荐场景
like 简单、灵活、官方推荐,功能强大,无需写SQL。 灵活性略低于原生SQL。 99% 的场景,尤其是页的相关文章
arclist 简单,适用于固定条件的调用。 无法基于当前环境动态获取关键字。 标签云、搜索页、已知关键字的聚合页。
SQL 查询 性能最高,功能最强大,可实现任何复杂逻辑。 需要懂SQL和PHP,代码量多,有一定维护成本。 复杂的数据统计、特殊需求、对性能有极致要求的场景。

对于绝大多数用户来说,强烈推荐使用方法一(like,它能完美解决你在文章内容页调用相关文章的需求,并且代码简洁、易于维护。

-- 展开阅读全文 --
头像
dede global.cfg 修改后网站无法访问怎么办?
« 上一篇 2025-12-11
织梦option下拉框不指定内容如何实现?
下一篇 » 2025-12-11

相关文章

取消
微信二维码
支付宝二维码