DeDeCms的专题相关信息bbs上相对较少,之前查阅了很多资料都未找到其解决方案
无柰只有靠自己动手丰衣足食;在官方的版本上有这样的一段话:
1、文章列表用ID1,ID2,ID3这样形式分开,系统会自动排除不同节点的相同文章;
2、9 ! 5 U h关于单条记录模板里的[field:field; b Gname /]标记的使用,请$ h t o Z i参考关于系统帮助关于 arclist 标记的说明;
3、节点ID是节点的唯一标识,允许? - R ^ & r {在专题模板中用{dede:specnote id='标识'/}这样来表示单个节点。
4、正常的{ c ; W o 8 K \情况下,每个节点显示的是“节点文章列表”里的文档,如果你指定为“自动获取模式”,那么必须指定关键字和栏目ID。
可是经测试{dede:{ o ( V s Y # e @specnote id='标识'/}这个并没有升] K / y 3效;因此开始解决这个,以替换掉原来比较死板{dede:field name='note'/}标签;
举例说明:
我要分两栏显示不同节点的文章,目前用"notb 9 9 Pe"就不能实现,只能是同一节7 Y a [ ^ o q 2点分栏,难免就显得有些捌扭,不够灵活。
下面我就把自己解决方案写下供同学们参考,首先得申明一点,只能是实现了功能,可算法不一定是最好的,因为我不太熟悉DEDECMS代码且没有认真的研究过,希望大家海涵!
步骤1:
文件位置:{include/inc_archives_view.php}
代码如下:
//广告标记
//--------\ Z i N L--8 B e 7 % v /-------------
else if($ctag->GetNameX x I p / ! 4 k I()=="myad"){
$this->dtp->& l g YAssign($tagid,x t $ D$this-o _ 7 \ c o i 3>PartView->GetMyAd($typeid,$ctag->GetAtt("name")));
}
// 专题标识
// by phpfans
else if($ctag->GetName()=="specnote"M w M \){
$this->dtp->Assign($tagid,$this->ChannelUnit->GetSpecList('',$thisL + \ q A->ChannelUnit-b I P V V W ^ Q>specrule,$ctag->GetAtt("id")));
}
介绍:T R y ) i{在广告标J d V 2 3记下增加专题标识}这样专题文章列表页就可以识别specnote标签了
步骤2:
文件位置:{include/inc_channel_unit.php}
var $specru6 . E ! ^le;
//-------------
//php5构造函数
//-------------
介绍:增加了对$pecrule变量的定义
步骤3:
文件位置:{include/inc_channel_unit.php}
代码如下:
elk ! s T z e \ jse if($ftype=="specialtopic"){
$this->specrule = $fvalue;
$fvalue = $this->GetSpecList($fname,$fvalue);
}
介绍:这6 * u ? ` I y儿增加了$this->specrule = $fvalue;这$ + b t ] \ N : f句,以便获取addonspec表的note字段数据;