欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

dedecms在封面页将文章显示在所属副栏目

shiping1 的头像
在做项目的过程中,遇到了有的客户要添加文章副栏目,但是添加了副栏目之后文章只能在副栏目的列表页显示,不能在封面页显示,下面就是讲解如何将文章在副栏目显示

工具/原料

  • dedecms
  • Notepad++

方法/步骤

  1. 首先添加一篇文章,并选择副栏目,如下图所示

    dedecms在封面页将文章显示在所属副栏目
  2. 但是添加完成了之后,点击更改文章会发现,刚开始选得2个副栏目现在只剩下一个了,这是因为在添加文章的时候,dede本身对副栏目的typeid2做了处理,我们只需要将“include/helpers/archives.help.php”里面的“function GetIndexKey”下面的“$typeid2 = intval($typeid2);”给注释掉就可以了。

    dedecms在封面页将文章显示在所属副栏目
  3. 下面言归正传。如何在封面页将文章显示在副栏目当中呢:我们先看一下没有添加代码之前的效果:

    dedecms在封面页将文章显示在所属副栏目
  4. 下面再看一下添加之后的效果

    dedecms在封面页将文章显示在所属副栏目
  5. 呵呵,大家别怪我啰嗦啊,必须让大家看到效果对不,其实很简单的,只需要将下面代码“

     

     //判断副栏目存不存在     if($cfg_list_son=='Y')        {                $addSql  = " arc.arcrank > -1 ";            $typeid2like = " '%,{$typeid},%' ";            $TypeLink = new TypeLink($typeid);            $sonids = GetSonIds($typeid,$TypeLink->Fields['channeltype']);            if($cfg_need_typeid2=='Y'){                if($CrossID=='')                 {                    $addSql .= " AND ( (arc.typeid='".$typeid."') OR CONCAT(',', arc.typeid2, ',') LIKE $typeid2like) ";                } else {                    if($cfg_cross_sectypeid == 'Y')                    {                        $typeid2Clike = " '%,{$CrossID},%' ";                        $addSql .= " AND ( arc.typeid IN ({$sonids},{$CrossID}) OR CONCAT(',', arc.typeid2, ',') LIKE $typeid2like OR CONCAT(',', arc.typeid2, ',') LIKE $typeid2Clike) ";                    }                }                            }                        $query = "SELECT id FROM `#@__arctiny` arc WHERE {$addSql}";            $dsql->SetQuery($query);            $dsql->Execute();            while($arr=$dsql->GetArray())            {                $ids[] = $arr['id'];            }            $idstr = join(',',$ids);            if(!empty($idstr)){                $orwhere.= " OR arc.id in($idstr)";            }                    }

     

    放入到“include/taglib/arclist.lib.php”里面的“lib_arclistDone”方法当中,还得需要将“$cfg_list_son,$cfg_need_typeid2,$cfg_cross_sectypeid”放入到“global $dsql,$PubFields,$cfg_keyword_like,$cfg_index_cache,$_arclistEnv,$envs,$cfg_cache_type,$cfg_digg_update;”中;说白了就是声明一下全局变量。

    这样就搞定了,最主要的是你的dede要开启副栏目的功能


    来自 http://jingyan.baidu.com/article/eae07827ae92b91fec548517.html


普通分类: