织梦通过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移动版伪静态实现与PC电脑版静态地址url一致教程_织梦插件  如何通过网站建站时间优化SEO与用户体验?  建站之星技术支持如何修改模板?  dedecms织梦*内容页插件_织梦插件  织梦手机站内容页图片自适应去除style样式标签_织梦CMS教程  PHPCMS v9安全设置防止网站被黑_PHPCMS教程  定制建站流程步骤详解:一站式方案设计与开发指南  宝塔面板如何快速创建新站点?  织梦调用上一篇下一篇以及样式修改_织梦CMS教程  如何快速搭建虚拟主机网站?新手必看指南  建站助手开启FTP配置教程:服务器管理与站点搭建步骤解析  织梦系统后台采集规则与替换规则_织梦CMS教程  dedecms织梦文章列表页随机放入广告的方法_织梦CMS教程  织梦dedecms栏目列表页单独调用页码数 _织梦CMS教程  织梦dedecms实现文章上传图片自动添加alt属性的教程_织梦CMS教程  如何快速使用云服务器搭建个人网站?  dedecms织梦ueditor百度编辑器整合七牛云支持支持图集_织梦插件  如何通过远程VPS快速搭建个人网站?  织梦添加自定义字段为图片出现Fatal error: Call to a member function GetInnerText()错误解决方法_织梦CMS教程  dedecms织梦自带采集插件详细图文教程_织梦CMS教程  织梦网页中禁止鼠标右键各种经典代码_织梦CMS教程  织梦网站SEO优化之标题过长被截断解决方法_SEO优化教程  实现虚拟支付需哪些建站技术支撑?  如何零成本快速生成个人自助网站?  平台云上自主建站:模板化设计与智能工具打造高效网站  建站之星配置系统操作指南与功能解析  建站之星如何实现网站加密操作?  DEDECMS织梦网站实现利用键盘上下翻页效果_织梦CMS教程  织梦会员中心*一键登录2.0 FOR V55 V56 V57免费插件_织梦插件  织梦标签不能嵌套的2种解决方法_织梦CMS教程  织梦DEDECMS5.7实现联动筛选(支持多条件多级选项)_织梦插件  如何在景安云服务器上绑定域名并配置虚拟主机?  织梦dedecms列表页实现无限加载的教程_织梦CMS教程  织梦dedecms用火车头采集分页教程 _织梦CMS教程  织梦dedecms会员中心调用出需要的循环文档_织梦CMS教程  帝国CMS商城系统使用常见问题_帝国CMS教程  织梦列表页如何调用好评差评_织梦CMS教程  如何构建满足综合性能需求的优质建站方案?  织梦自定义模型*搜索字段不显示链接地址不能调用解决方法_织梦CMS教程  织梦dedecms5.7首页分页插件下载_织梦插件  香港服务器WordPress建站指南:SEO优化与高效部署策略  如何高效配置香港服务器实现快速建站?  建站DNS解析失败?如何正确配置域名服务器?  阿里云提示织梦后台文件media_add.php任意上传漏洞解决办法 _织梦CMS教程  网站*自定义分享代码,可以自定义分享图片标题描述(支持https)_织梦CMS教程  织梦dedecms副栏目名称和链接调用_织梦CMS教程  PHPCMS栏目页如何绑定二级域名?_PHPCMS教程  *服务器网站为何频现安全漏洞?  如何快速搭建响应式可视化网站?  dedecms织梦文章按年月日进行归档_织梦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.