节点表Node模型类的数据获取演示
信息表Info模型类的数据获取演示
列表页示例代码说明
下面的代码放在页面最顶部,用于页面的初始化
<?php
if(!isset($GLOBALS["DR"])){$GLOBALS["DR"] = str_replace("\\", "/", $_SERVER["DOCUMENT_ROOT"]);}
if(!isset($GLOBALS["webroot"])){$GLOBALS["webroot"] = preg_replace("/(.*\/).*/", "$1", str_replace("\\", "/", __DIR__));}
require_once $GLOBALS["webroot"] . "/db.php";
require_once $GLOBALS["DR"] . "/base.php";
$pagesize = 36; //每页显示条数,如果要随机显示图片,此值的取值范围是1<$pagesize<=$maxrandnum
$titlemaxlen = 36; //截取标题最大长度
$abstractmaxlen = 180; //摘要最大长度,摘要的文字即可来源于基本中的简介,也可以来自于详情
$orderfield = "sortnum"; //自定义排序字段,仅限sortnum,id,addtime,clickcount这四个字段
require $GLOBALS["DR"] . "/admin/require/html/nid.php";
require $GLOBALS["DR"] . "/admin/require/html/rid.php";
require $GLOBALS["DR"] . "/admin/require/html/list.php";
?>
<?php
//如果要随机显示图片,应该确保pagesize的值必须大于1,否则导致$randnumkeysarr[$key]结果为空
if ($pagesize <= 1) {$pagesize = 2;}
$maxrandnum = 10;//最大随机数与randimglist文件夹中的图片数量,此值必须大于等于$pagesize
if ($maxrandnum <= $pagesize) {$maxrandnum = $pagesize + 1;}
$randnumarr = range(1, $maxrandnum);
shuffle($randnumarr);//数组随机排序
$randnumkeysarr = array_rand($randnumarr, $pagesize);
?>
<title><?=$title;?></title>复制当前行
<meta name="keywords" content="<?=$keywords;?>" />复制当前行
<meta name="description" content="<?=$description;?>" />复制当前行
当前节点的根节点名称
<?=$rname;?>复制当前行
当前节点的父节点名称
<?=$pname;?>复制当前行
当前节点的名称
<?=$name;?>复制当前行
当前位置
<?=$navigationhtml;?>复制当前行
获取当前顶级节点下的二级或三级节点
<?php
if ($pid == 0) {
$sql = "select id,name,nodetype from `" . PREFIX . "node` where isshow = 1 and pid = " . $rid . " order by sortnum asc";
} else {
if ($idandchildidstrs == $nid) {
//没有了子节点
if ($rid == $pid) {
//二级节点
$sql = "select id,name,nodetype from `" . PREFIX . "node` where isshow = 1 and pid = " . $rid . " order by sortnum asc";
} else {
$sql = "select id,name,nodetype from `" . PREFIX . "node` where isshow = 1 and pid = " . $pid . " order by sortnum asc";
}
} else {
//有子节点
$sql = "select id,name,nodetype from `" . PREFIX . "node` where isshow = 1 and pid = " . $nid . " order by sortnum asc";
}
}
$nodetrs = DB::getTrs($sql);
?>
<?php foreach ($nodetrs as $key => $nodetr) {?>复制当前行
<?php if ($nid == $nodetr['id']) {echo '当前样式名';}?>复制当前行
<?=Node::getSiteUrl($nodetr['id']);?>复制当前行
<?=$nodetr['name'];?>复制当前行
不是最后一个特殊处理
<?php if ($key1 < (count($nodetrs) - 1)) {echo '特殊处理时的字符串';} ?>复制当前行
最后一个特殊处理
<?php if ($key1 == (count($nodetrs) - 1)) {echo '特殊处理时的字符串';} ?>复制当前行
<?php } ?>复制当前行
获取当前节点下的列表
<?php foreach ($infotrs as $key => $infotr) { ?>复制当前行
获取年-月-日
<?=date('Y-m-d', $infotr['addtime']);?>复制当前行
获取年-月-日 时:分:秒
<?=date('Y-m-d H:i:s', $infotr['addtime']);?>复制当前行
如果此id对应的信息详情为空,可以设置空链接
<?php if (Info::getBoolValue($infotr)) { ?><?=Info::getSiteUrl($infotr['id']); ?><?php } else { ?>javascript:void(0);<?php } ?>复制当前行
获取详情页的链接
<?=Info::getSiteUrl($infotr['id']);?>复制当前行
获取随机图片,前提是需要在前面定义 $maxrandnum = 最大随机数;,同时$pagesize的值必须大于1,同时在/_backup/_upload/目录下新建randimglist文件夹,里面存放图片的数量就是最大随机数,图片名称必须以1开始,然后依次递增
<?php
if ($infotr['picurl'] == '') {
$picurl = Web::getBackupRandImgListStr() . $randnumarr[$randnumkeysarr[$key % $pagesize]] . '.jpg';
} else {
$picurl = $infotr['picurl'];
}
?>
获取图片
<?=$picurl?>复制当前行
<?=$infotr['picurl'];?>复制当前行
http://abc.kasn.cn/output/320/<?=$infotr['title'];?>.jpg
获取标题
<?=$infotr['title'];?>复制当前行
获取简介
<?=$infotr['digest'];?>复制当前行
获取标题并截取
<?=cutStr($infotr['title'], $titlemaxlen);?>复制当前行
获取简介并过滤及截取
<?=filterCutHtml($infotr['digest'], $abstractmaxlen);?>复制当前行
获取详情并过滤及截取
<?=filterCutHtml($infotr['content'], $abstractmaxlen);?>复制当前行
获取点击次数
<?=$infotr['clickcount'];?>复制当前行
如果该信息有视频,则在标题后面加上【视频】
<?php
$title = $infotr['title'];
$titledo = cutStr($infotr['title'], 截取长度);
if (isBh($infotr['link'], 'https://v.qq.com/x/page/')) {
$title = $infotr['title'] . "【视频】";
$titledo = cutStr($infotr['title'] . "【视频】", 截取长度);
}
?>
<?=$title;?>复制当前行
<?=$titledo;?>复制当前行
<?php } ?>复制当前行
如果实际条数大于$pagesize,那么<?=$pageer->pagestr;?>值不为空,所以能看到翻页,否则<?=$pageer->pagestr;?>值为空,看不到翻页
<?=$pageer->pagestr;?>复制当前行
通过ajax来获取下一页数据,在某种特殊情况下使用
<script type="text/javascript">复制当前行
var list = $('列表样式');
var page = 1; //这里是固定值1,不要修改
var aut = 50;//这里的值可以改动
$(window).scroll(function() {
if ($(window).scrollTop() + $(window).height() >= $(document).height() - aut) {
page++;
if(page <= <?=$pageer->pagecount;?>){
$.ajax({
url: "<?=Web::getAdminRequireHtHtmlStr();?>listajax.php",//ajax请求的脚本,注意请求里面
type: "POST",//ajax请求的脚本时传参方式
data : {'postdata' : <?=$postdata;?>, 'page' : page},
dataType: "JSON",//ajax只接受json格式的回传数据
success: function (result) {//如果请求URL成功
if (result.length == 0) {
//$("#seeMore").html('全部加载完了~~');
} else {
//$("#seeMore").html('正在加载中...');
var html = '';
for(var i in result){
var item = result[i];
//下面的html代码拼接需要根据实际情况修改
html += '<li>'+'\n';
html += '<span class="date">'+item.addtime+'\n';
html += '<div>'+'\n';
html += '<a href="'+item.href+'" title="'+item.title+'">'+item.title+'</a>'+item.content_cut+'\n';
html += '</div></li>'+'\n';
}
list.append(html);
//$("#seeMore").html('向下滑动加载更多');
}
},
error: function () {//实际上有时因为网络慢的或者服务器代码500错误也会执行到这里,所以为了避免错误,下面的代码最好注释掉
//alert("err");
}
});
}
}
})
</script>复制当前行
如果要隔行获取一个样式,比如奇数行获取class1这个样式,偶数行获取class2这个样式时,
class<?=($key % 2) + 1;?>
如果是类似这样的循环:class1,class2,class3,class1,......
class<?=($key % 3) + 1;?>
如果是类似这样的循环:class1,class2,class3,class4,class1,......
class<?=($key % 4) + 1;?>
如果是以0开始的,则不用加后面的1,但是%后面的数字,需要加1,比如类似这样的循环:class0,class1,class2,class3,class4,class0,......
class<?=$key % (4 + 1);?>
如果列表页有图片弹窗的JS代码
<link href="/_admin/swipebox/swipebox.css" rel="stylesheet" media="all" />复制当前行
<script src="/_admin/swipebox/jquery.swipebox.js"></script>复制当前行
<script type="text/javascript">复制当前行
jQuery(document).ready(function($) {
$(".swipebox").swipebox();
});
</script>复制当前行
列表页多个属性筛选时 /_backup/special.php示例代码如下
<?php
if (mb_detect_encoding($REDIRECT_URL, 'UTF-8', true) === false) {
$REDIRECT_URL = mb_convert_encoding($REDIRECT_URL, "UTF-8", "GBK");
}
$pattern = '/^\/((?:[a-z0-9]{2,}\/){1,})(&page=([0-9]{1,})){0,1}(&area=([\x{4e00}-\x{9fa5}|a-zA-Z0-9%]{0,})){0,1}(&month=([0-9]{0,2})){0,1}$/u';
preg_match_all($pattern, $REDIRECT_URL, $matches0);
if(isset($matches0[0][0])){
$folder = 'html';
$nodeqtwj = $matches0[1][0];
$area = $matches0[5][0];
if(preg_match('/(%[A-Z0-9][A-Z0-9]){1,}/', $area)){
$area = urldecode($area);
}
$month = $matches0[7][0];
$mart = 0;
}
?>
列表页多个属性筛选时 /html/product.php示例代码如下
<?php
$alldatatrs = $curpagedatatrs = $areaarr = $montharr = [];
$indexurl = Node::getSiteUrl($nid).'&page=' . $pageer->page;
$sql = "select group_concat(distinct `attrvalue` order by `id` asc separator ',') from `html_infoattr` where attrid = 1";
$td = DB::getTd($sql);
if ($td) {
$areaarr = explode(",", $td);
//https://www.php.net/manual/zh/array.sorting.php数组排序
//shuffle($areaarr);//数组随机排序
asort($areaarr);
}
$sql = "select group_concat(distinct `attrvalue` order by `id` asc separator ',') from `html_infoattr` where attrid = 2";
$td = DB::getTd($sql);
if ($td) {
$montharr = explode(",", $td);
natcasesort($montharr); //自然排序,月份用英文的数字,不要用中文的数字
}
if(isset($REDIRECT_URL)){
if ($area) {
if (!in_array($area, $areaarr)) {$area = '';}else{$indexurl .= '&area=' . $area;}
}
if ($month) {
if (!in_array($month, $montharr)) {$month = '';}else{$indexurl .= '&month=' . $month;}
}
}else{
$area = '';
if (isset($_GET['area'])) {
$area = trim($_GET['area']);
if ($area) {
if (!in_array($area, $areaarr)) {$area = '';}else{$indexurl .= '&area=' . $area;}
}
}
$month = '';
if (isset($_GET['month'])) {
$month = trim($_GET['month']);
if ($month) {
if (!in_array($month, $montharr)) {$month = '';}else{$indexurl .= '&month=' . $month;}
}
}
}
//重置
if ($area && $month) {
$onlyinfoid = DB::getTd("select group_concat(distinct `infoid` order by `id` asc separator ',') from `html_infoattr` where attrid = 1 and attrvalue = '" . $area . "'");
if($onlyinfoid){
$onlyinfoid = DB::getTd("select group_concat(distinct `infoid` order by `id` asc separator ',') from `html_infoattr` where infoid in (" . $onlyinfoid . ") and attrid = 2 and attrvalue = '" . $month . "'");
}
} else {
if ($area) {
$onlyinfoid = DB::getTd("select group_concat(distinct `infoid` order by `id` asc separator ',') from `html_infoattr` where attrid = 1 and attrvalue = '" . $area . "'");
} else {
if ($month) {
$onlyinfoid = DB::getTd("select group_concat(distinct `infoid` order by `id` asc separator ',') from `html_infoattr` where attrid = 2 and attrvalue = '" . $month . "'");
}
}
}
//是否需要重置
$isresettoempty = false;//是否重置为空
$where = "nid in ({$idandchildidstr}) and status = 2";
if ($area || $month) {
if(!$onlyinfoid){
$isresettoempty = true;//是否重置为空
}else{
$where .= ' and id in (' . $onlyinfoid . ')';
}
}
if(!$isresettoempty){
$pageer->pagesize = $pagesize; //当前页默认显示最大条数
$idandchildidstr = InfoNode::getIdAndChildIdStr($nid);
$order = "sortnum desc";
$alldatatrs = DB::getTrs2('info', $where, '*', 'sortnum');
$pageer->trscount = count($alldatatrs);
if ($pageer->trscount > 0) {
//如果根据条件取数据,那么$pageer->pagestr是始终为空的
$pageer->pagecount = ceil($pageer->trscount / $pageer->pagesize);
$pageer->page = getPage($pageer->pagecount);
$start = ($pageer->page - 1) * $pageer->pagesize;
$curpagedatatrs = array_slice($alldatatrs, $start, $pageer->pagesize);
}
}else{
$pageer->trscount = 0;
$pageer->trs = [];
}
?>
<table width="100%" border="0" cellspacing="0" cellpadding="0">复制当前行
<tbody>复制当前行
<tr>复制当前行
<td>地区:</td>复制当前行
<td>复制当前行
<a href="<?=Node::getSiteUrl($nid);?>&area=&month=<?=$month;?>"<?php if (!$area) {echo ' style="color: red"';}?>>不限</a>复制当前行
<?php if (isset($areaarr)) {?>复制当前行
<?php foreach ($areaarr as $key => $value) {?>复制当前行
<a href="<?=Node::getSiteUrl($nid);?>&area=<?=$value;?>&month=<?=$month;?>"<?php if ($area == $value) {echo ' style="color: red"';}?>><?=$value;?></a>复制当前行
<?php }?>复制当前行
<?php }?>复制当前行
</td>复制当前行
</tr>复制当前行
<tr>复制当前行
<td>月份:</td>复制当前行
<td><a href="<?=Node::getSiteUrl($nid);?>&area=<?=$area;?>&month="<?php if (!$month) {echo ' style="color: red"';}?>>不限</a>复制当前行
<?php if (isset($montharr)) {?>复制当前行
<?php foreach ($montharr as $key => $value) {?>复制当前行
<a href="<?=Node::getSiteUrl($nid);?>&area=<?=$area;?>&month=<?=$value;?>"<?php if ($month == $value) {echo ' style="color: red"';}?>><?=$value;?>月</a>复制当前行
<?php }?>复制当前行
<?php }?>复制当前行
</td>复制当前行
</tr>复制当前行
<tr>复制当前行
<td>行业:</td>复制当前行
<td><a href="<?=Node::getSiteUrl($rid);?>&area=<?=$area;?>&month=<?=$month;?>"<?php if ($nid == $rid) {echo ' style="color: red"';}?>>不限</a>复制当前行
<?php foreach ($nodetrs2 as $key2 => $nodetr2) {?>复制当前行
<a href="<?=Node::getSiteUrl($nodetr2['id']);?>&area=<?=$area;?>&month=<?=$month;?>"<?php if ($nid == $nodetr2['id']) {echo ' style="color: red"';}?>><?=cutStr($nodetr2['name'], 11);?></a>复制当前行
<?php }?>复制当前行
</td>复制当前行
</tr>复制当前行
</tbody>复制当前行
</table>复制当前行
<?php foreach ($curpagedatatrs as $key => $infotr) {?>复制当前行
<a href="<?=Info::getSiteUrl($infotr['id']);?>"><?=cutStr($infotr['title'], 30);?></a>复制当前行
<?php }?>复制当前行
<?php if (!$pageer->pagestr && $pageer->trscount > 0) {?>复制当前行
<table><tr><td class="lefttd">共<?=$pageer->trscount;?>条 每页<?=$pageer->pagesize;?>条 页次<?=$pageer->page;?>/<?=$pageer->pagecount;?></td>复制当前行
<td class="righttd">复制当前行
<?php if ($pageer->pagecount > $pageer->pagesize) { ?>复制当前行
<?php
echo "<select name='pages' onchange='window.location=this.value;'>";
for ($i = 1; $i < $pageer->pagecount + 1; $i++) {
$url = preg_replace('/page=\d{1,}/i', 'page=' . $i, $indexurl);
if ($i == $pageer->page) {
echo "<option value='" . $url . "' selected>第" . $i . "页</option>";
} else {
echo "<option value='" . $url . "'>第" . $i . "页</option>";
}
}
echo "</select>";
?>
<?php } else { ?>复制当前行
<?php for ($i = 1; $i < $pageer->pagecount + 1; $i++) {
$url = preg_replace('/page=\d{1,}/i', 'page=' . $i, $indexurl);
if ($i == $pageer->page) {
echo "<a href='" . $url . "' id='curpage'>[ {$i} ]</a>";
} else {
echo "<a href='" . $url . "'>[ {$i} ]</a>";
}
}?>
<?php }?>复制当前行
</td></tr></table>复制当前行
<?php }?>复制当前行
其它特殊情况 网站模板这个列表页的详情页,PC端有两种情况
<?php
// /wzmb/wd/2936pc.html
// /wzmb/wd/2936sj.html
$pattern = '/^\/(?:[a-z0-9]{2,}\/){1,}([1-9]\d{0,})(pc|sj)\.html$/';
preg_match_all($pattern, $REDIRECT_URL, $matches0);
if(isset($matches0[0][0])){
$folder = 'html';
$htwj = $matches0[2][0].'mbview.php';
$id = $matches0[1][0];//定义详情页id
$mart = 0;
}
?>
URL使用纯动态而不使用纯静态或伪静态的情况下,所有的getSiteUrl方法必须设置第二个参数,第二参数必须是dt
<?php
$pagesize = 36; //每页显示条数,如果要随机显示图片,此值的取值范围是1<$pagesize<=$maxrandnum
$titlemaxlen = 36; //截取标题最大长度
$abstractmaxlen = 180; //摘要最大长度,摘要的文字即可来源于基本中的简介,也可以来自于详情
$orderfield = "sortnum"; //自定义排序字段,仅限sortnum,id,addtime,clickcount这四个字段
if(!isset($GLOBALS["DR"])){$GLOBALS["DR"] = str_replace("\\", "/", $_SERVER["DOCUMENT_ROOT"]);}
if(!isset($GLOBALS["webroot"])){$GLOBALS["webroot"] = preg_replace("/(.*\/).*/", "$1", str_replace("\\", "/", __DIR__));}
require_once $GLOBALS["DR"] . "/admin/require/dt/list.php";
?>
<?php require_once $GLOBALS["DR"] . "/admin/require/dt/fileputcontents.php";?>复制当前行
其它特殊情况数据获取示例代码说明