• [织梦吧]唯一域名:www.dedecms8.com,织梦DedeCMS学习平台.

当前位置: > DedeCMS教程 > DedeCMS安装使用 >

织梦(DedeCms)调用上级栏目(父类)文章的方法(附代码)

来源: www.dedecms8.com 编辑:织梦吧 时间:2012-06-14点击:

DedeCms是比较知名的国产CMS,而且免费开源,在站长界有着很多的拥护者,尤其它的简单易用更是给一些想建站的朋友降低了门槛。织梦的模板框架是他们自己开发,总体来说还是不错的,很容易上手。今天团队的一个站需要在内容页调用父类下的所有内容(就是当前栏目平行栏目),大概翻了下,DEDE默认是没有这个功能的,只好自己动手了,当时因为手头有其他工作所以就直接在模板文件中实现了,晚上回来整理了下,把其他的方法也列出来。
1.模板标签({dede:type})中嵌套php代码
直接修改要调用的模板文件,在调用位置填写以下代码(请根据自身情况调整html标记)

  {dede:type}
    [field:id runphp="yes"]
    global $cfg_Cs, $dsql;
    $tids = GetSonIds($cfg_Cs[@me][0]);
    if ('' != $tids) {
        $sql = 'SELECT arc.*,tp.typedir,tp.typename,tp.corank,tp.isdefault,tp.defaultname,tp.namerule,tp.namerule2,tp.ispart,tp.moresite,tp.siteurl,tp.sitepath FROM `dede_archives` AS arc LEFT JOIN `dede_arctype` tp ON arc.typeid=tp.id WHERE arc.arcrank>=0 AND arc.typeid IN (' . $tids . ') ORDER BY RAND() LIMIT 0,12' ;
        $dsql->Execute('me', $sql);
        $s = '';
        while ($row = $dsql->GetArray('me')) {
            $s .= '<li><span>' . MyDate('m-d',$row['pubdate']) . '</span> <a href="' . GetFileUrl($row['id'], $row['typeid'], $row['senddate'], $row['title'], $row['ismake'], $row['arcrank'], $row['namerule'], $row['typedir'], $row['money'], $row['filename'], $row['moresite'], $row['siteurl'], $row['sitepath']) . '" title="' . $row['title'] . '">' . ('' == $row['shorttitle'] ? $row['title'] : $row['shorttitle']) . '</a></li>';
        }
        @me = $s;
    } else {
        @me = '';
    }
    [/field:id]
{/dede:type}

2.修改默认arclist标签让其支持此功能

该标签的文件在“/include/taglib/arclist.lib.php”,用任意文本编辑将其打开,查找“//指定了getall属性或主页模板例外”这句注释内容,在其下面插入代码,并把紧邻的“if”关键字改成“elseif”,代码如下:

  //指定了多个栏目时,不再获取子类的id
if ('parent' == $typeid)
{
    $typeid = GetSonIds($envs['reid'], 0, 0);
    $orwheres[] = ' arc.typeid in (' . ('' == $typeid ? '0' : $typeid) . ') ';
}
elseif( ereg(',', $typeid) )
{
    //指定了getall属性或主页模板例外
    if($getall==1 || empty($refObj->Fields['typeid']))
    {
        $typeids = explode(',', $typeid);
        foreach($typeids as $ttid) {
            $typeidss[] = GetSonIds($ttid);
        }
        $typeidStr = join(',', $typeidss);
        $typeidss = explode(',', $typeidStr);
        $typeidssok = array_unique($typeidss);
        $typeid = join(',', $typeidssok);
    }
    $orwheres[] = " arc.typeid in ($typeid) ";
}

3.添加自定义模板标签“{dede:parentlist}”

标签:

About D8

  • ©2014 织梦吧(d8) DedeCMS学习交流平台
  • 唯一网址 www.DedeCMS8.com 网站地图
  • 联系我们 1978130638@qq.com ,  QQ