讓dede的channelartlist標簽支持limit,織夢教程
導讀:織夢教程織夢教程當使用 channelartlist標簽 嵌套artlist 標簽時,想要各個子欄目的樣式不一樣,或者指定調用某幾個子欄目,比如調用當前欄目的第四個第八個欄目,dede模板堂織夢手機模板。
當使用 channelartlist標簽 嵌套artlist 標簽時,想要各個子欄目的樣式不一樣,或者指定調用某幾個子欄目,比如調用當前欄目的第四個第八個欄目,使用row肯定不行,這時我們想到artlist支持limit調用,但是channelartlist不支持。
臨時想個法子 在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 - 2手機模板dede010, DesDev, Inc. * @license http://help.dedecms.com/usersguide/license.html * @link http://www.dedecms.com */ /*>>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; }
聲明: 本文由我的SEOUC技術文章主頁發布于:2023-07-22 ,文章讓dede的channelartlist標簽支持limit,織夢教程主要講述標簽,標題,織夢網站建設源碼以及服務器配置搭建相關技術文章。轉載請保留鏈接: http://www.bifwcx.com/article/web_33639.html