织梦dedecms自定义标签liketags调用tag/keyword相同的相关文章_织梦CMS教程


我们在做织梦模板开发时,为了更好的利于seo,在每篇文章下调用与这篇文章有着相同tagkeyword的相关文章。为了实现这个功能,自定义了一个标签:dede:liketags。标签代码如下:

自定义标签代码

1、新建一个文件名称为 liketags.lib.php,存放在/include/taglib/目录下。 该文件代码如下:

<?php
     if(!defined('DEDEINC')) exit('Request Error!');
     function lib_liketags(&$ctag,&$refObj)
     {
         global $dsql;
         
         //属性处理
         $attlist="row|12,titlelen|30,infolen|250,col|1,tablewidth|100,mytypeid|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($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) && !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 `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");
                 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 limit 0, $row";
             }
             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'>\r\n";
         }
         $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>\r\n";
             for($j=0; $j < $col; $j++)
             {
                 if($col>1) $artlist .= "    <td width='$colWidth'>\r\n";
                 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(!preg_match("#^http:\/\/#i", $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' alt='".preg_replace("#['><]#","",$row['title'])."'>";
                     $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(preg_match('#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()."\r\n";
                 }
                 //if hasRow
                 else
                 {
                     $artlist .= '';
                 }
                 if($col>1) $artlist .= "    </td>\r\n";
             }
             //Loop Col
             if($col>1) $i += $col - 1;
             if($col>1) $artlist .= "    </tr>\r\n";
         }
         //loop line
         if($col>1) $artlist .= "    </table>\r\n";
         $dsql->FreeResult("al");
         return $artlist;
     }


前台模板调用代码如下:

    {dede:liketags row='3' mytypeid='6' eregtype='all|tag|keyword' titlelen='250' infolen='250'}
    <li>
    <a href="[field:arcurl/]" title="[field:title/]" target="_blank">
    <div class="list-img">
    <img src="[field:litpic/]" alt="[field:title/]"/>
    </div>
    <div class="list-info">
    <p class="title">[field:title/]</p>
    <p class="meta">[field:description /]</p>
    </div>
    </a>
    </li>
    {/dede:liketags}


# seo反向连接  # flags  # ceil  # orwheres  # 深圳龙华新区网站建设  # 南京网站建设重点  # 产品推广网站外链  # 怎么找家电货源网站推广  # 机电网站优化托管  # 红包推广营销语  # 玉兰油网站建设工程  # 营销推广的考核指标  # FillAttsDefault  # seo营销网站  # seo公司必选熊掌网络  # 温州网站建设策划方案  # 槐荫区360关键词排名优化  # 营销推广的*营销  # 自然风光网站建设  # seo的行业背景  # 海淀区网站建设出厂价格  # 矩阵营销推广预算怎么做  # 优化关键词排名找巧推网  # seo思维完整版  # 为了更好  # 织梦CMS教程  # 自定义标签  # 相关文章  # liketags  # 织梦标签  # 织梦自定义  # 宋体  # 自定义  # 放在  # 这篇文章  # 该文件  # 织梦dedecms自定义标签liketags调用tag/keyword相同的相关文章  # 新建一个  # 目录下  # Items  # empty  # extract  # EXTR  # SKIP  # revalue  # colWidth  # explode 


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


相关推荐: 建站三合一如何选?哪家性价比更高?  织梦调用自定义字段中的*张图片(含第二张第三张)_织梦CMS教程  帝国CMS统计今日文章数,昨日文章数,总文章数,会员数,*新会员_帝国CMS教程  织梦DEDECMS栏目后台设置隐藏,前台栏目如何显示_织梦CMS教程  宝塔Windows建站如何避免显示默认IIS页面?  香港服务器建站指南:外贸独立站搭建与跨境电商配置流程  如何在云虚拟主机上快速搭建个人网站?  如何快速生成专业多端适配建站电话?  织梦DEDECMS *一键登录插件返回空白解决方法_织梦CMS教程  dedecms织梦防止别人采集设置方法_织梦CMS教程  如何用虚拟主机快速搭建网站?详细步骤解析  建站之星模板选择与SEO优化指南:新手快速建站教程  建站主机选哪家性价比最高?  外链对网站权重的贡献值分析详解_SEO优化教程  广州顶尖建站服务:企业官网建设与SEO优化一体化方案  定制建站流程步骤详解:一站式方案设计与开发指南  建站助手软件包:智能网站模板生成与SEO优化工具一键整合  建站DNS解析失败?如何正确配置域名服务器?  网站内链优化的几个重要方法_SEO优化教程  织梦cms网站防止被黑被挂马教程_织梦CMS教程  织梦dedecms网站添加打赏功能_织梦CMS教程  建站助手数据库智能生成工具:高效建站与关键词优化方案  织梦未登录会员只能阅读文章的一部分教程_织梦CMS教程  建站之星如何通过成品分离优化网站效率?  如何快速上传自定义模板至建站之星?  建站之星如何实现网站加密操作?  织梦cms去掉网站首页后缀index.html方法_织梦CMS教程  香港服务器网站测试全流程:性能评估、SEO加载与移动适配优化  如何在阿里云虚拟主机上快速搭建个人网站?  织梦实现调用select下拉式友情链接列表_织梦CMS教程  如何高效完成自助建站业务培训?  织梦dedecms自定义表单发送到指定邮箱-用*、163邮箱发送邮件_织梦插件  如何正确下载安装西数主机建站助手?  织梦dedecms自定义输出移动版上一篇下一篇文章_织梦CMS教程  如何通过建站之星自助学习解决操作问题?  织梦去掉{dede:field.body/} 中的p元素_织梦CMS教程  如何通过wdcp面板快速创建网站?  织梦dedecms做到这几条安全设置,网站安全达到99%_织梦CMS教程  建站VPS能否同时实现高效与安全翻墙?  已有域名和空间如何搭建网站?  建站之星服务器如何实现独立IP配置?  如何通过FTP空间快速搭建安全高效网站?  定制建站是什么?如何实现个性化需求?  织梦相关专题的调用方法_织梦CMS教程  dedecms织梦描述description长度限制修改方法_织梦CMS教程  广东企业建站网站优化与SEO营销核心策略指南  织梦如何取消后台登陆验证码_织梦CMS教程  广德云建站网站建设方案与建站流程优化指南  新手站长如何简单搭建一个织梦网站_织梦CMS教程  已有域名和空间,如何快速搭建网站? 

 2017-08-27

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

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

点击免费数据支持

提交您的需求,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.