关联文章概述
在织梦CMS中,关联文章是指在文章详情页中展示与当前文章内容相关的其他文章,以增加用户停留时间和页面浏览量。关联文章的推荐策略可以基于同栏目、同TAG标签、关键词匹配等多种方式。
一、同栏目关联(最简单)
在文章内容页推荐同栏目的其他文章:
<!-- 同栏目最新文章 -->
<div class="related">
<h3>本栏目最新文章</h3>
{dede:arclist typeid='{dede:field.typeid/}' row='8'
titlelen='40' orderby='pubdate'}
<li>
<a href="[field:arcurl/]">[field:title/]</a>
<span>[field:pubdate function="MyDate('m-d',@me)"/]</span>
</li>
{/dede:arclist}
</div>
二、基于TAG标签关联
<!-- 通过TAG标签获取关联文章 -->
{dede:likearticle row='8' titlelen='40'}
<li>
<a href="[field:arcurl/]">[field:title/]</a>
</li>
{/dede:likearticle}
<!-- likearticle标签参数 -->
<!-- row: 返回数量 -->
<!-- titlelen: 标题长度 -->
<!-- mytypeid: 限定栏目ID -->
<!-- ereg: 正则匹配规则 -->
三、通过关键词匹配关联
<!-- 通过SQL匹配关键词关联 -->
{dede:sql sql="SELECT a.id,a.title,a.pubdate,a.click
FROM dede_archives a
WHERE a.keywords LIKE '%{dede:field name='keywords' runphp='yes'}
$kw=explode(',',@me); echo trim($kw[0]);
{/dede:field}%'
AND a.id !={dede:field.id/}
ORDER BY a.pubdate DESC LIMIT 10"}
<li>
<a href="/plus/view.php?aid=[field:id/]">[field:title/]</a>
</li>
{/dede:sql}
四、复合关联(同栏目 + TAG标签)
<div class="related-articles">
<div class="tab-nav">
<span class="active">相关文章</span>
<span>本栏目推荐</span>
</div>
<div class="tab-content">
<!-- TAB1:TAG相关文章 -->
<div class="tab-panel">
{dede:likearticle row='6' titlelen='36'}
<li><a href="[field:arcurl/]">[field:title/]</a></li>
{/dede:likearticle}
</div>
<!-- TAB2:同栏目热门 -->
<div class="tab-panel" style="display:none">
{dede:arclist typeid='{dede:field.typeid/}' row='6'
orderby='click' titlelen='36'}
<li><a href="[field:arcurl/]">[field:title/]</a></li>
{/dede:arclist}
</div>
</div>
</div>
五、排除当前文章
确保关联列表中不包含当前阅读的文章:
<!-- 使用limit参数排除当前文章 -->
{dede:arclist typeid='{dede:field.typeid/}' row='6'
limit='0,6' noflag='h' orderby='pubdate'}
[field:global name='autoindex' runphp='yes']
if(@me==1 && $GLOBALS['aid']==$refObj->Fields['id']) {
@me='';
}
[/field:global]
<li><a href="[field:arcurl/]">[field:title/]</a></li>
{/dede:arclist}
六、利用副栏目实现交叉关联
文章的"副栏目"功能(typeid2)也可以用于关联推荐:
<!-- 获取与当前文章有相同副栏目的文章 -->
{dede:sql sql="SELECT a.id,a.title
FROM dede_archives a
WHERE a.typeid2=(SELECT typeid2 FROM dede_archives WHERE id={dede:field.id/})
AND a.id !={dede:field.id/}
ORDER BY a.pubdate DESC LIMIT 8"}
<li><a href="/plus/view.php?aid=[field:id/]">[field:title/]</a></li>
{/dede:sql}
用户体验建议:关联文章的数量建议控制在6-10条之间。过多会分散用户注意力,过少则关联意义不大。优先展示有缩略图的关联文章可以提升点击率。