php,{dede:arclist type='commend' row='8' titlelen='30' orderby='click'}, [field:textlink /][field:click /] 次阅读 [field:title function="cn_substr(@me,30)" /],{/dede:arclist},
`,,这段代码会调用与当前文章具有相同tag关键字的相关文章,并按照点击量降序排列,显示8篇文章。你可以根据需要修改参数,如
row表示显示的文章数量,
titlelen`表示标题长度等。在织梦CMS(DedeCMS)中,通过标签调用相关文章和关键字是一种常见且有效的方法,能够提升网站内容的关联性和SEO效果,下面将详细介绍如何利用织梦中的tag和keyword功能来调用相关文章:
调用tag列表页显示文章所属栏目和链接
在tag列表页上显示每篇文章的所属栏目和对应的链接,可以通过以下代码实现:
[field:typelink/]
这段代码会获取当前文章所属的栏目链接,并在tag列表页上进行展示。
网站列表页调用带链接的tag
在网站的列表页上直接调用带有链接的tag,可以使用如下代码:
[field:id runphp='yes'] global $cfg_cmspath; $tags = GetTags(@me); $revalue = ''; $tags = explode(',', $tags); foreach($tags as $key => $value){ if($value){ $revalue .= '<a href="'.$cfg_cmspath.'/tags.php?/'.$value.'/">'.$value.'</a> '; } } @me = $revalue; [/field:id]
这段代码首先获取文章的所有tag,然后遍历这些tag并生成带链接的HTML代码。
文章内直接调用tag
页里直接调用tag,可以使用以下代码:
{dede:tag table='dede_search_keywords' sort='keyword' row='5' if=''} <a href='[field:link/]' class='tagc[field:highlight /]'>[field:tag /] </a> {/dede:tag}
此代码会在文章内容页中调用并显示最多5个与该文章相关的tag。
实现热门标签展示
要展示热门标签,可以在模板文件中添加以下代码:
{dede:tag sort='click' row='20'} <a href='[field:link/]'>[field:tag /]</a> {/dede:tag}
这段代码会根据点击次数从多到少展示前20个热门标签。
使用taglist.htm文件进行筛选
可以在templets
目录下找到tag.htm
和taglist.htm
文件,通过修改这些文件来实现对tag的筛选和自定义显示。
设置tag位置导航
在列表页中添加文章的tag,可以增强导航性:
<!列表页添加文章tag > {dede:field name='tag'/}
这样会在列表页中为每篇文章添加其相应的tag。
文章内页调用自身tag
页调用文章自身的tag,可以使用以下代码:
{dede:field name='tag' function='GetTags(@me)'/}
这段代码会在文章内容页中显示该文章自身的所有tag。
自定义类库文件实现精准获取相关文章
官方提供的dede:likearticle
标签可能不够精准,可以通过自定义一个类库文件来实现更精确的相关文章调用,在include/taglib
下添加一个liketags.lib.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']; } 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(count($ids) == 0) return; // 如果没找到相关文章,则返回空值。 // 输出结果列表... } } ?>
调用一篇文章的全部内容可以使用以下SQL语句:
{dede:sql sql="Select body Fromdede_mubanaddonarticle
where aid='5'"} [field:body/] {/dede:sql}
调用一篇文章的前1000个字:
{dede:sql sql="Select left(body,1000) Fromdede_mubanaddonarticle
where aid='5'"}[field:body/]{/dede:sql}
常见问题解答FAQs
1、Q1: 如何在织梦CMS中调用相关文章?
A1: 可以使用dede:likearticle
标签或自定义类库文件liketags.lib.php
来实现精准调用相关文章,具体方法可以参考上述代码示例。
dede:likearticle标签:适用于简单场景。
自定义类库文件:适用于需要更多自定义字段和复杂逻辑的场景。
注意事项:确保系统缓存已更新,否则更改可能不会立即生效,如果遇到问题,检查相关配置和权限。
Dedecms织梦Tag Keyword调用相关文章
1.
Dedecms织梦是一款功能强大的内容管理系统(CMS),它支持通过Tag Keyword(标签关键词)来调用相关文章,这种方式可以方便地实现文章的分类聚合和推荐,提升用户体验。
2. 标签关键词调用原理
Tag Keyword:在Dedecms中,每个文章可以关联多个标签关键词,这些标签关键词用于描述文章的主题和内容。
调用相关文章:通过在模板中插入特定的标签关键词调用代码,系统会自动查找与该关键词相关的文章,并显示在指定位置。
3. 调用相关文章的方法
3.1 使用标签关键词调用模块
1、登录Dedecms后台,进入“模块管理”。
2、找到“Tag关键词调用”模块,点击“添加模块”。
3、在“调用类型”中选择“相关文章”,设置相关参数(如显示数量、排序方式等)。
4、保存模块,然后在文章模板中调用该模块即可。
3.2 使用自定义调用代码
1、在模板文件中找到需要调用相关文章的位置。
2、使用以下代码进行调用:
{dede:tag keyword='关键词'} {dede:arclist tagid='关键词ID' row='5' titlelen='30'} <a href="[field:arcurl/]">[field:title/]</a> {/dede:arclist} {/dede:tag}
关键词
:需要调用相关文章的标签关键词。
关键词ID
:该标签关键词的ID,可以在标签关键词管理中查看。
row
:调用文章的数量。
titlelen
的长度。
4. 注意事项
确保标签关键词的设置准确,以便正确调用相关文章。
调用相关文章时,注意文章的排序方式和显示数量,以提高用户体验。
避免过度调用相关文章,以免影响网站的整体布局。
5. 归纳
通过Dedecms织梦的Tag Keyword调用相关文章功能,可以有效地提升网站的内容展示效果,为用户提供更加丰富的阅读体验,正确使用该功能,有助于提高网站的用户留存率和转化率。