管理中,增加相关文章栏目能够显著提升用户体验,使用户更容易找到感兴趣的内容,织梦CMS(DedeCMS)作为一款功能强大的PHP开源CMS系统,其灵活的扩展性和丰富的模块功能使其成为众多网站管理员的首选,默认情况下,织梦CMS在相关文章栏目方面的表现并不理想,本文将介绍一种新方法,通过代码实现在文章内容页添加相关文章栏目,从而提升用户体验。
准备工作
在进行代码修改之前,请确保已经备份好当前的织梦CMS系统文件,以防止因操作失误导致的数据丢失,还需确保服务器具备PHP和MySQL运行环境,并且已安装织梦CMS。
代码实现步骤
1、在inc_functions.php文件中添加函数:
打开inc_functions.php文件,该文件通常位于include目录下。
在文件末尾?>前添加以下代码:
“`php
//查询指定栏目里包含相应关键字的文章,并列出
function ShowKeyWordArc($showImg, $titleLen, $rowCount, $typeid, $keyWord) {
$dsql = new DedeSql(false);
$sql = TypeGetSunID($typeid, $dsql);
//关键字分词技术
$ks = explode(" ", $keyWord);
foreach ($ks as $k) {
$k = trim($k);
if ($k != "") {
$kwsqlarr[] = " (xkzzz_archives.title like ‘%$k%’) ";
//如果需要相关到其它文章的关键字,解除此行注释
//$kwsqlarr[] = " (xkzzz_archives.keywords like ‘%$k%’) ";
}
}
$where = implode(‘ OR ‘, $kwsqlarr);
$sql = "SELECT tp.namerule, tp.typedir, xkzzz_full_search.aid, xkzzz_full_search.url, xkzzz_archives.* FROM xkzzz_full_search LEFT JOIN xkzzz_archives ON xkzzz_full_search.aid = xkzzz_archives.ID LEFT JOIN xkzzz_arctype tp ON xkzzz_archives.typeid = tp.ID WHERE {$sql} AND ((xkzzz_archives.title LIKE ‘%" . $keyWord . "%’) OR $where) ORDER BY xkzzz_full_search.aid DESC";
$dsql>SetQuery($sql);
$dsql>Execute();
$ss = "";
$i = 0;
while ($row = $dsql>GetObject()) {
$url = GetFileUrl($row>ID, $row>typeid, $row>senddate, $row>title, $row>ismake, $row>arcrank, $row>namerule, $row>typedir, $row>money);
if ($showImg == 0) {
$ss = $ss . "<LI><a rel="nofollow noopener noreferrer" href=’" . $url . "’ target=_blank>";
if ($titleLen != 0) $ss = $ss . cn_substr($row>title, $titleLen);
else $ss = $ss . $row>title;
$ss = $ss . "</A></LI>";
} else {
$ss = $ss . "<LI><span class=’sjdqimggl’><a rel="nofollow noopener noreferrer" href=’" . $url . "’ target=_blank>";
if ($row>litpic != "") $ss = $ss . "<img src=’" . $row>litpic . "’ alt=" . $row>title . " />";
else $ss = $ss . "<img src=’/images/titl.gif’/>";
$ss = $ss . "</a></span><span class=’sjdqtxttl’><a rel="nofollow noopener noreferrer" href=’" . $url . "’ target=_blank>";
if ($titleLen != 0) $ss = $ss . cn_substr($row>title, $titleLen);
else $ss = $ss . $row>title;
$ss = $ss . "</A></span></LI>";
}
$i++;
if (($rowCount != 0) && ($i >= $rowCount)) return $ss;
}
return $ss;
}
“`
2、在文章模板页内调用函数:
打开需要添加相关文章栏目的文章模板页(通常是article_article.htm),在适当位置添加以下代码:
“`html
<!显示相关文章>
<ul>
{dede:field name=’keywords’ function=’ShowKeyWordArc(0,32,10,0,"@me")’/}
</ul>
“`
以上代码表示取所有栏目内的相关文章(与当前文章的关键字相关),标题长度最大为32个字符,最多显示10条,不显示缩略图。
常见问题解答(FAQs)
1、Q: 如何在首页或其他页面调用相关文章?
A: 在其他页面调用相关文章时,可以在对应模板页中加入类似的标签调用,只需调整参数即可。
“`html
<!显示相关文章>
<ul>
{dede:field name=’keywords’ function=’ShowKeyWordArc(0,32,10,0,"高三 语文")’/}
</ul>
“`
这段代码会找到标题中含有“高三 语文”或其单独关键词的文章。
2、Q: 如果我想限制只在某个特定栏目内显示相关文章,该如何修改代码?
A: 可以通过修改$typeid
参数来指定特定栏目ID,如果只想在栏目ID为5的栏目内显示相关文章,可以将代码改为:
“`html
<!显示相关文章>
<ul>
{dede:field name=’keywords’ function=’ShowKeyWordArc(0,32,10,5,"@me")’/}
</ul>
“`
这样就可以实现仅在指定栏目内显示相关文章的功能。
通过上述方法,织梦CMS可以实现在文章内容页添加相关文章栏目,从而提升用户体验和内容的关联性,希望本文的解决方案能对大家有所帮助。
原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/1109575.html
本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。
发表回复