修改dede源码,在任一子级栏目获取顶级栏目名称 typename,包括该顶级栏目下的文章页

找到 include/taglib/type.lib.php , 复制,  重命名为 toptype.lib.php

查找 function lib_type(&$ctag,&$refObj)

修改为:

function lib_toptype(&$ctag,&$refObj)

查找 $row = $dsql->GetOne

注释掉 //$row = $dsql->GetOne("Select id,topid,description,typename,typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath,typelitpic From `#@__arctype` where id='$typeid' ");

添加3行:

$topid=$dsql->GetOne("Select topid From `#@__arctype` where id='$typeid' ");
$topid=$topid['topid'];
$row=$dsql->GetOne("Select id,topid,description,typename,typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath,typelitpic From `#@__arctype` where id='$topid' ");

模板调用: {dede:toptype}[field:typename/]{/dede:toptype}

修改后的toptype.lib.php

<?php

if(!defined('DEDEINC')) exit('Request Error!');

function lib_toptype(&$ctag,&$refObj)
{
	global $dsql,$envs;

	$attlist='typeid|0';
	FillAttsDefault($ctag->CAttribute->Items,$attlist);
	extract($ctag->CAttribute->Items, EXTR_SKIP);
	$innertext = trim($ctag->GetInnerText());

	if($typeid==0) {
		$typeid = ( isset($refObj->TypeLink->TypeInfos['id']) ? $refObj->TypeLink->TypeInfos['id'] : $envs['typeid'] );
	}

  if(empty($typeid)) return '';

	//$row = $dsql->GetOne("Select id,topid,description,typename,typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath,typelitpic From `#@__arctype` where id='$typeid' ");

	$topid=$dsql->GetOne("Select topid From `#@__arctype` where id='$typeid' ");
	$topid=$topid['topid'];
	$row=$dsql->GetOne("Select id,topid,description,typename,typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath,typelitpic From `#@__arctype` where id='$topid' ");
	
	if(!is_array($row)) return '';
	if($row['topid']==0){$row['topid']=$row['id'];}
	if(trim($innertext)=='') $innertext = GetSysTemplets("part_type_list.htm");
	
	$dtp = new DedeTagParse();
	$dtp->SetNameSpace('field','[',']');
	$dtp->LoadSource($innertext);
	if(!is_array($dtp->CTags))
	{
		unset($dtp);
		return '';
	}
	else
	{
		$row['typelink'] = $row['typeurl'] = GetOneTypeUrlA($row);
		foreach($dtp->CTags as $tagid=>$ctag)
		{
			if(isset($row[$ctag->GetName()])) $dtp->Assign($tagid,$row[$ctag->GetName()]);
		}
		$revalue = $dtp->GetResult();
		unset($dtp);
		return $revalue;
	}
}
?>

如果想获取任一栏目的上级栏目,可将topid---->改为--->reid,最后记得改函数名和文件名

retype.lib.php

<?php

if(!defined('DEDEINC')) exit('Request Error!');

function lib_retype(&$ctag,&$refObj)
{
	global $dsql,$envs;

	$attlist='typeid|0';
	FillAttsDefault($ctag->CAttribute->Items,$attlist);
	extract($ctag->CAttribute->Items, EXTR_SKIP);
	$innertext = trim($ctag->GetInnerText());

	if($typeid==0) {
		$typeid = ( isset($refObj->TypeLink->TypeInfos['id']) ? $refObj->TypeLink->TypeInfos['id'] : $envs['typeid'] );
	}

  if(empty($typeid)) return '';

	//$row = $dsql->GetOne("Select id,topid,description,typename,typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath,typelitpic From `#@__arctype` where id='$typeid' ");

	$reid=$dsql->GetOne("Select reid From `#@__arctype` where id='$typeid' ");
	$reid=$reid['reid'];
	$row=$dsql->GetOne("Select id,reid,description,typename,typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath,typelitpic From `#@__arctype` where id='$reid' ");
	
	if(!is_array($row)) return '';
	if($row['reid']==0){$row['reid']=$row['id'];}
	if(trim($innertext)=='') $innertext = GetSysTemplets("part_type_list.htm");
	
	$dtp = new DedeTagParse();
	$dtp->SetNameSpace('field','[',']');
	$dtp->LoadSource($innertext);
	if(!is_array($dtp->CTags))
	{
		unset($dtp);
		return '';
	}
	else
	{
		$row['typelink'] = $row['typeurl'] = GetOneTypeUrlA($row);
		foreach($dtp->CTags as $tagid=>$ctag)
		{
			if(isset($row[$ctag->GetName()])) $dtp->Assign($tagid,$row[$ctag->GetName()]);
		}
		$revalue = $dtp->GetResult();
		unset($dtp);
		return $revalue;
	}
}
?>

  模板调用: {dede:retype}[field:typename/]{/dede:retype}

织梦DEDECMS文章、栏目页获取当前页面顶级栏目名称的方法

http://www.jiemou.com/DeDeJiaocheng/7.html

你可能感兴趣的:(typename,修改dede源码,在任子级栏目获取顶级栏目名称)