您现在的位置是:首页 > cms教程 > DedeCMS教程DedeCMS教程
让dede织梦的channelartlist标签支持limit的实现方法
余梦茂2023-10-26DedeCMS教程已有人查阅
导读当使用 channelartlist标签 嵌套artlist 标签时,想要各个子栏目的样式不一样,或者指定调用某几个子栏目,比如调用当前栏目的第四个第八个栏目,使用row肯定不行
当使用 channelartlist标签 嵌套artlist 标签时,想要各个子栏目的样式不一样,或者指定调用某几个子栏目,比如调用当前栏目的第四个第八个栏目,使用row肯定不行,这时我们想到artlist支持limit调用,但是channelartlist不支持。
临时想个法子 在channelartlist加个limit标签;修改 \include\taglib\channelartlist.lib.php 文件标签代码如下
临时想个法子 在channelartlist加个limit标签;修改 \include\taglib\channelartlist.lib.php 文件标签代码如下
<?php if(!defined('DEDEINC')) exit('Request Error!');
/**
* 获取当前频道的下级栏目的内容列表标签
*
* @version $Id: channelartlist.lib.php 1 9:29 2010年7月6日Z tianya $
* @package DedeCMS.Taglib
* @copyright Copyright (c) 2007 - 2010, DesDev, Inc.
* @license http://help.dedecms.com/usersguide/license.html
* @link http://www.ebingou.cn
*/
/*>>dede>>
<name>频道文档</name>
<type>全局标记</type>
<for>V55,V56,V57</for>
<description>获取当前频道的下级栏目的内容列表标签</description>
<demo>
{dede:channelartlist row=6}
<dl>
<dt><a href='{dede:field name='typeurl'/}'>{dede:field name='typename'/}</a></dt>
<dd>
{dede:arclist titlelen='42' row='10'} <ul class='autod'>
<li><a href="[field:arcurl /]">[field:title /]</a></li>
<li>([field:pubdate function="MyDate('m-d',@me)"/])</li>
</ul>
{/dede:arclist}
</dl>
{/dede:channelartlist}
</demo>
<attributes>
<iterm>typeid:频道ID</iterm>
<iterm>row:获取的栏目返回值</iterm>
</attributes>
>>dede>>*/
require_once(DEDEINC.'/arc.partview.class.php');
function lib_channelartlist(&$ctag,&$refObj)
{
global $dsql,$envs,$_sys_globals;
//处理标记属性、innertext
$attlist = 'typeid|0,row|20,cacheid|,limit|,type|'; //这边加个limit变量 type 我是想实现 在子栏目下调用 同级子栏目的信息
FillAttsDefault($ctag->CAttribute->Items,$attlist);
extract($ctag->CAttribute->Items, EXTR_SKIP);
$innertext = trim($ctag->GetInnerText());
$artlist = '';
//读取固定的缓存块
$cacheid = trim($cacheid);
if($cacheid !='') {
$artlist = GetCacheBlock($cacheid);
if($artlist!='') return $artlist;
}
if(empty($typeid))
{
$typeid = ( !empty($refObj->TypeLink->TypeInfos['id']) ? $refObj->TypeLink->TypeInfos['id'] : 0 );
}
if($innertext=='') $innertext = GetSysTemplets('part_channelartlist.htm');
$totalnum = $row;
if(empty($totalnum)) $totalnum = 20;
//获得类别ID总数的信息
$typeids = array();
if($type=='reid') //2011.7.5 调用上级目录下的子栏目内容
{
$reid = $refObj->TypeLink->TypeInfos['reid'];
$tpsql = " reid='$reid' AND ispart<>2 AND ishidden<>1 ";
}
else if($typeid==0 || $typeid=='top') {
$tpsql = " reid=0 AND ispart<>2 AND ishidden<>1 AND channeltype>0 ";
}
else
{
if(!preg_match('#,#', $typeid)) {
$tpsql = " reid='$typeid' AND ispart<>2 AND ishidden<>1 ";
}
else {
$tpsql = " id IN($typeid) AND ispart<>2 AND ishidden<>1 ";
}
}
$limit = trim(preg_replace('#limit#is', '', $limit)); //增加limit标签
if($limit!='') $limitsql = " LIMIT $limit "; //如果limit为空就以 row变量的默认值 限制
else $limitsql = " LIMIT 0,$totalnum";
$dsql->SetQuery("SELECT id,typename,typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath
FROM `dede_arctype` WHERE $tpsql ORDER BY sortrank ASC $limitsql");
$dsql->Execute();
while($row = $dsql->GetArray()) {
$typeids[] = $row;
}
if(!isset($typeids[0])) return '';
$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'] = '';
if($cacheid !='') {
WriteCacheBlock($cacheid, $artlist);
}
return $artlist;
}
这样就可以实现了,在同一栏目分别调用
{dede:channelartlist limit='0,1'} 大栏目下 第一个子栏目
{dede:arclist row='6'}
{/dede:arclsit}
{/dede:channelartlist}
{dede:channelartlist limit='1,1'}大栏目下 第二个子栏目
{dede:arclist row='6'}
{/dede:arclsit}
{/dede:channelartlist} 上面就可以在一个模板中调用
如果在子栏目下 调用同级栏目的信息
{dede:channelartlist type='reid' limit='0,1'}
{dede:arclist row='6'}
{/dede:arclist}
{/dede:channelartlist}
本文标签:织梦cms标签
很赞哦! ()
相关教程
- dede织梦支付宝接口常见错误代码和解决方法介绍
- dede织梦采集图片不全怎么办
- dede织梦读取附加信息出错怎么办
- dede织梦采集文章只显示列表第一页的实现方法
- dede织梦出现Upload filetype not allow ! 的解决方法
- dede织梦tag Engine Create File False的原因和解决方法
- dede织梦tag标签修改自动提取字节数的方法
- dede织梦likearticle调用全站相关文章的方法
- dede织梦版权去除powered by dedecms的方法
- dede织梦上传不了缩略图“上传失败,请检查配置”的解决方法
- dede织梦后台登陆提示验证码错误怎么办
- dede织梦文章列表 “隔行换色” 的实现方法
图文教程
dedecms列表页栏目标题的优化修改方法
DEDE的默认认列表标题是:顶级栏目 / 一级栏目_网站标题,从这个默认的标题可以看出一级栏目并没有在前面,按照常见的说法是,越是在前面的东西
怎样更换dedecms网站的logo图标
Logo是一个网站的标志,新网站安装完成之后,很多朋友想的第一件事情就是把logo换掉。织梦dedecms默认后台是不能直接传logo上去的,织梦文件管理器中可以进行替换
dede织梦5.6默认模板首页(index.htm)中所有javascript作用解
有些新手朋友在刚开始做DedeCMS模板的时候,我相信很多人都会参照默认模板来进行修改或是制作。主要是参考里面的标签含义,但是近来有人在问我
dedecms织梦文章内容页图片显示怎么修改为绝对路径
织梦在v5.7版本中开启子域名或二级域名后,由于文章页面读取的是相对路径,所以导致图片显示出现问题。解决的方法很简单,下面帖出修改的路径:
相关源码
-
(PC+WAP)楼承板建筑工程合金钢铁材料pbootcms网站源码下载为楼承板生产商及建筑工程企业设计的响应式网站模板,采用PbootCMS内核开发,同步适配电脑与移动设备浏览。通过模块化结构展示工程案例、产品参数等专业内容,帮助建筑建材企业建立标准化数字展示平台,提升行业专业形象。查看源码 -
自适应LED照明外贸灯具灯泡灯具英文网站模板该外贸灯具网站模板专为LED照明、灯具出口企业定制,采用PbootCMS内核开发,提供高效建站方案。通过响应式设计和SEO优化能力,帮助企业低成本构建专业外贸展示平台。查看源码 -
帝国cms7.2淘宝客导购自媒体博客网站模板源码本模板基于帝国CMS7.2内核深度开发,为淘宝客、商品导购类自媒体及博客网站设计。通过可视化后台管理,可快速搭建具备商品推荐、比价功能的内容平台,帮助用户实现流量高效转化。查看源码 -
(自适应)互联网建站网络公司个人工作室网站模板基于PbootCMS内核开发,围绕「技术方案展示」「成功案例库」「服务流程说明」三大模块构建,支持PC与移动端数据实时同步。附带包含客户评价、行业解决方案的完整测试数据包查看源码 -
(自适应)绿色新闻生活百科资讯文章博客类网站pbootcms模板源码本模板基于PbootCMS开发,为生活百科、资讯文章和博客类网站设计。采用清新绿色系风格,提供舒适的阅读体验,同时适配PC和移动设备。适用于生活技巧分享、健康知识传播查看源码 -
自适应黑色建筑装饰设计公司个人工作室pbootcms模板基于PbootCMS内核开发的黑金风格模板,为建筑装饰、工程设计类企业打造,采用开源架构,支持跨行业快速适配,核心优势如下: 查看源码
| 分享笔记 (共有 篇笔记) |
