返回列表 回复 发帖

修改dedecms程序以显示文章页面所在分类名称

2007年底的时候dedecms发布了5.0rc1版了,但是发现之前4.0版本里面的问题还继续存在

在文章模板和列表模板里面如果要调用当前类别是调不出来的,用自带的{dede:field name='position'/}标签只能取出"分类一>>分类二>>分类三>>"这种递归效果的类别,在有些时间并不需要将所有类别全部调出来,而只需要当前的类别,之前研究过,好象并没有太好的办法.............

既然没办法那就只能对他"动刀"啦

总共要修改3个文件
1.inc_typelink.php
找到
  1. //----------------------------------------------
  2. //获得某类目的链接列表 如:类目一>>类目二>> 这样的形式
  3. //islink 表示返回的列表是否带连接
  4. //----------------------------------------------
  5. function GetPositionLink($islink=true)
  6. {
  7. .....
  8. }
复制代码
这个函数,然后再这个函数下面再上
  1. //----------------------------------------------
  2. //获得某类目的当前链接列表 如:类目二>> 这样的形式
  3. //islink 表示返回的列表是否带连接
  4. //----------------------------------------------
  5. function GetCurrentPositionLink($islink=true)
  6. {

  7.   $this->valuePosition = $this->GetOneTypeLink($this->TypeInfos);
  8.   return $this->valuePosition;
  9.   
  10. }
复制代码
2.inc_arclist_view.php 解析文章内容列表
找到
  1. $this->Fields['id'] = $typeid;
  2. $this->Fields['position'] = $this->TypeLink->GetPositionLink(true);
复制代码
后面加上
  1. $this->Fields['current_position'] = $this->TypeLink->GetCurrentPositionLink(true);
复制代码
"'current_position'"自己定义一个标签啦,在模板里面就用这个来调用当前类别啦.

3.inc_archives_view.php 解析文章内容
找到
  1. $this->Fields['aid'] = $aid;
  2. $this->Fields['id'] = $aid;
  3. $this->Fields['position'] = $this->TypeLink->GetPositionLink(true);
  4. 后面加上
  5. $this->Fields['current_position'] = $this->TypeLink->GetCurrentPositionLink(true);
复制代码
OK啦,3个文件修改完毕.

在文章内容模板和列表模板中就可以用{dede:field name="current_position"/}调用当前分类名称啦
如果不需要链接的话,再稍微修改下就可以了
返回列表