Ⅰ 織夢 dedecms{dede:sql} 問題 在線等
試試:
select
*
from
dede_archives
order
by
id
desc
limit
0,9
這個就是取新聞列表的前9條。
如果是想分頁,試試dedecms的內置標簽:arcpagelist
示例如下:
名稱:arcpagelist
功能:通過制定arclist的pagesize及tagid屬性,配合arcpagelist標簽進行內容當前分頁中顯示,DedeCMS
5.8中將取消這個標簽的使用
<ul class="c1 ico2">
{dede:arclist flag='c' titlelen=42 row='16' tagid='dedecms' pagesize='8'}
<li><a href="[field:arcurl/]">[field:title/]</a></li>{/dede:arclist}
</ul>
<div>{dede:arcpagelist tagid='dedecms'/}</div>
文件:
\include\taglib\arcpagelist.lib.php
lib_arcpagelist(&$ctag,
&$refObj)
默認底層模板:
無
參數:
tagid=''
對應arclist的標簽名稱
底層欄位:
無
更多內容請網路:arcpagelist
Ⅱ 織夢dede:sql語句在內容頁調用列表時怎麼分頁
我們可以另外嵌入一個類似{dede:listsql sql='select * from wp_posts' pagesize='10'}的標簽來使用。
OK,思路已經有了,接下來我們打開include/arc.listview.class.php這個文件來給它動個小手術吧!
找到:
if(!is_object($ctag)) { $ctag = $this->dtp->GetTag("list"); }
這一段,在其後添加如下代碼:
if(!is_object($ctag)) { $ctag = $this->dtp->GetTag("listsql"); if (is_object($ctag)) { $cquery = $ctag->GetAtt("sql"); $cquery = preg_replace("/SELECT(.*?)FROM/is", " SELECT count(*) as dd FROM ", $cquery); $cquery = preg_replace("/ORDER(.*?)SC/is", "", $cquery); $row = $this->dsql->GetOne($cquery); if(is_array($row)) { $this->TotalResult = $row['dd']; } else { $this->TotalResult = 0; } } } //end
然後找到:
if($ctag->GetName()=="list") { $limitstart = ($this->PageNo-1) * $this->PageSize; $row = $this->PageSize; if(trim($ctag->GetInnerText())=="") { $InnerText = GetSysTemplets("list_fulllist.htm"); } else { $InnerText = trim($ctag->GetInnerText()); } $this->dtp->Assign($tagid, $this->GetArcList( $limitstart, $row, $ctag->GetAtt("col"), $ctag->GetAtt("titlelen"), $ctag->GetAtt("infolen"), $ctag->GetAtt("imgwidth"), $ctag->GetAtt("imgheight"), $ctag->GetAtt("listtype"), $ctag->GetAtt("orderby"), $InnerText, $ctag->GetAtt("tablewidth"), $ismake, $ctag->GetAtt("orderway") ) ); }
這一段,在其後添加如下代碼:
else if($ctag->GetName()=="listsql") { $limitstart = ($this->PageNo-1) * $this->PageSize; $row = $this->PageSize; if(trim($ctag->GetInnerText())=="") { $InnerText = GetSysTemplets("list_fulllist.htm"); } else { $InnerText = trim($ctag->GetInnerText()); } $this->dtp->Assign($tagid, $this->GetSqlList( $limitstart, $row, $ctag->GetAtt("sql"), $InnerText ) ); } //end
最後找到function GetArcList這個方法,在其後添加一個可以通過傳入sql參數獲取指定數據源的方法,代碼如下:
/** * 通過listsql標簽中sql屬性傳入的參數來獲得一個單列的文檔列表 * */ function GetSqlList($limitstart = 0, $row = 10, $sql = '', $innertext){ global $cfg_list_son; $innertext = trim($innertext); if ($innertext == '') { $innertext = GetSysTemplets('list_fulllist.htm'); } //處理SQL語句 $limitStr = " LIMIT {$limitstart},{$row}"; $this->dsql->SetQuery($sql . $limitStr); $this->dsql->Execute('al'); $t2 = ExecTime(); //echo $t2-$t1; $sqllist = ''; $this->dtp2->LoadSource($innertext); $GLOBALS['autoindex'] = 0; //獲取欄位 while($row = $this->dsql->GetArray("al")) { $GLOBALS['autoindex']++; if(is_array($this->dtp2->CTags)) { foreach($this->dtp2->CTags as $k=>$ctag) { if($ctag->GetName()=='array') { //傳遞整個數組,在runphp模式中有特殊作用 $this->dtp2->Assign($k,$row); } else { if(isset($row[$ctag->GetName()])) { $this->dtp2->Assign($k,$row[$ctag->GetName()]); } else { $this->dtp2->Assign($k,''); } } } } $sqllist .= $this->dtp2->GetResult(); }//while $t3 = ExecTime(); //echo ($t3-$t2); $this->dsql->FreeResult('al'); return $sqllist; } //end
總共就添加三段代碼,每一段代碼基本都參考它緊接著的上面那段原始代碼,而無需改變它原來任何一個地方的代碼,應該算是比較完美的手術了,接下來在模板文件中的使用方法就跟一開始思路中所提到的那樣,分頁標簽依舊沿用原來的,調用範例:
{dede:listsql sql='select ID,post_title from wp_posts' pagesize='10'} <li><a href="http://ys21426.blog.163.com/[field:ID /].html">[field:post_title /]</a></li> {/dede:listsql} <!--分頁--> {dede:pagelist listsize='2' listitem='index pre pageno next end '/}
Ⅲ 織夢dede中的sql標簽查詢結果怎麼分頁
這個我也在糾結,不過聽說可以修改一下SQL的標簽類來解決,就是在SQL的標簽里添加分頁類,網上也有介紹,但沒製作成功,希望精通PHP的朋友改造一下。
Ⅳ 織夢搭建博客,首頁不能分頁怎麼解決
織夢DEDECMS模板網站首頁如何實現首頁分頁和翻頁
方法如下:(三種方法,自己選擇一種來實現分頁吧)
第一種:調用ajax和參數的(不推薦)1、必須在DEDE首頁模板中的<head></head>中引入(詳細看你的默認模板)
<script language="javascript" type="text/javascript" src="{dede:global.cfg_cmsurl/}/include/dedeajax2.js"></script>
<script language="javascript" type="text/javascript" src="{dede:global.cfg_cmsurl/}/include/dedeajax2.js"></script>
2、必須加入
<script>
function multi(pagenum,tagid) { var taget_obj = document.getElementById(tagid); var taget_obj_page = document.getElementById("page_"+tagid); myajax = new DedeAjax(taget_obj,false,false,'','',''); myajax.SendGet2("/plus/arcmulti.php?mtype=0&pnum="+pagenum+'&tagid='+tagid); myajax = new DedeAjax(taget_obj_page,false,false,'','',''); myajax.SendGet2("/plus/arcmulti.php?mtype=1&pnum="+pagenum+'&tagid='+tagid); DedeXHTTP = null; } </script>
3.在arclist標簽中必須含有tagid與pagesize參數。 第一個是緩存名,第二個是單頁條數。
{dede:arclist tagid='index' pagesize='5'} <li><b><a href="[field:arcurl/]" style="color: #FF6633">[field:title/]</a></b></li> <p class="my_tj_info">[field:info/]...</p> {/dede:arclist} 本文來自織夢模板團
4、必須存在arcpagelist標簽,且必須聲明緩存參數tagid且緩存參數與arclist中tagid保持一致
{dede:arcpagelist tagid='index'/}
此方法的優缺點:優點:可以很方便的在首頁進行索引全站最新更新文檔。缺點:是ajax調用的,所以沒有辦法索引第二頁後面的內容。也就是你的分頁超過2頁,第三頁就沒辦法索引,所以放棄了此方法。很不推薦
第二種:交叉欄目ID 實現dedecms首頁分頁(比較簡單,不是很推薦)1、首先你在後台新建一個"首頁"的的欄目
2、設置首頁欄目
3、模板就直接用列表模板就可以了,如果你技術好的話,可以設計成自己想要的模板。
4、主要注意幾點:(1)交叉的id只能寫最後一級的欄目id,就是你文章的隸屬欄目id;(2)更新不能用首頁更新要用 更新欄目HTML 首頁鏈接地址還是不變。
5、可以實現了。
第三種方法:自由列表實現dedecms首頁分頁。(推薦)1、進入後台 核心---》頻道模型--》自由列表管理---》添加列表。2、就是定義自由列表:(註:我們是為了首頁分頁所以列表HTML必須存放目錄否則無法顯示,所以只保留{cmspath})
用此方法實現首頁分頁,模板只能用首頁模板。也就是說後台中的更新首頁HTML功能就廢了,以後一鍵生成網站以後要到自由列表中去生成一次。否則網站首頁為空白。
不過用dedecms自由列表功能來實現首頁分頁有個麻煩的問題,就每次生成之前都要更改一次<不使用默認首頁>當然這里對於其他地方需要自由列表影響不大,但是我們要是用自由列表實現首頁分頁就麻煩了。解決方法如下:打開Dede(默認後台管理目錄)目錄下的makehtml_freelist_action.php (創建自由列表)找到
$dsql->ExecuteNoneQuery("Update `dede_freelist` set nodefault='1' where aid='$startid';");找到上面代碼行,在前面加上// 注釋掉就可以了。
模板居織夢模板
為您解答
祝你成功
望採納