一、调用*栏目的栏目信息
include\taglib下 建立type2.lib.php文件放入以下代码
<?php /* vim: set expandtab tabstop=4 shiftwidth=4: */ // +----------------------------------------------------------------------+ // | PHP version 5 | // +----------------------------------------------------------------------+ // | Copyright (c) 1997-2004 The PHP Group | // +----------------------------------------------------------------------+ // | This source file is subject to version 3.0 of the PHP license, | // | that is bundled with this package in the file LICENSE, and is | // | available through the world-wide-web at the following url: | // | http://www.php.net/license/3_0.txt. | // | If you did not receive a copy of the PHP license and are unable to | // | obtain it through the world-wide-web, please send a note to | // | license@php.net so we can mail you a copy immediately. | // +----------------------------------------------------------------------+ // | Authors: Original Author <author@example.com> | // | Your Name <you@example.com> | // +----------------------------------------------------------------------+ // // $Id:$ if (!defined('DEDEINC')) exit('Request Error!'); function lib_type2(&$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['topid']) ? $refObj->TypeLink->TypeInfos['topid'] : $envs['typeid']); //echo "ssssssssss1".$refObj->TypeLink->TypeInfos['topid']; //echo "ssssssssss2".$envs['typeid']; exit; } //echo "typeid:".$typeid; exit; //lyy 如果topid==0 就是*分类,取当前记录 if($refObj->TypeLink->TypeInfos['topid']==0){ $typeid=$refObj->TypeLink->TypeInfos['id']; } //echo "typeid:".$typeid; exit; if (empty($typeid)) return ''; $row = $dsql->GetOne("SELECT id,typename,typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath FROM `#@__arctype` WHERE id='$typeid'"); if (!is_array($row)) return ''; 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 { //lyy 以下getTypeUrl($row[topid]错的,换成 $row['id'] echo $row['id']."sssss";exit; $row['typelink'] = GetTypeUrl($row['id'], MfTypedir($row['typedir']) , $row['isdefault'], $row['defaultname'], $row['ispart'], $row['namerule2'], $row['siteurl'], $row['sitepath']); //print_r($row);exit; 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:type2} {/dede:type2}来调用*栏目的栏目id名称链接等
二、调用父级栏目名称
打开include/taglib/type.lib.php 找到
$row['typelink'] = $row['typeurl'] = GetOneTypeUrlA($row);
在其下面增加以下代码
$row['parent_name'] = ''; $row2= $dsql->GetOne("select topid from dao_arctype where id ='".$row['id']."'"); $row['topid'] = $row2['topid']; if($row['topid']){ $row1 = $dsql->GetOne("select typename as parent_name from dao_arctype where id ='".$row['topid']."'"); $row['parent_name'] = $row1['parent_name']; } else $row['parent_name'] = $row['typename']; //如果时*栏目,就显示为该栏目名称
前台模板那调用方法
<!--如果是内容页模板,可以不用指定typeid,直接调用--> {dede:type}[field:parent_name/]{/dede:type} <!--在首页或者列表页模板,可指定typeid调用--> {dede:type typeid='1'}[field:parent_name/]{/dede:type}
三、开启文章副栏目
打开include\taglib\arclist.lib.php
将下面代码注释掉的查找到,替换为下面的
//if($CrossID=='') $orwheres[] = ' arc.typeid IN ('.GetSonIds($typeid).')'; //else $orwheres[] = ' arc.typeid IN ('.GetSonIds($typeid).','.$CrossID.')'; if($CrossID=='') $orwheres[] = ' (arc.typeid in ('.GetSonIds($typeid).') or FIND_IN_SET(\''.GetSonIds($typeid).'\',arc.typeid2)>0)'; else $orwheres[] = $orwheres[] = ' (arc.typeid in (\''.GetSonIds($typeid).'\','.$CrossID.') or FIND_IN_SET('.GetSonIds($typeid).','.$CrossID.',arc.typeid2))';
副栏目前台可以显示,但后台不显示
四、开启文章页当前栏目和链接
打开/include/arc.archives.class.php 搜索//设置全局环境变量 在下面增加2行
//设置全局环境变量 $this->Fields[ 'typename' ] = $this->TypeLink->TypeInfos[ 'typename' ]; $this->Fields['typelink'] = $this->TypeLink->GetOneTypeLink($this->TypeLink->TypeInfos); $this->Fields['typeurl'] = $this->TypeLink->GetOneTypeUrl($this->TypeLink->TypeInfos);
然后再文章里面如果调用链接和名字的话就写
带链接的栏目名称:{dede:field.typelink/} ,如:<a href="栏目链接地址">栏目名称</a> 只要链接就是{dede:field.typeurl/} ,如:<a href="{dede:field.typeurl/}">{dede:field.typename/}</a>
参考内容:http://www.xhcss.com/xh/dedecms/jiaocheng/121.html