国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

織夢模板用{dede:sql}標(biāo)簽如何實現(xiàn)分頁的示例代碼

這篇具有很好參考價值的文章主要介紹了織夢模板用{dede:sql}標(biāo)簽如何實現(xiàn)分頁的示例代碼。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

近研究了一下織夢CMS系統(tǒng),看到一篇關(guān)于sql標(biāo)簽調(diào)用數(shù)據(jù)列表如何翻頁的文章,感覺不錯,貼出來大家分享一下。相信很多使用dedecms的朋友在網(wǎng)上查找關(guān)于dede:sql標(biāo)簽進行分頁的解決方案時都不盡如人意,尤其是在列表頁使用dede:sql調(diào)用外部數(shù)據(jù)(所謂調(diào)用外部數(shù)據(jù)就是指在后臺只是創(chuàng)建個空欄目,然后對應(yīng)的列表模板文件中使用dede:sql指定自定義的數(shù)據(jù)源,數(shù)據(jù)源與該欄目本身是沒有邏輯關(guān)系的,目的是為了讓織夢能按照它的規(guī)則來幫我們將數(shù)據(jù)源生成靜態(tài)文件予以展示)時,我本人也搜索了很多資料,網(wǎng)上的答案都不夠完美,有的是直接在模板文件中執(zhí)行php代碼來實現(xiàn)分頁,顯然此方法無法生成靜態(tài)文件,有的直接在sql里面指定limit參數(shù),但又無法實現(xiàn)智能分頁,織夢官方也沒有給出具體的解決方案,在dede論壇有看到織夢核心人物天涯給出的回復(fù)是采用自由列表的方法,顯然自由列表無法指定外部數(shù)據(jù)源,最后實在沒辦法只能自己動手了,首先想到的思路是將dede:list標(biāo)簽進行改造了,熟悉dede的朋友應(yīng)該知道這個列表頁專用標(biāo)簽的工作原理大致是先通過欄目變量id獲取到對應(yīng)的數(shù)據(jù)源再呈現(xiàn)到頁面上來,那么我們就可以讓它不僅僅通過欄目變量id還可以通過指定的sql語句來獲取數(shù)據(jù)源了,比如我們可以另外嵌入一個類似{dede:listsql sql='select * from wp_posts' pagesize='10'}的標(biāo)簽來使用。

OK,思路已經(jīng)有了,接下來我們打開include/arc.listview.class.php這個文件來給它動個小手術(shù)吧!

找到:

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參數(shù)獲取指定數(shù)據(jù)源的方法,代碼如下:

/**
 * 通過listsql標(biāo)簽中sql屬性傳入的參數(shù)來獲得一個單列的文檔列表
 * */
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')
    {
     //傳遞整個數(shù)組,在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

總共就添加三段代碼,每一段代碼基本都參考它緊接著的上面那段原始代碼,而無需改變它原來任何一個地方的代碼,應(yīng)該算是比較完美了,接下來在模板文件中的使用方法就跟一開始思路中所提到的那樣,分頁標(biāo)簽依舊沿用原來的,調(diào)用范例:

{dede:listsql sql='select ID,post_title from wp_posts' pagesize='10'}
 
[field:post_title /] {/dede:listsql} {dede:pagelist listsize='2' listitem='index pre pageno next end '/}

注:以上解決方案適用于dedecms5.6-5.7版本。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持yii666。文章來源地址http://www.zghlxwxcb.cn/news/detail-432812.html

到了這里,關(guān)于織夢模板用{dede:sql}標(biāo)簽如何實現(xiàn)分頁的示例代碼的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 織夢dede模板內(nèi)怎么加入php代碼的方法示例

    一、模板頁面內(nèi)嵌入php 例如: 最終輸出結(jié)果為hello world 其實\\\"name\\\"為任意定義的名字,\\\"@me=\\\"后面的值是最終用于輸出的值,我就拿它代替echo來用(如果直接用echo,模板生成的時候報錯,這就是有所限制的地方,唉)。 二、引用php文件 如果你想在include的文件中使用PHP,則加上

    2024年02月02日
    瀏覽(22)
  • 詳解織夢標(biāo)簽{dede:freelist/}列表調(diào)用增加排序方式的代碼

    如何使用自由列表標(biāo)簽{dede:freelist/}我這里就不多說了。 當(dāng)你用到自由列表的時候,會發(fā)現(xiàn)排序方式不全。比如我所需要用到 隨機排序\\\"rank\\\"和按得分排序\\\"scores\\\"這里就沒有。 當(dāng)然這兩個排序dede是有的只是沒有列出來,這樣就簡單了。 找到打開 dede/templets/freelist_add.htm \\\"添加自

    2024年02月02日
    瀏覽(92)
  • 織夢DedeCMS在{dede:channel}標(biāo)簽前加序列號的方法

    我們在制作織夢模板的時候,經(jīng)常想實現(xiàn)這樣的一個樣式功能:在DedeCMS網(wǎng)站導(dǎo)航中都會添加一些樣式,這樣能讓導(dǎo)航看起來很美觀大方。但是{dede:channel}標(biāo)簽是不能修改的,想要有一個好看的樣式效果,還要修改一些標(biāo)簽。 默認(rèn)的{dede:channel}調(diào)用方法: {dede:channel type=\\\'top\\\' r

    2024年02月03日
    瀏覽(123)
  • 詳解織夢模板DEDE首頁列表頁AJAX無限加載瀑布流修正版

    最近在學(xué)javascript,才慢慢開始讀懂JS代碼。對HTML前臺AJAX加載技術(shù)研究了一番,像博客站或者圖片站運用AJAX異步無限加載,做成瀑布流,提高用戶體驗,這是AJAX異步加載的優(yōu)點。 AJAX異步加載的弊端:屬于WEB前端技術(shù),蜘蛛不會抓JS調(diào)用的內(nèi)容,也就是并不利于SEO優(yōu)化。所以

    2024年02月02日
    瀏覽(34)
  • 織夢dede調(diào)用四級欄目的實現(xiàn)方法

    織夢調(diào)用四級子欄目,首先需要修改文件:includetaglibchannel.lib.php,請將以下代碼全部復(fù)制替換上述文件: rn\\\";if($row=$dsql-GetArray()){$row[\\\'sonids\\\'] = $row[\\\'rel\\\'] = \\\'\\\';if($needRel){$row[\\\'sonids\\\'] = GetSonIds($row[\\\'id\\\'], 0, false);if($row[\\\'sonids\\\']==\\\'\\\') $row[\\\'rel\\\'] = \\\'\\\';else $row[\\\'rel\\\'] = \\\" rel=\\\'dropmenu{$row[\\\'id\\\']}\\\'\\\";

    2024年02月02日
    瀏覽(95)
  • dede織夢系統(tǒng)會員簽到功能實現(xiàn)

    本文織夢yii666技術(shù)小編講解了織夢會員簽到增加積分/金幣的功能,非插件,安全無毒,需手動修改文件。 畢竟來路不明的插件也不敢亂用,廢話不多說,開整... 一、在頁面中引入ajax代碼: 二、在需要簽到按鈕的地方增加: ? 每天 [簽到] ,贈送積分! 三、新增系統(tǒng)變量,用來設(shè)置簽

    2024年02月03日
    瀏覽(25)
  • DedeCms織夢TAG標(biāo)簽靜態(tài)生成html,url拼音及分頁優(yōu)化的方法

    DEDECMS自帶的TAG標(biāo)簽是動態(tài)的,我們可以設(shè)置純靜態(tài)html,而且針對手機站也做了TAG靜態(tài)化生成,非常強大,對于SEO提高收錄及獲取排名非常有好處,今天yii666小編為大家介紹織夢TAG標(biāo)簽偽靜態(tài)修改方法。無需配置偽靜態(tài)規(guī)則及繁瑣的修改教程。 后臺TAG生成靜態(tài)HTML效果圖 dede

    2024年02月03日
    瀏覽(24)
  • dedecms織夢模板欄目列表中添加統(tǒng)計文檔數(shù)量的標(biāo)簽

    dedecms在欄目列表中添加統(tǒng)計文檔數(shù)量調(diào)用標(biāo)簽,實現(xiàn)的方法還是非常簡單的,只需要做一些簡單的修改即可實現(xiàn)我們所需要的功能。 方法如下: 打開include/extend.func.php文件,在最后一行?的上面添加以下內(nèi)容: 下面是我添加的示例代碼,供大家參考! 針對arclist與list模板代碼

    2024年02月02日
    瀏覽(28)
  • dede織夢自定義表單提交成功后跳轉(zhuǎn)頁面實現(xiàn)方法

    今天我們碰到一位客戶,想要完成織夢表單提交后,跳轉(zhuǎn)到一個頁面顯示:已提交成功,請耐心等待回復(fù)。處理到這里,我們想到了這個功能還是很容易完成的,需要對plus/diy.php處理提示頁面。 修改方法 默認(rèn)的是:“發(fā)布成功,請等待管理員處理...”,默認(rèn)跳轉(zhuǎn)頁面是網(wǎng)站

    2024年02月03日
    瀏覽(21)
  • SpringBoot實現(xiàn)分頁的三種方式

    一 自己封裝Page對象實現(xiàn) 博客鏈接 二 使用sql實現(xiàn)分頁 2.1 場景分析 前段傳遞給給后臺什么參數(shù)? 當(dāng)前頁碼 currentPage 每頁顯示條數(shù) pageSize 后臺給前端返回什么數(shù)據(jù)? 當(dāng)前頁數(shù)據(jù) List 總記錄數(shù) totalCount 2.2 前段代碼 2.3 后端代碼 PageBean mapper service impl controller 三 使用PageHelper插件

    2024年02月10日
    瀏覽(28)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包