制作织梦模板channelartlist超强解析

很多新手站长不懂得使用DEDECMS模板自带的{dede:channelartlist}标签只能获取当前栏目的子栏目的内容列表,在首页模板中就是顶级栏目的内容列表,在做一些网站的时候就会出现一些缺陷。比如说我要在一个没有下级栏目的栏目中使用{dede:channelartlist}标签的话就不会获得任何内容。有时候我们发现网站在列表页和内容页不够充实的时候,又怕麻烦去手动添加一些内容列表(所添加的内容也就是最新、热门、推荐文档等这些全局标签),又不想去制作多个列表和内容页模板使其内容丰富起来,如果你非要做的话,其做法不过就是使用arclist标签读取一些指定栏目的内容,这种做法的缺点就是如果你要链接到你指定的栏目就要手动在HTML代码里写出来,不够机动。

如果有一个全局DEDE标签,能用于织梦模板的任意位置,随机列出指定数目的网站栏目及内容列表,那样就会使我们的网站内容更加丰富多彩了。

于是便自制了一个全局标签{dede:randomartlist}诞生了它可以在任意模板位置列出你指定数目(标签里的row参数)的随机栏目,并且这些只能非隐藏、文章模型、不是封面和外链的栏目(既此栏目会有实实在在的文章内容),且排除自身(如果用于栏目列表和文章内容显示页面)。不过如果你要在首页调用栏目内容列表的话还是推荐使用{dede:channelartlist}标签。

使用方法如下:

一、我们可以再任意DEDECMS模板的位置中切入标签:
{dede:randomartlist row=3}
<h3><a href="{dede:field name=‘typeurl‘/}" title="{dede:field name=‘typename‘/}">{dede:field name=‘typename‘/}</a></h3><span><a href="{dede:field name=‘typeurl‘/}">更多</a></span>
<ul>
{dede:arclist titlelen=40 row=‘8‘}
    <li><a href="[field:arcurl/]" title="[field:fulltitle/]">[field:title/]</a></li>
{/dede:arclist}
</ul>
{/dede:randomartlist}

标签唯一的一个参数row为要随机显示的栏目数目标签里面的内置html代码可以自行修改,里面的其他标签相信用过DEDE的都很熟悉,如果该标签没有内置模板的话(即用法为:{dede:randomartlist row=3}{/dede:randomartlist})将会使用{dede:channelartlist}标签的系统默认模板(模板目录/system/part_channelartlist.htm),因为这个标签我是从{dede:channelartlist}修改过来的,所以也就没有重新配置,建议大家都自己定义。

二、在 include/taglib目录里添加如下标签代码文件randomartlist.lib.php:

<?php
/**
* [全局]随机任意调用栏目内容列表,DEDE现有的channelartlist标签只能在首页调用顶级栏目和栏目页调用其子栏目列表
* 本标签是对channelartlist的修改,去除了它的上下文环境,标签可用于任意模板位置
* @author  Summer  2011.05.15  */

if(!defined(‘DEDEINC‘)) exit(‘Request Error!‘);
require_once(DEDEINC.‘/arc.partview.class.php‘);

function lib_randomartlist(&$ctag,&$refObj)
{
        global $dsql,$envs,$_sys_globals;

//处理标记属性、innertext
        $attlist = ‘typeid|0,row|10‘;
        FillAttsDefault($ctag->CAttribute->Items,$attlist);
        extract($ctag->CAttribute->Items, EXTR_SKIP);
        $innertext = trim($ctag->GetInnerText());
        if($innertext==‘‘) $innertext = GetSysTemplets(‘part_channelartlist.htm‘);
        $totalnum = $row;
        if(empty($totalnum)) $totalnum = 20;

//获得类别ID总数的信息
        $typeids = array();
        //只读取内容模型为文章的栏目[且栏目不是封面和外部链接,非隐藏栏目]
        $tpsql = "id<>".$_sys_globals[‘typeid‘]." AND ispart=0 And ishidden<>1 And channeltype=1";       
        $dsql->SetQuery("Select id,typename,typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath from `dede_arctype` where $tpsql order by rand() limit $totalnum");
        $dsql->Execute();
        while($row = $dsql->GetArray()) {
                $typeids[] = $row;
        }

if(!isset($typeids[0])) return ‘‘;

$artlist = ‘‘;
        $GLOBALS[‘itemindex‘] = 0;
        $GLOBALS[‘itemparity‘] = 1;
        for($i=0;isset($typeids[$i]);$i++)
        {                
                $GLOBALS[‘itemindex‘]++;
                $pv = new PartView($typeids[$i][‘id‘]);
                $pv->Fields[‘typeurl‘] = GetOneTypeUrlA($typeids[$i]);
                $pv->SetTemplet($innertext,‘string‘);
                $artlist .= $pv->GetResult();
                $GLOBALS[‘itemparity‘] = ($GLOBALS[‘itemparity‘]==1 ? 2 : 1);
        }
        //注销环境变量,以防止后续调用中被使用
        $GLOBALS[‘envs‘][‘typeid‘] = $_sys_globals[‘typeid‘];
        $GLOBALS[‘envs‘][‘reid‘] = ‘‘;
        return $artlist;
}
?>
其实这里我们也可以在织梦网站后台 -> 模板 -> 标签源码管理  
添加这个新的标签以后,我们就可以在dedecms网站模板的任意位置使用{dede:randomartlist}标签调用随机栏目了。哈哈! 是不是又学到了点东西啊!试试吧!

时间: 2024-10-05 04:23:14

制作织梦模板channelartlist超强解析的相关文章

织梦模板调用最新文章标签、推荐内容标签、热门文章标签、栏目标签

织梦模板调用最新文章标签.推荐内容标签.热门文章标签.栏目标签 <div> <!--最新文档-->    {dede:arclist row=10 titlelen=42}    <li><a href="[field:arcurl/]">[field:title/]</a></li>    {/dede:arclist}    <!--//最新文档--></div> 推荐内容标签调用:&l

机械节能产品生产企业网站织梦模板【dedecms模板】

模板名称:机械节能产品生产企业网站织梦模板模板介绍:页面简洁简单,容易管理,DEDE5.5内核以上都可以使用:附带测试数据! 模板特点:适合机械电子产品,电子科技类,机械网站类企业网站使用,简单便捷,易于管理,一款值得拥有的织梦网站模板.简洁美观大方的设计风格,图片展示效果绝佳.页面结构简单,利于SEO的优化,模板后台易于管理. 使用程序:织梦DEDECMS5.5以上版本都可以使用. 模板页面:index.htm 首页模板head.htm 头部模板footer.htm 底部模板article_a

大气智能家居家具装修装饰类企业通用网站织梦模板【dedecms模板】

模板名称:大气智能家居家具装修装饰类企业通用网站织梦模板模板介绍:织梦最新内核开发的模板,适合智能家居家具企业,也可以通用装修行业等企业使用,页面简洁简单,容易管理,DEDE5.5内核以上都可以使用:附带测试数据! 模板特点:1:智能家居家具展示公司模板,代码简洁,风格大气简单,页面干净.2:首页带炫酷的幻灯片,产品展示,新闻展示.3:网站内容都能在后台修改,后台简单易学.4:后台直接修改联系方式.地址.版权信息,网站内容等,修改更加方便. 使用程序:织梦DEDECMS5.5以上版本都可以使用.

磨矿球磨机类机械设备网站织梦模板(带手机端)

模板名称: 磨矿球磨机类机械设备网站织梦模板(带手机端)+PC+wap+利于SEO优化 模板介绍: 织梦最新内核开发的模板,该模板属于企业通用类.磨矿球磨机等机械产品站类企业都可使用, 这款模板使用范围极广,不仅仅局限于一类型的企业,你只需要把图片和产品内容 换成你的,颜色都可以修改,改完让你耳目一新的感觉! 自带最新的手机移动端,同一个后台,数据即时同步,简单适用! 原创设计.手工书写DIV+CSS, 完美兼容IE7+.Firefox.Chrome.360浏览器等:主流浏览器: 页面简洁简单,

织梦模板安装后不能显示css的解决办法

笔者下载了无数套模板,有带数据的,有不带数据的,有整套网站程序的,有只有模板文件的. 这么多模板中就只有一套只有模板文件的,能显示出"部分"css,主页上还有部分图片不能正常显示的. 前前后后花了十几天的精力总是有的.这可让笔者愁啊愁,愁到白了头. 程序员最重要的能力就是自学能力.那我就百度吧.我百度的问题是"织梦模板安装后不显示css样式",得到的答案总是css调用路径不对. 我想,难道模板的代码不正确?可是为什么人家网站上的演示是正常的? 我对着织梦官方的模板代

织梦模板开发 - 标签类型

模板开发帮助手册 http://help.dedecms.com/template/make/2012/0312/2299.html 模板就是混入其他东西的静态文本,混入东西叫做模板标签. 两种引擎 模板引擎分两种,解析式和编译式.弄得跟程序语言一样,所知道的是,解析式的程序语言比如一些脚本python.php,直接文本编辑器写出来,然后在解释器下就运行了.而比如c,程序编辑完之后,需要编译器下编译成二进制文件才能运行. 而这个模板套用相似的概念: 解析式模板就是将模板文本里的混入的模板标签,替

织梦模板安装方法

原文链接:http://www.moke8.com/dedecmsshipin/m65695/ 课时1-2:织梦dedecms程序安装教程 讲师:moke | 课程:织梦视频教程 各位同学大家好,欢迎来到魔客吧.今天我们给大家讲解织梦程序的安装方法以及织梦整站源码的安装,这里的织梦整站源码指的是使用织梦系统开发的网站,包含了演示图片和演示数据的整站织梦源码.为了方便新手,魔客吧里的织梦网站模板很多都是打包好的整站源码,虽然模板页面写有详细的安装说明,但还是有很多同学不懂怎么安装,安装好后由于自己

织梦dede:channelartlist 标签在列表页没法调用软件下载地址softlinks

dede:channelartlist 虽然比较好用,但只可嵌套dede:arclist 标签,如果dede:arclist 标签中还有{dede:link islocal='1' text='本地下载'} ,则没法解析.需要在列表页单独用dede:arclist 标签,而不可再嵌套在dede:channelartlist 标签之内.

dedecms织梦让channelartlist标签支持currentstyle属性

打开include\taglib\channelartlist.lib.php  大约93行 找到: $pv->Fields['typeurl'] = GetOneTypeUrlA($typeids[$i]); 在此下方增加: if($typeids[$i]['id'] == $refObj->TypeLink->TypeInfos['id'] || $typeids[$i]['id'] == $refObj->TypeLink->TypeInfos['topid'] ){