dedecms織夢tag keyword怎么調用相關文章?
DEDE官方的dede:likearticle是利用文章中輸入的關鍵詞或者自動分詞形成的關鍵詞來關聯文章,但是有時候自動生成的關鍵詞并不精確,造成關聯不準,這里我們通過自定義一個類庫文件來實現精準獲取相關文章
推薦學習:織夢cms
可以單用tag來調用相關文章,也可用tag+keyword來調用相關文章(默認tag優先于keyword,可以自己排序)
在 includetaglib 下添加一個liketags.lib.php 代碼如下
<?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|1,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!='') { 061 $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.arcrank>-1?and?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?=?"
rn”; ????????????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[‘namerule’],$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’]?=?““.$row[‘typename’].”“; ????????????????$row[‘image’]?=?“@@##@@”; ????????????????$row[‘imglink’]?=?““.$row[‘image’].”“; ????????????????$row[‘fulltitle’]?=?$row[‘title’]; ????????????????$row[‘title’]?=?cn_substr($row[‘title’],?$titlelen); ????????????????if($row[‘color’]!=”)?$row[‘title’]?=?““.$row[‘title’].”“; ????????????????if(preg_match(‘#b#’,?$row[‘flag’]))?$row[‘title’]?=?““.$row[‘title’].”“; ????????????????$row[‘textlink’]?=?““.$row[‘title’].”“; ????????????????$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().”rn”; ????????????} ????????????//if?hasRow ????????????else ????????????{ ????????????????$artlist?.=?”; ????????????} ????????????if($col>1)?$artlist?.=?”???? |
rn”; ????$dsql->FreeResult(“al”); ????return?$artlist; }
前臺模板調用
{dede:liketags?row='3'?mytypeid='6'?eregtype='all|tag|keyword'?titlelen='250'?infolen='250'}
@@##@@
[field:title/]
[field:description?/]
{/dede:liketags}
? 版權聲明
文章版權歸作者所有,未經允許請勿轉載。
THE END
喜歡就支持一下吧
相關推薦