如何在DEDECMS织梦模板中调用相关文章?

在织梦CMS中调用相关文章,可以通过修改模板文件和系统文件来实现。具体方法是在文章模板中添加相关代码,并在likearticle.lib.php文件中进行相应修改。

织梦(DedeCMS)是一款流行的内容管理系统,广泛应用于企业建站和信息管理,在网站运营中,调用相关文章不仅可以提高用户体验,还能增加页面的SEO效果,下面将详细介绍如何在织梦系统中调用相关文章:

如何在DEDECMS织梦模板中调用相关文章?

一、调用当前栏目的相关文章

1、使用默认标签

织梦系统自带一个{dede:likearticle} 标签,用于调用当前栏目下的相关文章,这个标签简单易用,但功能较为有限。

     {dede:likearticle col='2' row='10' titlelen='42'}
     <li><a href="[field:arcurl/]">[field:title/]</a></li>
     {/dede:likearticle}

参数说明:

col:分多少列显示(默认为单列)

row:返回文档列表总数

如何在DEDECMS织梦模板中调用相关文章?

titlelen长度

2、修改系统文件以调用全站相关文章

如果希望调用全站的相关文章,需要修改系统文件include/taglib/likearticle.lib.php,具体步骤如下:

打开include/taglib/likearticle.lib.php 文件。

找到第102行代码:

如何在DEDECMS织梦模板中调用相关文章?

       $typeid = "And arc.typeid in($typeid) And arc.id<>$arcid";

将其修改为:

       $typeid = "And arc.id<>$arcid";

保存并覆盖原文件,然后重新生成文章页即可。

二、自定义类库文件实现精准调用

1、创建自定义类库文件

为了更精准地获取相关文章,可以创建一个自定义类库文件liketags.lib.php

     if(!function lib_liketags(&$ctag,&$refObj)) {
         global $dsql,$envs;
         //属性处理
         $attlist = "row|12,titlelen|30,infolen|250,col|1,tablewidth|100,typeid|0,byabs|0,imgwidth|120,imgheight|90,flag|";
         FillAttsDefault($ctag>CAttribute>Items, $attlist);
         extract($ctag>CAttribute>Items, EXTR_SKIP);
         $revalue = '';
         if (empty($tablewidth)) $tablewidth = 100;
         if (empty($col)) $col = 1;
         $colWidth = ceil(100 / $col);
         $tablewidth = $tablewidth . "%";
         $colWidth = $colWidth . "%";
         $orwheres = '';
         if ($flag != '') {
             $flags = explode(',', $flag);
             for ($i = 0; isset($flags[$i]); $i++) $orwheres .= " AND FIND_IN_SET('{$flags[$i]}', arc.flag)>0 ";
         }
         $ids = array();
         $tids = array();
         if (!empty($refObj>Fields['tags']) {
             $keyword = $refObj>Fields['tags'];
         } else {
             $keyword = (!empty($refObj>Fields['keywords']) ? $refObj>Fields['keywords'] : '');
         }
         $typeid = (!empty($typeid) ? $typeid : 0);
         if (empty($typeid)) {
             if (!empty($refObj>Typelink>TypeInfos['reid'])) {
                 $typeid = $refObj>Typelink>TypeInfos['reid'];
             } else {
                 if (!empty($refObj>Fields['typeid'])) $typeid = $refObj>Fields['typeid'];
             }
         }
         if (!empty($typeid) && !preg_match('#,#', $typeid)) {
             $typeid = GetSonIds($typeid);
         }
         if (!empty($refObj>Fields['tags']) && $eregtype != 'keyword') {
             $tags = explode(',', addslashes($refObj>Fields['tags']));
             $getsql = " tag like '".join("' OR tag like '", $tags)."' ";
             $dsql>Execute('me', "Select * From#@__tagindex where $getsql ");
             while ($arow = $dsql>GetArray('me')) {
                 $tids[] = $arow['id'];
             }
             $tid = join(',', $tids);
             if ($tid != '') {
                 $dsql>Execute("me", "Select aid From#@__taglist where tid in($tid) And arcrank > 1 group by aid order by aid desc");
                 while ($arow = $dsql>GetArray("me")) {
                     $ids[] = $arow['aid'];
                     $arcid = $refObj>Fields['aid'];
                 }
             } 
         }
         //获得附加表的相关信息
         $addField = "";
         $addJoin = "";
         if (is_object($refObj>ChannelUnit)) {
             $addtable = $refObj>ChannelUnit>ChannelInfos['addtable'];
             if ($addtable != "") {
                 $addJoin = " LEFT JOIN $addtable ON arc.id = ".$addtable.".aid ";
                 $addField = "";
                 $fields = explode(",", $refObj>ChannelUnit>ChannelInfos['listfields']);
                 foreach ($fields as $k => $v) {
                     $nfields[$v] = $k;
                 }
                 foreach ($refObj>ChannelUnit>ChannelFields as $k => $arr) {
                     if (isset($nfields[$k])) {
                         if (!empty($arr['rename'])) {
                             $addField .= ",".$addtable.".".$k." as ".$arr['rename'];
                         } else {
                             $addField .= ",".$addtable.".".$k;
                         }
                     }
                 }
             }
         }
         if ($eregtype == 'tag' && count($ids) < 1) {
             if (!empty($refObj>Fields['keywords'])) {
                 $keyword = $refObj>Fields['keywords'];
                 $ids = GetSonIds($typeid);
                 if ($ids != '') {
                     $ids = implode("','", $ids);
                     $ids = str_replace(",", ",", $ids);
                 }
                 $dsql>SetQuery("SELECT @meValue FROM#@__archives WHERE arcrank > 1 AND typeid IN($ids) AND keywords LIKE '%$keyword%'");
                 while ($dsql>dsql()) {
                     $ids[] = $dsql>result;
                 }
             } else {
                 $ids[] = 0;
             }
         } elseif ($eregtype == 'all') {
             if ($ids == '') {
                 $ids[] = 0;
             } else {
                 $ids = implode("','", $ids);
                 $ids = str_replace(",", ",", $ids);
             织梦dedecms批量导入excel表文章内容插件是一款针对织梦内容管理系统(DedeCMS)设计的实用工具,主要用于高效、快速地导入大量文章内容,这个插件极大地提升了网站内容更新和管理的效率,尤其适合那些需要频繁更新...