织梦通过tag和keyword标签获取相关文章的方法_织梦CMS教程


织梦默认自带的相关文章是likearticle标签实现,实际应用的时候发现这个标签调用的相关文章并不完美,我们需要改进下,一般我们要调用相关文章都是以Tag或者keyword匹配,我们今天就做下改进,实现全站按TAG和关键字调用相关文章,这个方法可单用tag来调用相关文章,也可用tag+keyword来调用相关文章(默认tag优先于keyword,可以自己排序),非常适合SEO,经测试效果极佳。

具体方法如下:

把下面的php代码换掉include/taglib/likearticle.lib里的代码:

<?php
if(!defined('DEDEINC')) exit('Request Error!');
/*--------------------------------------
按关键词关连文章的标签
eregtype属性
eregtype = keyword 只匹配关键字
eregtype = tag 只匹配tag  织梦模板
eregtype = all tag优先,不存在tag则匹配关键字
mytypeid='' 栏目ID,多个栏目用,隔开
---------------------------------------*/
function lib_likearticle(&$ctag,&$refObj)
{
global $dsql;
//属性处理
$attlist="row|12,titlelen|28,infolen|150,col|1,tablewidth|100,mytypeid|0,byabs|0,imgwidth|120,imgheight|90";
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."%";
$ids = array();
$tids = array();
$typeid = ( !empty($mytypeid) ? $mytypeid : 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) && !ereg(',', $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 `dede_tagindex` where $getsql ");
while($arow = $dsql->GetArray('me')) {
$tids[] = $arow['id'];
}
$tid = join(',', $tids);
if($tid!='')
{
$dsql->Execute("me", "Select aid From `dede_taglist` where tid in($tid) And arcrank > -1 group by aid order by aid desc limit 0, $row");
while($arow = $dsql->GetArray("me"))
{
$ids[] = $arow['aid'];
$arcid = $refObj->Fields['aid'];
}
}
}
if($eregtype == 'tag' && count($ids) == 0 )
{
return '';
}
else
{
if(count($ids) > 0)
{
if(!empty($typeid)) {
$typeid = " And arc.typeid in($typeid) And arc.id<>$arcid ";
}
$idsStr = join(',', $ids);
$query = "Select arc.*,tp.typedir,tp.typename,tp.corank,tp.isdefault,tp.defaultname,tp.namerule,
tp.namerule2,tp.ispart,tp.moresite,tp.siteurl,tp.sitepath
from `dede_archives` arc left join `dede_arctype` tp on arc.typeid=tp.id
where arc.id in($idsStr) $typeid order by arc.id desc";
}
else
{
$limitRow = $row - count($ids);
$keyword = '';
if(!empty($refObj->Fields['keywords']))
{
$keywords = explode(',' , trim($refObj->Fields['keywords']));
$keyword = '';
$n = 1;
foreach($keywords as $k)
{
if($n > 3) break;
if(trim($k)=='') continue;
else $k = addslashes($k);
$keyword .= ($keyword=='' ? " CONCAT(arc.keywords,' ',arc.title) like '%$k%' " : " OR CONCAT(arc.keywords,' ',arc.title) like '%$k%' ");
$n++;
}
}
$arcid = (!empty($refObj->Fields['id']) ? $refObj->Fields['aid'] : 0);
if( empty($arcid) || $byabs==0 ) {
$orderquery = " order by arc.id desc ";
}
else {
$orderquery = " order by ABS(arc.id - ".$arcid.") ";
}
if($keyword != '')
{
if(!empty($typeid)) {
$typeid = " And arc.typeid in($typeid) And arc.id<>$arcid ";
}
$query = "Select arc.*,tp.typedir,tp.typename,tp.corank,tp.isdefault,tp.defaultname,tp.namerule,
tp.namerule2,tp.ispart,tp.moresite,tp.siteurl,tp.sitepath
from `dede_archives` arc left join `dede_arctype` tp on arc.typeid=tp.id
where arc.arcrank>-1 and ($keyword) $typeid $orderquery limit 0, $row";
}
else
{
if(!empty($typeid)) {
$typeid = " arc.typeid in($typeid) And arc.id<>$arcid ";
}
$query = "Select arc.*,tp.typedir,tp.typename,tp.corank,tp.isdefault,tp.defaultname,tp.namerule,
tp.namerule2,tp.ispart,tp.moresite,tp.siteurl,tp.sitepath
from `dede_archives` arc left join `dede_arctype` tp on arc.typeid=tp.id
where arc.arcrank>-1 and $typeid $orderquery limit 0, $row";
}
}
}
$innertext = trim( $ctag->GetInnerText() );
if($innertext=='') $innertext = GetSysTemplets('part_arclist.htm');
$dsql->SetQuery($query);
$dsql->Execute('al');
$artlist = '';
if($col > 1) {
$artlist = "<table width='$tablewidth' border='0' cellspacing='0' cellpadding='0'> ";
}
$dtp2 = new DedeTagParse();
$dtp2->SetNameSpace('field', '[', ']');
$dtp2->LoadString($innertext);
$GLOBALS['autoindex'] = 0;
$line = $row;
for($i=0; $i < $line; $i++)
{
if($col>1) $artlist .= "<tr> ";
for($j=0; $j < $col; $j++)
{
if($col>1) $artlist .= " <td width='$colWidth'> ";
if($row = $dsql->GetArray("al"))
{
$ids[] = $row['id'];
//处理一些特殊字段
$row['info'] = $row['infos'] = cn_substr($row['description'],$infolen);
$row['id'] = $row['id'];
if($row['corank'] > 0 && $row['arcrank']==0)
{
$row['arcrank'] = $row['corank'];
}
$row['filename'] = $row['arcurl'] = GetFileUrl($row['id'],$row['typeid'],$row['senddate'],$row['title'],$row['ismake'],
$row['arcrank'],$row['namerule'],$row['typedir'],$row['money'],$row['filename'],$row['moresite'],$row['siteurl'],$row['sitepath']);
$row['typeurl'] = GetTypeUrl($row['typeid'],$row['typedir'],$row['isdefault'],$row['defaultname'],$row['ispart'],
$row['namerule2'],$row['moresite'],$row['siteurl'],$row['sitepath']);
if($row['litpic'] == '-' || $row['litpic'] == '')
{
$row['litpic'] = $GLOBALS['cfg_cmspath'].'/images/defaultpic.gif';
}
if(!eregi("^http://",$row['litpic']) && $GLOBALS['cfg_multi_site'] == 'Y')
{
$row['litpic'] = $GLOBALS['cfg_mainsite'].$row['litpic'];
}
$row['picname'] = $row['litpic'];
$row['stime'] = GetDateMK($row['pubdate']);
$row['typelink'] = "<a href='".$row['typeurl']."'>".$row['typename']."</a>";
$row['image'] = "<img src='".$row['picname']."' border='0' width='$imgwidth' height='$imgheight'>";
$row['imglink'] = "<a href='".$row['filename']."'>".$row['image']."</a>";
$row['fulltitle'] = $row['title'];
$row['title'] = cn_substr($row['title'],$titlelen);
if($row['color']!='') $row['title'] = "<font color='".$row['color']."'>".$row['title']."</font>";
if(ereg('b',$row['flag'])) $row['title'] = "<strong>".$row['title']."</strong>";
$row['textlink'] = "<a href='".$row['filename']."'>".$row['title']."</a>";
$row['plusurl'] = $row['phpurl'] = $GLOBALS['cfg_phpurl'];
$row['memberurl'] = $GLOBALS['cfg_memberurl'];
$row['templeturl'] = $GLOBALS['cfg_templeturl'];
if(is_array($dtp2->CTags))
{
foreach($dtp2->CTags as $k=>$ctag)
{
if($ctag->GetName()=='array') {
$dtp2->Assign($k,$row);
}
else {
if(isset($row[$ctag->GetName()])) $dtp2->Assign($k,$row[$ctag->GetName()]);
else $dtp2->Assign($k,'');
}
}
$GLOBALS['autoindex']++;
}
$artlist .= $dtp2->GetResult()." ";
}
//if hasRow
else
{
$artlist .= '';
}
if($col>1) $artlist .= " </td> ";
}
//Loop Col
if($col>1) $i += $col - 1;
if($col>1) $artlist .= " </tr> ";
}
//loop line
if($col>1) $artlist .= " </table> ";
$dsql->FreeResult("al");
return $artlist;
}
?>


调用代码为:

{dede:likearticle col='2' row='8' titlelen='48' mytypeid='4' eregtype=all|tag|keyword}

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

{/dede:likearticle}

代码释义:

eregtype属性

eregtype = keyword 只匹配关键字

eregtype = tag 只匹配tag

eregtype = all tag优先,不存在tag则匹配关键字

mytypeid='' 栏目ID,多个栏目用,隔开


# 世纪蓝图网站建设  # CAttribute  # gt  # 慈溪关键词seo  # seo研究中心视频教程  # 常熟seo快排  # 自动软文SEO  # 网店运营与营销推广  # 曲靖个人网站建设哪家好  # 通讯网站推广费用多少  # 黄冈网站建设与管理招聘  # 日照网站建设套餐  # extract  # 崇明区餐厅营销推广方案  # SEO高级vip课程  # 营销推广策略教案设计思路  # 广东网站建设排名  # 辽源网站优化服务商电话  # seo网站优优化案例  # 甘肃seo公司推荐  # 如何将网站推广广告  # 企业网站如何优化电话  # 庄河宝贝关键词排名优化  # 就做  # 织梦CMS教程  # 织梦相关文章  # keyword标签  # tag标签  # 关键词  # 相关文章  # 多个  # 不存在  # 自带  # 极佳  # 织梦通过tag和keyword标签获取相关文章的方法  # 全站  # 实际应用  # 换掉  # 方法如下  # empty  # FillAttsDefault  # imgheight  # colWidth  # revalue  # Items 


相关栏目: 【 Google疑问12 】 【 Facebook疑问10 】 【 网络优化91478 】 【 技术知识72672 】 【 云计算0 】 【 GEO优化84317 】 【 优选文章0 】 【 营销推广36048 】 【 网络运营41350 】 【 案例网站102563 】 【 AI智能45237


相关推荐: 新手站长如何简单搭建一个织梦网站_织梦CMS教程  如何在宝塔面板中创建新站点?  香港服务器WordPress建站指南:SEO优化与高效部署策略  织梦dedecms cookies泄漏导致SQL漏洞修复_织梦CMS教程  如何选择网络建站服务器?高效建站必看指南  织梦判断栏目是否有栏目图片,如果没有的话就显示栏目名称_织梦CMS教程  织梦用PHP方式来实现当前栏目高亮_织梦CMS教程  建站之星如何快速更换网站模板?  织梦dedecms5.7SP2手机版上一页下一页链接错误404问题 _织梦CMS教程  建站助手软件包:智能网站模板生成与SEO优化工具一键整合  dedecms织梦自定义递归函数调用所有栏目_织梦CMS教程  织梦图集图片加上序列号教程_织梦CMS教程  外链对网站权重的贡献值分析详解_SEO优化教程  如何通过虚拟主机快速完成网站搭建?  建站主机无法访问?如何排查域名与服务器问题  织梦删除服务器中多余的没有被调用的图片_织梦CMS教程  建站企业服务器配置方案:性能优化与CDN加速策略解析  宝塔面板创建网站无法访问?如何快速排查修复?  织梦自定义字段为图片(仅网址)远程图片保存只有数字的解决方法_织梦CMS教程  织梦整合kindeditor文本编辑器乱码问题解决办法_织梦CMS教程  linux服务器wdcp面板做301域名重定向设置_织梦CMS教程  香港服务器网站卡顿?如何解决网络延迟与负载问题?  广平建站公司哪家专业可靠?如何选择?  高防服务器租用指南:配置选择与快速部署攻略  建站主机数据库如何配置才能提升网站性能?  织梦DEDECMS调出指定文章所有图片的代码_织梦CMS教程  织梦修改tag标签默认12个字节的长度_织梦CMS教程  建站之星智能建站系统:SEO优化与流量空间生成方案指南  韩国服务器如何优化跨境访问实现高效连接?  建站之星更换空间及服务器迁移操作步骤解析  织梦未登录会员只能阅读文章的一部分教程_织梦CMS教程  织梦文章页增加内容字体大小选择的功能_织梦CMS教程  韩国网站服务器搭建指南:VPS选购、域名解析与DNS配置推荐  定制建站模板如何实现SEO优化与智能系统配置?18字教程  建站之星模板与系统推荐:一站式智能建站解决方案  织梦php7数据库备份无结果BUG修复方法_织梦CMS教程  如何在景安云服务器上绑定域名并配置虚拟主机?  织梦后台文章管理中增加批量添加tag标签功能_织梦CMS教程  织梦会员登录或退出后直接跳转到首页的修改教程_织梦CMS教程  修改织梦cms默认文件让其更利于SEO优化 _SEO优化教程  建站之星如何实现五合一智能建站与营销推广?  如何破解联通资金短缺导致的基站建设难题?  阿里云万网免费申请ssl证书教程_SEO优化教程  如何选择建站程序?包含哪些必备功能与类型?  小捣蛋自助建站系统:数据分析与安全设置双核驱动网站优化  建站之星云端配置指南:模板选择与SEO优化一键生成  织梦建站用windows服务器IIS实现301重定向方法_织梦CMS教程  如何用虚拟主机快速搭建网站?详细步骤解析  如何快速选择适合个人网站的云服务器配置?  织梦DEDECMS搜索提交用a便签替换button标签方法_织梦CMS教程 

 2018-10-28

了解您产品搜索量及市场趋势,制定营销计划

同行竞争及网站分析保障您的广告效果

点击免费数据支持

提交您的需求,1小时内享受我们的专业解答。

南京市珐之弘网络技术有限公司


南京市珐之弘网络技术有限公司

南京市珐之弘网络技术有限公司专注海外推广十年,是谷歌推广.Facebook广告全球合作伙伴,我们精英化的技术团队为企业提供谷歌海外推广+外贸网站建设+网站维护运营+Google SEO优化+社交营销为您提供一站式海外营销服务。

 87067657

 13565296790

 87067657@qq.com

Notice

We and selected third parties use cookies or similar technologies for technical purposes and, with your consent, for other purposes as specified in the cookie policy.
You can consent to the use of such technologies by closing this notice, by interacting with any link or button outside of this notice or by continuing to browse otherwise.