客服①点击这里给我发消息客服②点击这里给我发消息
网站建设、网络营销、托管——剑锋所指,所向披靡 (微信:it2168)
西安剑锋网络
当前位置: 主页 > 行业新闻 > IT技术 >

dedecms织梦让likearticle的mytypeid支持多个栏目和子栏目

在使用dede:likearticle时,如果你想获取多个指定栏目下的相关文章,而刚好这个多个栏目下还有子栏目时,官方的程序不能满足你的需求,你需要改一下

打开 \include\taglib\likearticle.lib.php 找到
 

if( !empty($typeid) && !preg_match('#,#', $typeid) ) {
	$typeid = GetSonIds($typeid);
}

在它下面加入

PHP
else
{
	$typeids = explode(',', $typeid);
	foreach($typeids as $ttid) {
		$typeidss[] = GetSonIds($ttid);
	}
	$typeidStr = join(',', $typeidss);
	$typeidss = explode(',', $typeidStr);
	$typeidssok = array_unique($typeidss);
	$typeid = join(',', $typeidssok);
}

模板标签写法

{dede:likearticle row='10' col='' titlelen='150' infolen='250' mytypeid='10,12,14'}
<li><a href="[field:arcurl/]">[field:title/]</a></li>
{/dede:likearticle}

完成。

其他相关文章调用:西安做网站

一、根据栏目名称调用随机文档
 
在栏目页,如果栏目名称为“智能手机”,那么如果整站其他栏目里面含有“智能手机”这个关键词的文章都给调出来。方法如下 做个记号 以待后用。
将以下代码 复制到  include文件夹下的 common.func.php 里
function list_keyword($typename) 
 { 
     $tsql = new DedeSql(false); 
     $typename = ''; 
 
     $tsql->SetQuery("Select id,title From dede_archives  where keywords like '%$typename%'"); 
 
     $tsql->Execute('t'); 
 
     while($row = $tsql->GetArray('t',MYSQL_ASSOC)){
  $g=GetOneArchive($row['id']);
  $typename .= "<a href=".$g['arcurl'].">".$g['arctitle']."</a> ";
 
     } 
 
     return $typename; 
}
 
然后再栏目页模板里使用 {dede:field.typename function="list_keyword(@me)"/} 就可以了 经测试 5.6完全可用。
 
 
二、根据栏目关键词调用相关文档
 1、修改源文件 likearticle.lib.php
 
 注释的就是源代码,注释掉,修改为下面的代码,做个判断 ,不影响原来的
//$typeid = " AND arc.typeid IN($typeid) AND arc.id<>$arcid ";
 if($arcid){ $typeid = " AND arc.typeid IN($typeid) AND arc.id<>$arcid ";}
 else{$typeid = " AND arc.typeid IN($typeid)  ";}
 
//$typeid = " arc.typeid IN($typeid) AND arc.id<>$arcid ";
if($arcid){ $typeid = " arc.typeid IN($typeid) AND arc.id<>$arcid ";}
else{$typeid = " arc.typeid IN($typeid)";}