如何在DedeCMS织梦中高效调用相关文章?

avatar
作者
猴君
阅读量:0
在dedecms织梦中,调用相关文章可以通过使用系统内置的标签来实现。具体操作如下:,,1. 打开需要调用相关文章的文章模板文件,article_article.htm。,2. 在需要显示相关文章的位置,添加以下代码:,,`,{dede:likearticle row='8'},[field:title/],{/dede:likearticle},`,,row`属性表示显示相关文章的数量,可以根据需要自行调整。,,3. 保存模板文件并更新文章页面,即可看到相关文章的显示效果。

在DedeCMS织梦内容管理系统中,调用相关文章是一个常见的需求,它不仅能提高用户体验,还可以增强SEO效果,下面将详细介绍如何在DedeCMS中调用相关文章,并提供一些常见问题的解答:

如何在DedeCMS织梦中高效调用相关文章?

基本方法

1、使用默认标签

DedeCMS提供了一个内置的标签{dede:likearticle},用于调用相关内容,这个标签的基本用法如下:

```html

{dede:likearticle}

<a href="[field:arcurl/]">[field:title/]</a>

{/dede:likearticle}

```

参数说明

col:设置分多少列显示,默认为单列。

row:返回文档列表总数,默认为10。

titlelen长度,等同于titlelength

infolen简介长度,等同于infolength

mytypeid:手工指定要限定的栏目ID,用逗号分开表示多个。

innertext:单条记录样式(指标签中间的内容)。

2、自定义类库文件

官方的{dede:likearticle}标签可能不够精准,可以通过自定义类库文件来实现更精确的调用,在include/taglib目录下添加一个liketags.lib.php文件,代码如下:

```php

<?php

if(!function_exists('lib_liketags'))

{

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'];

} elseif(!empty($refObj>Fields['keywords'])) {

$keyword = $refObj>Fields['keywords'];

}

$typeid = ( !empty($typeid) ? $typeid : 0 );

if(empty($typeid))

{

if(!empty($refObj>Typelink>TypeInfos['reid'])) {

$typeid = $refObj>Typelink>TypeInfos['reid'];

} elseif(!empty($refObj>Fields['typeid'])) {

$typeid = $refObj>Fields['typeid'];

}

}

if( !empty($typeid) && !preg_match('/,/', $typeid) ) {

如何在DedeCMS织梦中高效调用相关文章?

$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;

}

}

}

}

}

//执行SQL查询语句并生成HTML代码

$revalue .= "<ul style='width:".$tablewidth.";'>";

if($ids) {

$query = "SELECT * FROM #@__archives WHERE id IN (".implode(',', $ids).") ".$orwheres." ".$addJoin." ORDER BY click DESC,id DESC LIMIT ".$row;

$dsql>ExecuteNoneReturn($query);

while($rs = $dsql>GetObject("rs")) {

$revalue .= "<li><a href='".$rs>ReUrl."' title='".$rs>Title."' target='_blank'>".$rs>Title."</a></li>";

}

}

$revalue .= "</ul>";

return $revalue;

}

}

```

如何在DedeCMS织梦中高效调用相关文章?

使用方法

```html

{dede:likearticle row='10' titlelen='42'}

<li><a href="[field:arcurl/]" title="[field:fulltitle/]" target="_blank">[field:title/]</a></li>

{/dede:likearticle}

```

示例

```html

<div>

<h3>相关文章</h3>

<ul>

{dede:likearticle row='8' eregtype='all|tag|keyword'}

<li><span>[field:pubdate function="MyDate('Ymd',@me)"/]</span>·<a href="[field:arcurl/]" title="[field:fulltitle/]" target="_blank">[field:title/]</a></li>

{/dede:likearticle}

</ul>

</div>

```

常见问题与解决策略

1、问题一:调用相关文章不显示

原因分析:可能是因为没有相同标签的文章,或者有相同标签的文章不在同一个栏目下,DedeCMS的相关文章默认是调用同一栏目下同标签或关键词的文章。

解决方法:可以尝试修改系统文件include/taglib/likearticle.lib.php中的条件判断,将$typeid = "And arc.typeid in($typeid) And arc.id<>$arcid";改为$typeid = "And arc.id<>$arcid";,然后重新生成所有页面。

2、问题二:如何调用全站相关文章

解决方法:可以使用上述自定义类库文件的方法,通过修改liketags.lib.php文件来实现全站相关文章的调用,具体操作步骤如下:

include/taglib目录下新建liketags.lib.php文件。

将上述PHP代码粘贴到文件中。

在模板文件中使用{dede:likearticle}标签进行调用。

注意事项:修改系统文件前请务必做好备份,以免造成不必要的损失,如果不熟悉操作,建议寻求专业人士帮助。

通过以上介绍,我们了解了在DedeCMS中调用相关文章的基本方法和自定义类库文件的实现方式,合理利用这些功能不仅可以提升网站的用户体验,还能有效增强SEO效果,未来随着DedeCMS的不断更新和完善,相信会有更多便捷高效的功能和插件供我们使用,助力网站运营更加顺利高效。


Dedecms织梦调用相关文章的方法

在DedeCMS中,调用相关文章是一种常见的功能,用于增加用户体验,帮助用户浏览更多相关内容,以下是如何在DedeCMS中调用相关文章的详细步骤:

1. 准备工作

确保你的DedeCMS系统已安装并正常运行。

确定你想要调用相关文章的类型(如单页、列表页等)。

2. 相关文章调用方式

DedeCMS提供了多种调用相关文章的方式,以下是一些常用方法:

2.1. 通过单页模板调用

1、打开你的单页模板文件(如 article_show.html)。

2、在合适的位置添加以下代码:

 <?php че_相关内容($dedeArchives); ?>

这段代码将会调用单页模板中当前文章的相关内容。

2.2. 通过列表页模板调用

1、打开你的列表页模板文件(如 list_news.php)。

2、在合适的位置添加以下代码:

 <?php // 调用当前列表页的相关文章 $result = GetRelatedArchives($aid); if(is_array($result)) {     foreach($result as $v)     {         // 显示相关文章信息         echo "<li><a href='{dede:field.arcurl/}' title='{dede:field.title/}'>{dede:field.title/}</a></li>";     } } ?>

这段代码将会在列表页中显示与当前列表页相关的内容。

2.3. 通过单页和列表页通用的方式调用

如果你希望在不同类型的页面中调用相关文章,可以使用以下通用代码:

 <?php // 获取当前文章的ID $aid = $dedeArchives['aid']; // 获取相关文章 $result = GetRelatedArchives($aid); if(is_array($result)) {     foreach($result as $v)     {         // 显示相关文章信息         echo "<li><a href='{dede:field.arcurl/}' title='{dede:field.title/}'>{dede:field.title/}</a></li>";     } } ?>

3. 相关参数说明

$aid:当前文章的ID。

GetRelatedArchives():DedeCMS提供的函数,用于获取相关文章。

4. 注意事项

调用相关文章时,确保你有足够的权限。

根据需要调整相关文章的显示方式和数量。

测试模板以确保相关文章的调用正确无误。

就是在DedeCMS中调用相关文章的详细方法,希望对你有所帮助!

    广告一刻

    为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!