织梦5.7如何调用相关文章?

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

使用内置的 {dede:likearticle} 标签(最简单)

这是织梦官方提供的最直接、最简单的方法,无需修改任何代码,直接在模板中使用即可。

织梦5.7相关文章调用
(图片来源网络,侵删)

标签基本用法

{dede:likearticle}
    <a href='[field:arcurl/]'>[field:title/]</a>
{/dede:likearticle}

标签常用属性

你可以通过添加属性来控制相关文章的显示方式。

属性名 说明 示例
row 调用文章的数量 row='10' (默认10条)
col 每行显示的列数 col='2' (默认1列)
infolen 简介/摘要长度 infolen='100' (截取100个字符)
orderby 排序方式 orderby='pubdate' (按发布时间排序,默认)
orderby='hot' (按点击量排序)
orderby='rand' (随机排序)
idlist 指定文章ID列表,用于获取指定ID文章的相关文章 idlist='10,22,35'
keyword 指定关键词,获取与当前文章关键词相同的相关文章 keyword='' (留空则自动获取当前文章的关键词)
typeid 指定栏目ID,只获取该栏目下的相关文章 typeid='5'
channelid 指定模型ID,只获取该模型下的相关文章 channelid='1' (文章模型)

综合示例

假设我们要在文章内容页(article_article.htm)调用10条相关文章,按点击量排序,标题显示30个字符,并加上列表样式。

<h3>相关文章</h3>
<ul class="related-list">
    {dede:likearticle row='10' orderby='hot' titlelen='30'}
    <li>
        <a href="[field:arcurl/]" title="[field:title/]">[field:title/]</a>
        <span class="view-count">([field:click/])</span>
    </li>
    {/dede:likearticle}
</ul>

CSS样式参考:

.related-list {
    list-style: none;
    padding: 0;
}
.related-list li {
    margin-bottom: 8px;
    line-height: 1.5;
}
.related-list a {
    color: #333;
    text-decoration: none;
}
.related-list a:hover {
    color: #0066cc;
    text-decoration: underline;
}
.view-count {
    color: #999;
    font-size: 12px;
    margin-left: 5px;
}

通过关键词匹配(更精准)

{dede:likearticle} 默认是按关键词匹配的,但如果你想更明确地控制,可以手动指定关键词。

织梦5.7相关文章调用
(图片来源网络,侵删)

场景

当前文章的关键词是“织梦,DedeCMS,教程”,你想获取包含这些关键词的文章。

实现方式

获取当前文章关键词: 在调用标签前,先用 {dede:field} 标签获取当前文章的关键词。

传递给 likearticle 将获取到的关键词通过 keyword 属性传递进去。

<h3>你可能还喜欢</h3>
<div class="related-box">
    {dede:field name='keywords' runphp='yes'}
        // 如果关键词不为空
        if(@me != '') {
            // 去掉关键词两端的空格,并替换中文逗号为英文逗号
            @me = str_replace(',', ',', trim(@me));
        }
    {/dede:field}
    {dede:likearticle keyword='[field:keywords/]' row='8' titlelen='40'}
    <div class="related-item">
        <a href="[field:arcurl/]">
            <img src="[field:litpic/]" alt="[field:title/]">
            <p>[field:title/]</p>
        </a>
    </div>
    {/dede:likearticle}
</div>

注意:

织梦5.7相关文章调用
(图片来源网络,侵删)
  • 这种方法依赖于文章是否正确填写了关键词。
  • 如果关键词为空,则不会调用出任何文章。

使用自定义SQL查询(最灵活)

当内置标签无法满足复杂需求时(需要同时匹配关键词和指定栏目,或者需要关联多个表),你可以使用自定义SQL。

场景

调用与当前文章同栏目关键词相同的相关文章,但排除当前文章本身

实现方式

在需要调用的位置,使用 {dede:sql}

<h3>同栏目相关文章</h3>
<ul>
    {dede:sql sql="
        SELECT id, title, arcurl 
        FROM `dede_archives` 
        WHERE 
            typeid = '[field:id/]' -- 当前文章的栏目ID
            AND id != '[field:id/]' -- 排除当前文章
            AND keywords LIKE '%[field:keywords/]%' -- 匹配关键词
            AND arcrank > -1 -- 只显示已审核的文章
        ORDER BY click DESC 
        LIMIT 0, 10 -- 调用10条
    "}
    <li>
        <a href='[field:arcurl/]' title='[field:title/]'>[field:title/]</a>
    </li>
    {/dede:sql}
</ul>

代码解释:

  • SELECT id, title, arcurl FROM dede_archives: 从文章主表查询所需字段。
  • typeid = '[field:id/]': 获取当前文章的栏目ID(通过 [field:id/])。
  • id != '[field:id/]': 非常重要,防止调用出当前文章本身。
  • keywords LIKE '%[field:keywords/%': 使用 LIKE 和 进行模糊匹配关键词。
  • arcrank > -1: 这是一个织梦常用的条件,arcrank 为 -1 表示未审核,大于等于 0 表示已审核,这样可以确保只显示已发布的文章。
  • ORDER BY click DESC: 按点击量降序排列。
  • LIMIT 0, 10: 限制返回结果从第0条开始,共10条。

总结与建议

方法 优点 缺点 适用场景
{dede:likearticle} 简单、快速、官方支持 灵活性较低,匹配规则可能不够精准 大多数常规需求,快速实现相关文章功能
关键词传递 精准度比默认高,可控性强 依赖关键词的正确填写 对相关文章精准度有一定要求的场景
自定义SQL 极度灵活,功能强大 需要一定的SQL基础,代码稍复杂 需要复杂条件筛选、跨表查询等高级需求

给新手的建议:

  • 首选方法一 ({dede:likearticle}),它能满足80%以上的需求,且最简单。
  • 如果觉得相关文章不够相关,再尝试方法二,确保你的文章都填好了关键词。
  • 当你需要实现非常特殊的逻辑时,再考虑方法三

希望这些详细的说明能帮助你在织梦5.7中完美地调用出相关文章!

-- 展开阅读全文 --
头像
织梦网站如何播放mp4?
« 上一篇 01-09
dede channel如何实现条件判断?
下一篇 » 01-09
取消
微信二维码
支付宝二维码