节点表Node模型类的数据获取演示
信息表Info模型类的数据获取演示

其它特殊情况代码大全

顶部导航菜单代码
一级导航菜单循环开始
<?php $nodetrs1 = Node::getTrs();foreach ($nodetrs1 as $nodetr1) {$nodetrs2 = Node::getTrs($nodetr1['id']);if ($nodetr1['nodetype'] == 3) {if (!$nodetrs2) {continue;}} ?>复制当前行

<?php if (isset($rid)) {if ($rid == $nodetr1['id']) {echo "当前样式";}} ?>复制当前行
<?=Node::getSiteUrl($nodetr1['id']);?>复制当前行
<?=$nodetr1['name'];?>复制当前行
<?php if ($nodetrs2) { ?>复制当前行
二级导航菜单循环开始
<?php foreach ($nodetrs2 as $nodetr2) { ?>复制当前行
<?=Node::getSiteUrl($nodetr2['id']);?>复制当前行
<?=$nodetr2['name'];?>复制当前行
<?php } ?>复制当前行
<?php } ?>复制当前行
二级导航菜单循环结束
<?php if ($key1 < count($nodetrs1) - 1) { ?>复制当前行
一级导航菜单分隔符
<?php } ?>复制当前行
<?php } ?>复制当前行
一级导航菜单循环结束


<a href="<?=Web::getAdminStr();?>">后台登录</a>复制当前行

<form action="<?=Node::getSearchUrl();?>" method="get">复制当前行
<input type="hidden" name="rid" value="可以指定一个顶级id">复制当前行
<input type="text" name="keyword" placeholder="请输入关键词搜索" />复制当前行
<input type="submit" value="提交" />复制当前行
</form>复制当前行

实时打印当前定义的变量
<?php include '/_admin/pr.php';?>复制当前行

设置网页编码
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">复制当前行
VPS 不带www301重定向到www
https://www.cnblogs.com/fjping0606/p/9879101.html
过期提醒
<script type="text/javascript" src="https://www.sznest.net/_admin/frame.js"></script>复制当前行


批量正则替换
"\/[^"]{1,}\/([^\/|"]{1,})?\.css[^"]{0,}"
"<?=Web::getBackupHtmlCssStr();?>$1.css"
还需要将css文件中的../images/替换成../img/
"\/[^"]{1,}?\/([^\/|"]{1,}?)\.(png|jpg)[^"]{0,}"
"<?=Web::getBackupUploadStr();?>$1.$2"
"\/[^"]{1,}\/([^\/|"]{1,})?\.js[^"]{0,}"
"<?=Web::getBackupHtmlJsStr();?>$1.js"

sublime中可以使用下面的来替换多行为一行
n{2,}
\n
如果一行中有空格字符,则去掉那一行中的空格字符
\s{1,}\n
\n

DB类的getTd/getTr/getTrs
<?php
$idandchildidstrs = InfoNode::getIdAndChildIdStr($rid);
$条件 = "id in (" . $idandchildidstrs . ")"; //如果条件中判断不等于使用推荐使用<>
$sql = "select * from `" . PREFIX . "表名` where 条件 order by 字段 id/addtime/sortnum/clickcount /asc/desc limit 条数";
$infotr = DB::getTr($sql);
$infotrs = DB::getTrs($sql);
?>
<?php foreach ($infotrs as $key => $infotr) { ?>复制当前行
<?=$infotr['字段名'];?>复制当前行
<?php } ?>复制当前行

自动发布
<script src="/_admin/js/jquery.js"></script>复制当前行
<?php if ($nid == 1 && !isset($_GET["nid"])) { ?>复制当前行
<script type="text/javascript">复制当前行
url="<?=Web::getAdminStr();?>model/ajax/sznest.php";
$.ajax({
type: "POST",
url: url,
success: function(res){},
error:function(XMLHttpRequest, textStatus, errorThrown){},
});
</script>复制当前行
<?php } ?>复制当前行

动态生成变量
<?php
$trs = Info::getTrs(NID, limit, istop);
foreach ($trs as $key => $tr) {
${'title' . $key} = $tr['title'];
${'src' . $key} = $tr['picurl'];
${'href' . $key} = Info::getSiteUrl($tr['ID']);
}
?>

直接获取动态生成的变量
<?=$title0;?>复制当前行
<?=$src0;?>复制当前行
<?=$href0;?>复制当前行
<?=$title1;?>复制当前行
<?=$src1;?>复制当前行
<?=$href1;?>复制当前行
<?=$title2;?>复制当前行
<?=$src2;?>复制当前行
<?=$href2;?>复制当前行

三元表达式
<?=$infotr['字段'] == 1 ? '第一个值' : '第二个值';?>复制当前行

获取多行记录时的特殊处理
如果第一次循环与其它几次循环不同的情况下
<?php foreach ($trs as $key => $tr) { ?>复制当前行
<?php if ($key == 0) { ?>复制当前行
第一次循环执行这里的代码
<?php } else { ?>复制当前行
其它几次循环执行这里代码
<?php } ?>复制当前行
<?php } ?>复制当前行

不足两位前面补0
<?=sprintf('%02d', ($key + 1));?>;
不足三位前面补0
<?=sprintf('%03d', ($key + 1));?>;

如果最后一次循环与其它几次循环不同的情况下
<?php $count = count($trs) - 1;foreach ($trs as $key => $tr) { ?>复制当前行
<?php if ($key < $count) { ?>复制当前行
如果不是最后一次循环执行这里的代码
<?php } else {?>复制当前行
最后一次循环执行这里的代码
<?php } ?>复制当前行
<?php } ?>复制当前行

如果循环的次数与4取模刚好等于0,则输出</tr><tr>这样的字符串
<?php foreach ($trs as $key => $tr) { ?>复制当前行
<?php if (($key + 1) % 4 == 0) {echo '</tr><tr>';} ?>复制当前行
<?php } ?>复制当前行

更复杂的判断nodetrs的数量必须是tdchildcount的偶数倍
<?php
$nodetrs = Node::getTrs(id, limit);
$tdchildcount = 1;
if ($tdchildcount % 2) {$num = $tdchildcount;} else { $num = $tdchildcount * 2;}
if (count($nodetrs) % $num == 0) { ?>
<table border="1">复制当前行
<?php foreach ($nodetrs as $key => $nodetr) {if (($key + 1) % $tdchildcount == 1) {$classname = 'one';} else { $classname = 'other';} ?>复制当前行
<?php if (($key + 1) % ($tdchildcount * 2) == 1) {echo '<tr>';} ?>复制当前行
<?php if (($key + 1) % ($tdchildcount * 2) == 1) {echo '<td class="left">';} ?>复制当前行
<p class="<?=$classname;?>"><?=$nodetr['name'];?></p>复制当前行
<?php if (($key + 1) % $tdchildcount == 0) {echo '</td>';} ?>复制当前行
<?php if (($key + 1) % ($tdchildcount * 2) == $tdchildcount) {echo '<td class="right">';} ?>复制当前行
<?php if (($key + 1) % ($tdchildcount * 2) == 0) {echo '</tr>';} ?>复制当前行
<?php } ?>复制当前行
</table>复制当前行
<?php } ?>复制当前行

获取栏目node与信息info两张表的记录,外层循环获取栏目表node多行记录,内层循环获取信息表info的多行记录
<?php
$nodetrs = Node::getTrs(PID);
foreach ($nodetrs as $nodetr) {
?>
<?=$nodetr['name'];?>复制当前行
<?php
$infotrs = Info::getTrs($nodetr['ID'], limit, istop);
foreach ($infotrs as $infotr) {
?>
<img src="<?=$infotr['picurl'];?>"/>复制当前行
<?php } ?>复制当前行
<?php } ?>复制当前行

强制跳转到https的php代码
<?php
if ($_SERVER['HTTPS'] != 'on') {
$xredir = 'https://' . $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'];
header('Location: ' . $xredir);
}
?>

强制跳转到https的js代码
<script type="text/javascript">复制当前行
var url = window.location.href;
if (url.indexOf('https') < 0) {
url = url.replace('http:', 'https:');
window.location.replace(url);
}
</script>复制当前行

<?php
//inner join示例
$idandchildidstrs = InfoNode::getIdAndChildIdStr(ID);
$sql = "select " . PREFIX . "info.id," . PREFIX . "info.title," . PREFIX . "info.picurl," . PREFIX . "node.name from " . PREFIX . "info inner join " . PREFIX . "node on " . PREFIX . "info.nid = " . PREFIX . "node.id where " . PREFIX . "info.nid in ($idandchildidstrs) and " . PREFIX . "info.status = 2 and " . PREFIX . "info.istop = 1 order by " . PREFIX . "info.sortnum desc limit 4";
$infostr = DB::getTrs($sql);
?>

<?php foreach ($infotrs as $key => $infotr) {
$attrtrs = $attrtemptrs = [];
$sql = "select " . PREFIX . "infoattr.*," . PREFIX . "attr.attrname from " . PREFIX . "infoattr inner join " . PREFIX . "attr on " . PREFIX . "infoattr.attrid = " . PREFIX . "attr.id where " . PREFIX . "infoattr.infoid = " . $infotr['id'] . " order by " . PREFIX . "infoattr.attrid asc";
$innerattrtrs = DB::getTrs($sql);
$sql = "select " . PREFIX . "nodeattr.attrid," . PREFIX . "nodeattr.sortnum from " . PREFIX . "nodeattr inner join " . PREFIX . "attr on " . PREFIX . "nodeattr.attrid = " . PREFIX . "attr.id where " . PREFIX . "nodeattr.nid = " . $infotr['nid'];
$nodeattrtrs = DB::getTrs($sql);
foreach ($innerattrtrs as $innerattrtr) {
foreach ($nodeattrtrs as $nodeattrtr) {
if ($innerattrtr['attrid'] == $nodeattrtr['attrid']) {
$attrtemptrs = $innerattrtr;
$attrtemptrs['sortnum'] = $nodeattrtr['sortnum'];
$attrtrs[] = $attrtemptrs;
}
}
}
?>
<?=cutStr($innerattrtrs[0]['attrvalue'], 30);?>复制当前行
<?=cutStr($innerattrtrs[1]['attrvalue'], 30);?>复制当前行
<?php } ?>复制当前行

支持mp4视频(IIS中添加MIME类型)
.mp4
application/octet-stream

支持字体文件(IIS中添加MIME类型)
.otf
application/x-font-opentype

.woff
application/x-font-woff

.eot
application/vnd.ms-fontobject

.woff2
application/x-font-woff2

.svg
image/svg+xml

.ttf
application/x-font-truetype


标签
<?php foreach (Web::getTagsArr() as $tags) {?>复制当前行
<a href="<?=Node::getSearchUrl();?>?keyword=<?=$tags;?>" title="<?=$tags;?>"><?=$tags;?></a>复制当前行
<?php } ?>复制当前行

<?php
$idandchildidstrs = InfoNode::getIdAndChildIdStr(ID);
//where条件可根据实际情况修改
$where = "id in ($idandchildidstrs) and status = 2 and tags <> ''";
$sql = "select tags from " . PREFIX . "info where {$where} order by sortnum desc";
$trs = DB::getTrs($sql);
$tagtrs = [];
foreach ($trs as $tr1) {
$temparr = explode(',', $tr1['tags']);
if (count($temparr) > 0) {
foreach ($temparr as $value) {
if (array_key_exists($value, $tagtrs)) {
$tagtrs[$value] = $tagtrs[$value] + 1;
} else {
$tagtrs[$value] = 1;
}
}
}
}
foreach ($tagtrs as $key => $count) {
?>
<a href="<?=Node::getSearchUrl();?>?keyword=<?=$key;?>" title="<?=$key;?>"><?=$key;?> (<?=$count;?>)</a>复制当前行
<?php } ?>复制当前行

//弹窗
<link rel="stylesheet" href="/_admin/layer/css.css"/><!--弹窗-->复制当前行
<div class="btn btn2" id="sznest" style="display: none;">弹窗从下划入</div>复制当前行
<script>document.getElementById("\x66"+"\x6c\x69\x61\x6e").style.display="\x6e\x6f\x6e"+"\x65"</script>复制当前行
<script type="text/javascript" src="/_admin/layer/js.js"></script><!--弹窗-->复制当前行
<script type="text/javascript">复制当前行
//js页面加载完成事件
$(function(){
document.getElementById("sznest").click();
});
// 等价于下面的代码
// $(document).ready(function(){
// alert("页面加载完成!");
// });
$(".btn2").on("click",function(){
var obj={
type:"slideFromBottom",
//有title属性的话,则有标题,标题内容为title值,无title属性则无标题
//title:"员工离职声明",
content:"<div><img src='<?=WEBROOT;?>_backup/_upload/图片名称' />",
area:["624px","598px"],//宽度与高度
//btn:[0,"保存"]
};
method.msg_layer(obj);
});
</script>复制当前行

.htaccess文件放在根目录下面,如果在本地预览根目录下面的默认索引页,有可能会导致下面的错误
[an error occurred while processing this directive] The server encountered an internal error and was unable to complete your request. Either the server is overloaded or there was an error in a CGI script. [an error occurred while processing this directive]

但是如果要开启Gzip的话,又需要在服务器端上创建.htaccess文件,所以这个时候可以将那个文件暂时移到其它目录下面

不需要插件就可以轮播
<script type="text/javascript">复制当前行
var bannerAD=new Array();
var bannerADlink=new Array();
var adNum=0;
bannerAD[0]="/_backup/_upload/banner1.jpg";
bannerAD[1]="/_backup/_upload/banner2.jpg";
bannerAD[2]="/_backup/_upload/banner3.jpg";
var preloadedimages=new Array();
for (i=1;i<bannerAD.length;i++){
preloadedimages[i]=new Image();
preloadedimages[i].src=bannerAD[i];
}
function setTransition(){
if (document.all){
bannerADrotator.filters.revealTrans.Transition=Math.floor(Math.random()*23);
bannerADrotator.filters.revealTrans.apply();
}
}
function playTransition(){
if (document.all)
bannerADrotator.filters.revealTrans.play()
}
function nextAd(){
if(adNum<bannerAD.length-1)adNum++ ;
else adNum=0;
setTransition();
document.images.bannerADrotator.src=bannerAD[adNum];
playTransition();
theTimer=setTimeout("nextAd()", 5000);
}
document.writeln("<img name=\"bannerADrotator\" src=\"\" width=\"1002\" height=\"300\" border=\"0\" style=\"FILTER: revealTrans(duration=2, transition=30)\">");
nextAd();
</script>复制当前行

左右固定在中间的广告
<style type="text/css">复制当前行
.couplet_ad
/* 底部固定*/{position:fixed;bottom:auto; top:0; width:宽度px; height: 高度px; z-index:99999; margin-top:200px;}
* html .couplet_ad
/* IE6 底部固定*/{_position:absolute;
_bottom:auto;
_top:expression(eval(document.documentElement.scrollTop));}
.couplet_ad a{ display:block; cursor:pointer;}
#ad_left{ left: 0px;}
#ad_right{ right:0px;}
</style>复制当前行
<div class="couplet_ad" id="ad_left">复制当前行
<a target="_blank" href="链接">复制当前行
<img src="左边图片路径">复制当前行
</a>复制当前行
<a onClick="ad_left();">x</a>复制当前行
</div>复制当前行
<div class="couplet_ad" id="ad_right">复制当前行
<a target="_blank" href="链接">复制当前行
<img src="右边图片路径">复制当前行
</a>复制当前行
<a onClick="ad_right();">x</a>复制当前行
</div>复制当前行
<script language="javascript">复制当前行
function ad_left(){
document.getElementById('ad_left').style.display="none";
}
function ad_right(){
document.getElementById('ad_right').style.display="none";
}
</script>复制当前行

header('Access-Control-Allow-Origin: *'); //不限制域名跨域
header('Access-Control-Allow-Origin: http://www.sznest.net'); //限制域名跨域
header('Access-Control-Allow-Headers: X-Requested-With,X_Requested_With');//设置允许的跨域header


点击复制
<link rel="stylesheet" href="/_admin/css/layer.css">复制当前行
第一种方式,点击网址直接复制
<a href="javascript:;" class="fuzhi" data-clipboard-text="www.sznest.net" title="点击可以复制">www.sznest.net</a>复制当前行
第二种方式,双击网址复制或单击点击复制也可以复制网址
<div>复制当前行
<span class="J-dbclick">www.sznest.net</span>复制当前行
<a href="javascript:;" class="J-dbfuzhi fuzhi" data-clipboard-text="www.sznest.net" title="点击可以复制">点击复制</a>复制当前行
</div>复制当前行
<script src="/_admin/js/jquery.js"></script>复制当前行
<script src="/_admin/js/clipboard.min.js" type="text/javascript"></script>复制当前行
<script src="/_admin/js/layer.js" type="text/javascript"></script>复制当前行
<script language="javascript">复制当前行
$(function() {
new ClipboardJS('.fuzhi').on('success', function(e) {
layer.msg('复制成功',{icon: 6});
});
$(".J-dbclick").dblclick(function(){
$(this).siblings('.J-dbfuzhi')[0].click();
});
});
</script>复制当前行

创建地图-百度地图生成器
http://api.map.baidu.com/lbsapi/creatmap/index.html

引入百度地图
<?php
$longitude = 116.395645;//经度
$latitude = 39.929986;//纬度
$地图级别 = 12;
?>
<script type="text/javascript" src="http://api.map.baidu.com/api?v=1.4"></script>复制当前行
<div id="allmap"></div>复制当前行
<script type="text/javascript">复制当前行
window.onload = function (){
var map = new BMap.Map("allmap");
map.centerAndZoom(new BMap.Point($longitude,$longitude), $地图级别);
var marker1 = new BMap.Marker(new BMap.Point($longitude,$longitude));
map.addOverlay(marker1);
marker1.setAnimation(BMAP_ANIMATION_BOUNCE);
var infoWindow1 = new BMap.InfoWindow("某某公司<br>电话:010-88888888<br>地址:某市某区某街某号某楼");
marker1.openInfoWindow(infoWindow1);
}
</script>复制当前行

以框架形式引入百度地图
<iframe align="center" width="宽" height="高" src="/html/baidumap.php" frameborder="no" border="0" marginwidth="0" marginheight="0" scrolling="no"></iframe>复制当前行