织梦用栏目分页来做小说站实现教程(支持动态静态)
发布时间:2021-04-30 | 发布者: 东东工作室 | 浏览次数: 次前台栏目和分页
后台栏目数据
需求描述
一个栏目就是一个小说,炒鸡轻松实现按栏目分页
不影响程序其他功能文档分页
支持动态、生成静态、伪静态
可扩展其他分页,例如会员分页,自定义表单分页
实现教程
打开 /include/arc.listview.class.php 找到 大概在247行
$this->dtp->LoadTemplate($tempfile);
在它上面加入
if($this->TypeLink->TypeInfos['ispart']==1)
{
$tmpdir = $GLOBALS['cfg_basedir'].$GLOBALS['cfg_templets_dir'];
$tempfile = str_replace("{tid}",$this->TypeID,$this->Fields['tempindex']);
$tempfile = str_replace("{cid}",$this->ChannelUnit->ChannelInfos['nid'],$tempfile);
$tempfile = $tmpdir."/".$tempfile;
if ( defined('DEDEMOB') )
{
$tempfile =str_replace('.htm','_m.htm',$tempfile);
}
if(!file_exists($tempfile))
{
$tempfile = $tmpdir."/".$GLOBALS['cfg_df_style']."/index_default.htm";
if ( defined('DEDEMOB') )
{
$tempfile =str_replace('.htm','_m.htm',$tempfile);
}
}
if(!file_exists($tempfile)||!is_file($tempfile))
{
echo $this->Fields['typename']." [ID:{$this->TypeID}] ".$GLOBALS['cfg_basedir'].$GLOBALS['cfg_templets_dir']."/".$this->TypeLink->TypeInfos['tempindex']."模板文件不存在,无法解析文档!";
exit();
}
}
继续找到
$ctag = $this->dtp->GetTag("page");
在它下面加入
if(!is_object($ctag))
{
$ctag = $this->dtp->GetTag("listsql");
if(is_object($ctag))
{
$this->addSql = " WHERE ishidden<>1 ";
if($cfg_list_son=='N')
{
if($this->CrossID=='') $this->addSql .= " AND (id='".$this->TypeID."') ";
else $this->addSql .= " AND (id in({$this->CrossID},{$this->TypeID})) ";
}
else
{
$sonids = GetSonIds($this->TypeID,$this->Fields['channeltype'],0);
if(!preg_match("/,/", $sonids)) {
$this->addSql .= " AND id = '$sonids' ";
}
else {
$this->addSql .= " AND id IN($sonids) ";
}
}
$sql = $ctag->GetAtt("sql");
$sql = preg_replace("/SELECT(.*?)FROM/is", " SELECT count(*) as dd FROM ", $sql);
$sql = preg_replace("/ORDER(.*?)SC/is", "", $sql);
$sql = $sql.$this->addSql;
$row = $this->dsql->GetOne($sql);
if(is_array($row))
{
$this->TotalResult = $row['dd'];
}
else
{
$this->TotalResult = 0;
}
}
}
继续找到
else if($ctag->GetName()=="pagelist")
在它上面加入
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
));
}
继续找到
function GetPageListST
在它上面加入
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}";
$sql = $sql.$this->addSql.$limitStr;
$this->dsql->SetQuery($sql);
$this->dsql->Execute('al');
$t2 = ExecTime();
//echo $t2-$t1;
$sqllist = '';
$this->dtp2->LoadSource($innertext);
$GLOBALS['autoindex'] = 0;
//获取字段
while($row = $this->dsql->GetArray("al"))
{
$row['typeurl'] = GetTypeUrl($row['typeid'],MfTypedir($row['typedir']),$row['isdefault'],$row['defaultname'],
$row['ispart'],$row['namerule2'],$row['moresite'],$row['siteurl'],$row['sitepath']);
$row['typelink'] = GetOneTypeUrlA($row);
$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;
}
注意:上面添加代码,有的是添加在上面有的是添加在下面的,看清楚了。
栏目模板标签写法
<h2>栏目列表</h2>
<ul>
{dede:listsql sql="select * from dede_arctype" pagesize="10"}
<li>
<a href="[field:typelink/]">[field:typename/]</a>
<p>栏目描述:[field:description/]...</p>
</li>
{/dede:listsql}
</ul>
<h2>栏目分页条</h2>
<ul class="pagelist">
{dede:pagelist listitem="info,index,end,pre,next,pageno,option" listsize="5"/}
</ul>
pagesize="10" 每页显示10个栏目
[field:typelink/] 栏目链接
[field:typename/] 栏目名称
[field:其他字段/] 栏目其他自定义字段都可以直接调用
如果封面频道也要作为最终列表栏目和分页
参考这个这个文章,
https://www.dedehtml.com/notes/dede-ispart.html
改下图那2处
转载请标注:东东工作室——织梦用栏目分页来做小说站实现教程(支持动态静态)
推荐文章
相关文章