时间:2021-05-02
网站栏目页及列表页要实现的效果如下:
1、栏目页最多只列出100页;
2、列表页不限制最大页数,有多少页就列出多少页。
要实现这个效果,需要改动的文件有3个,文件及改动内容如下:
复制代码
代码如下:
function get($sql, $rows = 0, $page = 0, $dbname = '', $dbsource = '', $urlrule = '', $distinct_field = '', $catid = 0, $ismaxpage = 0) {
...
if($dbname || $dbsource)
{
$r = $db->get_one("SELECT COUNT(*) AS `count` ".stristr($sql, 'from'));
$total = $r['count'];
}
elseif($distinct_field)
{
$total = cache_count("SELECT COUNT(distinct $distinct_field) AS `count` ".stristr($sql, 'from'));
}
else
{
$total = cache_count("SELECT COUNT(*) AS `count` ".stristr($sql, 'from'));
}
global $PHPCMS;
if ($ismaxpage) {
$total = min($total, $PHPCMS['maxpage']*$rows);
}
$pages = pages($total, $page, $rows, $urlrule, '', $catid);
...
}
复制代码
代码如下:
function get_parse($str)
{
...
extract($r);
if(!isset($dbsource)) $dbsource = '';
if(!isset($dbname)) $dbname = '';
if(!isset($sql)) $sql = '';
if(!isset($rows)) $rows = 0;
if(!isset($urlrule)) $urlrule = '';
if(!isset($catid)) $catid = 0;
if(!isset($distinctfield)) $distinctfield = '';
if(!isset($return) || !preg_match("/^\w+$/i", $return)) $return = 'r';
if(!isset($ismaxpage)) $ismaxpage = 0;
if(isset($page))
{
$str = "<?php \$ARRAY = get(\"$sql\", $rows, $page, \"$dbname\", \"$dbsource\", \"$urlrule\",\"$distinctfield\",\"$catid\", $ismaxpage);\$DATA=\$ARRAY['data'];\$total=\$ARRAY['total'];\$count=\$ARRAY['count'];\$pages=\$ARRAY['pages'];unset(\$ARRAY);foreach(\$DATA AS \$n=>\${$return}){\$n++;?>";
}
...
}
复制代码
代码如下:
if($CATEGORY[$catid]['child'])
{
$pages = 1;
$html->category($catid);
}
else
{
$offset = $pagesize*($page-1);
if($page == 1)
{
$contents = cache_count("SELECT COUNT(*) AS `count` FROM `".DB_PRE."content` WHERE catid=$catid AND status=99");
$total = ceil($contents/$PHPCMS['pagesize']);
$pages = ceil($total/$pagesize);
}
$max = min($offset+$pagesize, $total);
for($i=$offset; $i<=$max; $i++)
{
$html->category($catid, $i);
}
}
$offset = $pagesize*($page-1);
if($page == 1)
{
$condition=get_sql_catid($catid);
$contents = cache_count("SELECT COUNT(*) AS `count` FROM `".DB_PRE."content` WHERE status=99 $condition");
$total = ceil($contents/$PHPCMS['pagesize'])+1;
$total = $CATEGORY[$catid]['child'] ? min($total, $PHPCMS['maxpage']+1) : $total;
$pages = ceil($total/$pagesize);
}
$max = min($offset+$pagesize, $total);
for($i=$offset; $i<$max; $i++)
{
$html->category($catid, $i);
}
以下是一个栏目页及列表页模板的示例
复制代码
代码如下:
<?php
$catids = str_replace('`catid`', 'a.`catid`', get_sql_catid($catid));
$sql = "
SELECT a.contentid, a.catid, a.title, a.keywords, a.thumb, a.userid, a.updatetime, a.inputtime, a.islink, a.url, a.style
FROM `phpcms_content` a
WHERE a.status=99 $catids ORDER BY a.contentid DESC";
if ($child) {
$ismaxpage = 1;
$page = min($page, $PHPCMS['maxpage']);
}
?>
<ul>
{get sql="$sql" rows="20" page="$page" catid="$catid" ismaxpage="$ismaxpage"}
<li>{$r[title]}</li>
{/get}
</ul>
<div>{$pages}</div>
经过以上这么一翻捣鼓,一开始的那效果就出来了。基本思路就是先要为get标签增加一个参数,用于判断是否开启“列表页最大页数”,然后生成静态页面的时候限制一下栏目页,不然它有多少生成多少。
PHPCMS 确实挺好,但需要改进的地方同样也很多,很多细节都没处理好,而有些功能都不是给人用的。希望 PHPCMS 能越来越强大!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
DEDE默认栏目列表分页链接如:首页上一页12345下一页末页这种链接方式其实并不十分合理,比如这是http://www.abc.com/abc/这个栏目的列表
先来看看DEDECMS默认的TAG列表分页(5.6为例):第1页时:首页上一页123456下一页末页第3页时:首页上一页123456下一页末页分页连接方式和栏目
dedecms默认栏目列表分页链接:首页上一页12345下一页末页这种连接方式很不合理,对于SEO已经无意间分散了栏目页权重,我们要的效果是把list_4_1.
在列表页或者内容详情页调用指定的顶级栏目名称及链接方法。1、{dede:fieldname="typename"}这是调用当前栏目的名称2、{dede:chan
1.列表式2.嵌入式3.导航式二、内链优化的原则首页指向所有栏目页2.栏目页栏目页指向本栏目所有文章页3.文章页文章页链接指向所属栏目页文章页链接指向其他重点栏
Copyright © 1999-2023 中企动力科技股份有限公司(300.cn)All Rights Reserved
京公网安备11030102010293号 京ICP证010249-2