当前位置:首页 » 编程语言 » 织梦sql分页
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

织梦sql分页

发布时间: 2023-05-16 14:19:31

Ⅰ 织梦 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';");找到上面代码行,在前面加上// 注释掉就可以了。

模板居织梦模板
为您解答
祝你成功
望采纳