首页
关于本站
网站模板
代码教程
Emlog教程
米拓教程
SEO优化教程
Ecshop教程
zblog教程
Excel技巧
电脑软件教程
互联网
免费资源
网络新闻
留言咨询
在线问答
申请友链
网址导航
联系舍力
搜索
舍力
登录
搜索
舍力
静以修身。
累计撰写
1140
篇文章
累计收到
3657
条评论
首页
栏目
首页
关于本站
网站模板
代码教程
Emlog教程
米拓教程
SEO优化教程
Ecshop教程
zblog教程
Excel技巧
电脑软件教程
互联网
免费资源
网络新闻
留言咨询
在线问答
申请友链
网址导航
联系舍力
Emlog教程
2017-5-12
Emlog插件所创建的数据表在后台备份中显示的教程
以前舍力写过一些插件,也看过很多的插件,但是大部分插件创建的数据库表在后台的备份中是不会显示出来的,估计都是漏放了挂载点 官方给出的插件挂载点:doAction('data_prebakup') === 所在文件:admin/data.php 描述:扩展备份数据库页面,可以对插件增加的表进行备份 可自行加上如下代码即可解决: function 插件名_sl_data(){global $tables;array_push($tables, '表1','表2');} addAction('data_prebakup', '插件名_sl_data'); 需要说明一下的是,创建的表必须是 emlog_ 开头的,其中的表1、表2为 emlog_ 后面的部分。 当然了,你也可以修改admin/data.php来实现。自己去慢慢捣鼓吧,舍力在这里就不说明了,也非常的简单。 下面是修改后的演示图片
2017年5月12日
12670 阅读
2 评论
Emlog教程
2017-5-9
Emlog评论通过QQ获取昵称资料
使用emlog博客程序朋友有采用第三方评论,也有采用内置评论的,使用第三方评论的还好,可以直接QQ登陆,但是如果是采用内置评论的很多访客都不愿意填写信息,因此可能会丢失很多评论。今天舍力分享一篇采用js根据用户填写的QQ号码拉取用户的昵称信息,然后自动填写表单,这样用户只需要输入QQ就能实现自动填写了。代码以默认模板为例。 第一步、我们要确认模板是否有加载jquery,emlog默认jquery代码如下(放入<head></head>之间),如果有加载的请自动忽略此步。 <script src="<?php echo BLOG_URL;?>include/lib/js/jquery/jquery-1.7.1.js" type="text/javascript"></script> 第二步、找到模板文件module.php中的 <input type="hidden" name="gid" value="<?php echo $logid; ?>" /> 在上面代码的后面加入代码 <input id="qq" type="text" name="qq" maxlength="49" placeholder="填入qq自动获取信息" value="" size="22" tabindex="0"><div id="error"></div><div id="ajaxloading"></div> 然后在每一个input加上id信息,例如: name="commail" 后面添加 id="commail" 第三步、建立一个文件夹,如qq放入根目录中,在里面建一个文件index.php,代码如下 <?php header("Content-type: application/json; charset=utf-8"); $qq = $_GET; $html = file_get_contents('http://r.qzone.qq.com/fcg-bin/cgi_get_portrait.fcg?uins='.$qq); $nic = explode(',',$html); $name = trim(mb_convert_encoding($nic, "UTF-8", "GBK"),'"'); $img = file_get_contents('http://ptlogin2.qq.com/getface?appid=1006102&uin='.$qq.'&imgtype=3'); preg_match('/pt.setHeader\((.*?)\);/',$img,$picc); $pic = json_decode($picc); $json = $name; $json = $pic->$qq; echo $_GET.'('.json_encode($json).')'; ?> 第四步、加入js代码,代码如下(放在<head></head>之间,代码中的网址路径../go/qq/需要改成你自己创建的,即第三步中创建的路径): <script> $(function () { Lotto = {}; Lotto.comment = function(){ $("#qq").blur(function(){ $('#qq').attr("sl",true); $("#ajaxloading").html('<img src="/go/qq/loading.gif"><a style="font-size:12px;margin-left:5px;">正在获取QQ信息..</a>'); $.getJSON('/go/qq/?qq='+$('#qq').val()+'&callback=?', function(q){ if(q.name){ $('#comname').val(q.name); $('#commail').val($('#qq').val()+'@qq.com'); $('#comurl').val('http://user.qzone.qq.com/'+$('#qq').val()); $('#qq').attr("disabled",false); $("#ajaxloading").hide(); }else{ $("#ajaxloading").hide(); $("#error").html('qq账号错误').show().fadeOut(4000); $('#qq').attr("sl",false); } }); }); } Lotto.run = function(){this.comment();}; Lotto.run(); }); </script> 友情提示:朋友网接口失效,已经更改为QQ空间接口,请无法获取资料的朋友请更改第四步的代码。2018-07-04 统一回复评论中提到的几个问题: 1、js你想放在哪里都可以,只要调用出来即可,正常都是放入<head></head>之间
2017年5月9日
18270 阅读
40 评论
Emlog教程
2017-5-8
只修改模板用纯js实现Emlog评论验证防止垃圾评论教程
使用emlog博客程序的朋友,大部分可能经常遇到一些垃圾评论,舍力以前有写过一篇《给EMLOG评论框加上√防止垃圾评论》,今天讲的教程可以和上面的同时使用的。以下教程以默认模板为例 第一步、在全局js中加入如下代码:里面的一些正则可以自行替换成你想要的 function SLyz(){ if(document.commentform.comname.value.length == 0){alert("请输入昵称");document.commentform.comname.focus();return false;} var reg = /^(+?)*+@(+?)*+\.{2,3}$/;if(!reg.test(document.commentform.commail.value)){alert("1、邮箱地址是否填写 \r\n2 、邮箱地址是否正确");document.commentform.commail.focus();return false;} var reg = /^(http:\/\/|https:\/\/)(({0,61})?\.)+{2,6}$/;if(!reg.test(document.commentform.comurl.value) && (document.commentform.comurl.value)){alert("网址格式必须加http://或https://且网址结尾不能有“/”;次选为选填项,可不填写");document.commentform.comurl.focus();return false;} if(document.commentform.comment.value.length == 0){alert("请填写评论内容且评论内容需包含中文");document.commentform.comment.focus();return false;} } 第二步、在模板文件module.php中找到代码 <form method="post" name="commentform" action="<?php echo BLOG_URL; ?>index.php?action=addcom" id="commentform"> 修改为下面代码 <form method="post" name="commentform" action="<?php echo BLOG_URL; ?>index.php?action=addcom" id="commentform" onSubmit="return SLyz();"> 以上2步就完成了
2017年5月8日
9365 阅读
1 评论
Emlog教程
2017-4-23
EMlog实现分页Ajax无限加载功能:jquery.ias.js
带算为自己模版添加上ajax无限加载功能,舍力在百度找了好一阵子,才找到合适的ajax翻页功能。Infinite AJAX Scroll通过很简单的设置,就可以让Emlog支持分页Ajax无线加载功能。 下面舍力就以Emlog本博客主题 default(默认) 主题为例: 1、下载 jquery.ias.min.js、jquery.js(文章尾部有下载地址) 2、把 jquery.ias.min.js、jquery.js 拷贝到 content/templates/default/js/ 文件夹下 3、在编辑器中打开 content/templates/default/header.php,在<head></head>之间加入下面代码 <script src="<?php echo TEMPLATE_URL;?>js/jquery.js" type="text/javascript"></script> <script src="<?php echo TEMPLATE_URL;?>js/jquery.ias.min.js" type="text/javascript"></script> 4、在log_list.php 需要改2个地方 找到代码 <?php if (!empty($logs)): foreach($logs as $value): ?> 后面加入 <div class="sheli"> 然后在代码 <?php endforeach; else: ?> 前面加入代码 </div> 在<div id="pagenavi"><?php echo $page_url;?></div>在后面加入代码 <script> var ias = $.ias({ container: ".content", //包含所有文章的元素 item: ".sheli", //文章元素 pagination: "#pagenavi", //分页元素 next: "#pagenavi a", //下一页元素 }); ias.extension(new IASTriggerExtension({ text: '<div class="gengduo">点击查看更多内容</div>', //此选项为需要点击时的文字 offset: 1, //设置此项后,到 offset+1 页之后需要手动点击才能加载,取消此项则一直为无限加载 })); ias.extension(new IASSpinnerExtension()); ias.extension(new IASNoneLeftExtension({ text: '<div class="gengduo">已经是全部内容了</div>', // 加载完成时的提示 })); </script> 按照以上步骤就可以弄好了,当然css就自己去写了,舍力就不普及了。可能会与一些模板产生js冲突,自己研究一下就可以,测试请用默认模板。 以上代码经测试会重复加载内容,可以通过在下一页的a标签加入id=“slnext”,然后把next: "#pagenavi a"改为next: "#pagenavi a#slnext"即可解决问题 js下载地址
2017年4月23日
13886 阅读
13 评论
Emlog教程
2017-4-4
解决Emlog文章详情页伪静态后URL不是唯一地址的教程
使用EM博客程序的朋友应该知道,伪静态后URL不是唯一性的,舍力举个很简单的例子: 默认地址为:http://www.shuyong.net/1.html 地址1:http://www.shuyong.net/xx/931.html, 地址2:http://www.shuyong.net/?post=931 也是可以正常打开的,其中的XX为任意数字或者字母 这个是因为伪静态规则的问题,因为正则匹配 /(+)(.html) 可以匹配 / 开始 一个或多个 不是 . / ? = 之外的字符 然后.html 结束的字符串 所以不管你加什么,都只会匹配 /1.html 这一部分,那么如何解决这一问题呢?舍力不懂伪静态规则,不过用php到是解决了这个问题,舍力提供的方法非常的简单粗暴,不知道有没有Bug的哦 本段代码通用代码,直接把下面代码放入echo_log.php和page.php第一行就可以了 <?php $page=isset($params)?intval($params):1;//文章页代码 $ymurl=$_SERVER.$_SERVER;//浏览器获取URL //$emurl=preg_replace('/(http:\/\/|https:\/\/|)*/','',Url::log($logid));//去除http://或https://的默认url $emurl=str_replace(array("http://","https://"),'',Url::log($logid));//去除http://或https://的默认url if($emurl!=$ymurl && $page==1){//判断2者是否相同,是否第一页 header('HTTP/1.1 301 Moved Permanently'); header('Location:'.Url::log($logid));//不同时调整到默认URL } ?> 如何没有修改过em内核路径的朋友们建议使用以下代码(速度更快),即没有按此教程《emlog去除分类目录前的sort》修改过的,如果有修改过就只能使用上面代码 <?php $page=isset($params)?intval($params):1; if(BLOG_URL.trim(Dispatcher::setPath(),'/') !=Url::log($logid) && $page==1 && $p==''){ header('HTTP/1.1 301 Moved Permanently'); header('Location:'.Url::log($logid)); } ?> 如遇问题,请在本页留言。 注意:使用上面代码,如果文章页有分页的可能造成错误哦 -=-以下代码是使用了本站教程《如何增加文章内容(日志)分页功能的方法分享》后使用 也是直接把下面代码放入echo_log.php和page.php第一行就可以了 <?php $p=$_GET;$page=isset($params)?intval($params):1; $ymurl=$_SERVER.$_SERVER;//获取访问地址 //$emurl=preg_replace('/(http:\/\/|https:\/\/|)*/','',Url::log($logid));//去除http或https的EM当前地址 $emurl=str_replace(array("http://","https://"),'',Url::log($logid));//去除http://或https://的默认url if($emurl!=$ymurl && $page==1 && $p==''){ header('HTTP/1.1 301 Moved Permanently'); header('Location:'.Url::log($logid)); } ?>
2017年4月4日
26605 阅读
12 评论
Emlog教程
2017-4-3
修改Emlog默认动态链接?post=xxx的方法
今天逛论坛的时候发现有人在问,如何更改默认的链接显示方法,以前有发布过一篇《emlog程序去除文章详情页中的“post-”》,此文是教大家如何在伪静态下修改链接的显示方法,好了,不废话了,回到今天的主题,首先要注意的是,此链接一经修改,原来默认的?post=xxx就会失效。 举例说明,比如将 http://域名/?post=1 修改为 http://域名/?sl=1 第一步、在根目录文件include/lib/url.php中找到 $logUrl = BLOG_URL . '?post=' . $blogId;并把其中的 post 改为 sl; 第二步、在根目录文件include/lib/option.php中找到 'reg_0' => '|^./\?(post)=(\d+)(&(comment-page)=(\d+))?(.)?$|', 并把其中的 post 改为 sl; 第三步、在根目录文件include/controller/log_controller.php中找到 if ($params == 'post') { 并把其中的 post 改为 sl; 最后要提醒一下的是,以上三步修改的"sl"必须一致,否则会造成链接打不开。修改前请注意备份,如有疑问请在本页留言
2017年4月3日
11549 阅读
2 评论
Emlog教程
2017-3-23
将多说的json评论数据导入到emlog博客程序的数据库
www.neurallinker.com/287.misaka
2017年3月23日
8427 阅读
0 评论
Emlog教程
2017-3-7
Emlog非插件实现投稿功能
此方法并不涉及内核代码修改,只需要建立一个文件夹即可,可以把文章放入草稿、待审或者直接发布,具体看下面教程。 温馨提示:本教程仅在Emlog5.3.1版本下测试正常,其他版本未做测试,不确保能用的哦!!!以下代码均为舍力自用代码,懂html的可自行修改,如有疑问请在本页留言,演示地址:www.shuyong.net/tougao 使用步骤: 1、首先建立文件夹取名为tougao并放入博客的根目录; 2、在tougao文件夹中建立一个文件index.php放入如下代码: <?php require_once '../init.php';//emlog程序此文件的路径,如在一级栏目中请去除../ define('TEMPLATE_PATH', TPLS_PATH.Option::get('nonce_templet').'/');//前台模板路径 $sl = isset($_GET)?intval($_GET):0; global $CACHE; $options_cache = $CACHE->readCache('options'); $navibar = unserialize($options_cache); $blogname = $options_cache;?> <!DOCTYPE html><html><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no"> <meta http-equiv="Cache-Control" content="no-transform" /> <meta http-equiv="Cache-Control" content="no-siteapp" /> <title>在线投稿 - <?php echo $blogname;?></title> <meta name="keywords" content="" /> <meta name="description" content="" /> <script charset="utf-8" src="<?php echo BLOG_URL;?>admin/editor/kindeditor.js"></script> <style> body{background:#fff;font:14px/1.5 tahoma,arial,"Microsoft YaHei";margin:0px;padding:0px;font-size:12px;}ul,li,p,h1,h2,h3,h4,h5,h6{padding:0px;margin:0px;list-style:none;}a{color:#444;text-decoration:none;}a:hover{color:#F36;} .sltgq{margin:auto;overflow:hidden;clear:both; max-width:800px;} .sltgbt{border-bottom:1px dashed #ccc;line-height:30px;height:30px;font-size:16px;padding-left:10px; margin-top:20px;font-weight:bold;color:#F00;} .tougao1,.tougao2{margin:0 10px;overflow:hidden;clear:both;} .tougao1 li{clear:both; overflow:hidden;} .tougao1 li p{line-height:20px;font-weight:bold; margin:5px 0;} .tougao1 li input{height:26px;line-height:26px;} .tougao1 li b{color:#F00;} .tougao2{margin-top:10px; width:90%;} .tougao2 li{overflow:hidden;float:left; margin-right:10px;} .tougao2 li p{float:left;border:1px solid #999;height:30px;line-height:30px;padding:0 10px; font-weight:bold;} .tougao2 li input{height:26px; line-height:26px;} .tougao2 li img{ margin-top:5px;} .button input{height:32px;float:left;} .tougao2 label{height:32px;line-height:32px; float:right;} .nr{margin:auto;overflow:hidden;clear:both; margin-bottom:20px;} .nr ul{margin:10px; line-height:25px; font-size:14px;} .foot{margin:10px auto;text-align:center;clear:both;overflow:hidden;border-top:1px dashed #ccc;padding:10px 0;line-height:22px;font-size:12px;background:#fff;} </style> </head><body> <?php if($sl==0){$Sort_Model = new Sort_Model();$sorts = $Sort_Model->getSorts();?> <div class="sltgq"><div class="sltgbt">在线投稿</div> <form action="<?php echo BLOG_URL;?>tougao/?sl=1" method="post" enctype="multipart/form-data" name="addlog" > <div class="tougao1"> <li><p>文章标题 <b>*</b> </p><input name="title" maxlength="200" style="width:98%;" placeholder="文章标题大于10字少于30字" /></li> <li><p>作者昵称</p><input name="tags" maxlength="200" style="width:98%;" placeholder="作者名称,10字以内," /></li> <li><p>原文地址</p><input name="excerpt" maxlength="200" style="width:98%;" placeholder="不加http://,否则无法提交,如本站首发请不要填写任何网址信息" /></li> <li><p>注意事项:文章内容不得少于300字,请排版好,去掉没有必要的html代码,内容中的链接自动过滤</p><textarea name="text" style="width:98%;height:400px;" id="text"></textarea><script>loadEditor('text');</script></li></div> <div class="tougao2"> <li><select name="sortid" style="width:100px;height:30px;"><option value="-1">选择分类...</option><?php foreach($sorts as $val){?><option value=<?php echo $val;?>><?php echo $val;?></option><?php }?></select></li> <li><p>验 证 码</p><p>SheLi</p></li> <li><input name="imgcode" type="text" size="5" tabindex="5" /></li> <div class="button"><input type="submit" value="提交" onclick="return checkform();" /></div><label for="sheli"><input type="checkbox" value=9 id="sheli" name="sheli" required autocomplete="on" title="发表评论确认框:请勾选我再发表评论!"><font color="red">请勾选我再提交!</font></label></div> </form> <div class="nr"><div class="sltgbt">注意事项</div><ul> 1、要认真写作,写完后多读几遍,注意排版及去除不必要的html代码<br> 2、请尊重原作者的权益,请注明文章的作者、原文地址;如果不提供这些信息,文章可能不能通过审核;<br> 3、本站接受稿件的前提是该信息对广大用户有所帮助,或者比较有创意的产品广告宣传;<br> 4、标题力求简短、醒目、新颖、吸引人,杜绝标题党,标题尽量不少于10个汉字,不多于30个汉字;<br> 5、文章应避免用 "今天"、"昨天",应改成具体日期;请尽量给文章配上图片(请注意调用的图片是否屏蔽外部调用); </ul></div> <div class="foot">Copyright © <?php echo date('Y');?> <?php echo $options_cache;?> 版权所有</div> </div> <?php }elseif($sl==1){ $Log_Model = new Log_Model(); $Tag_Model = new Tag_Model(); $title = isset($_POST) ? addslashes(trim($_POST)) : ''; $content = isset($_POST) ? addslashes(trim($_POST)) : ''; $excerpt = isset($_POST) ? addslashes(trim($_POST)) : ''; $tags = isset($_POST) ? addslashes(trim($_POST)) : ''; $imgcode = isset($_POST) ? addslashes(trim(strtoupper($_POST))) : ''; $slCode = 'SHELI'; $author = ''; $sortid = isset($_POST) ? intval($_POST) : $config; $date = time() + Option::get('timezone') * 3600; $sb_title = mysql_query("select title from emlog_blog where title='$title' limit 1"); $sb_excerpt = mysql_query("select title from emlog_blog where excerpt='$excerpt' limit 1"); if(empty($title) || strlen($title) < 30 || strlen($title) > 90 || mysql_fetch_array($sb_title)){emMsg('提交失败:标题出错,可能以下原因造成<br />1、少于10个字或多于30个字<br />2、已经存在','javascript:history.back(-1);'); }elseif(strlen($tags) > 30){emMsg('提交失败:网址名称出错,多于10个字','javascript:history.back(-1);'); }elseif(!empty($excerpt) && preg_match("/^+\.+\’:+!]*()*$/",$excerpt) == false){emMsg('提交失败:原文地址出错,可能以下原因造成<br />1、是否加了http://<br />2、网址格式是否正确<br>3、已经存在','javascript:history.back(-1);'); //}elseif(mysql_fetch_array($sb_excerpt)){emMsg('提交失败:原文地址出错,此网址已经发表过文章','javascript:history.back(-1);'); }elseif(empty($content) || strlen($content) < 900 ){emMsg('提交失败:内容没有按要求填写,少于300个字','javascript:history.back(-1);'); }elseif(preg_match("/^**$/",$sortid)==false &&$config =='0'){emMsg('提交失败:请选择分类','javascript:history.back(-1);'); }elseif($imgcode != $slCode){emMsg('提交失败:验证码错误','javascript:history.back(-1);'); } $logData = array( 'title' => $title, 'alias' => '', 'content' => $content, 'excerpt' => $excerpt, 'author' => '2',//指定作者ID 'date' => $date, 'top'=> 'n', 'sortop'=> 'n', 'sortid'=> $sortid, 'allow_remark' => 'y', 'hide' => 'y', //n为直接通过,y为放入草稿 'checked' => 'n',//n不需要审核,y为需要审核 'password' => '' ); $blogid = $Log_Model->addlog($logData); $Tag_Model->addTag($tags, $blogid); header('Location:'.BLOG_URL.'tougao/?sl=2');die;} elseif($sl==2){emMsg('提交成功,文章将在审核后发布。<br />请耐心等待,非常感谢您的贡献!',''.BLOG_URL.'tougao');}?> </body></html>
2017年3月7日
9933 阅读
5 评论
Emlog教程
2016-12-15
Emlog文章页title标题优化的几种方法
在seo优化中,标题的优化占着举足轻重的地位,无论是从用户体验的角度出发,还是从搜索引擎的排名效果出发,title标题都是页面优化最最重要的因素。对于一些大型网站,一般title标题进行如下设置: 首页title:网站名称 网站栏目title:栏目标题名称_网站名称 详细页面title:页面标题内容_栏目标题_网站名称 而emlog的详细页面title:页面标题内容_网站名称。这次改造是对emlog的详细页面title(文章页面)为页面标题内容_栏目标题_网站名称。 一、修改Emlog程序内核的方法 1、修改include/controller/log_controller.php文件。 <?php if($logid){$log_cache_sort = $CACHE->readCache('logsort');?><title><?php echo $log_title;if($log_cache_sort){echo ' - '.$log_cache_sort;}echo ' - '.$blogname;?></title><?php }else{?><title><?php echo $site_title; ?></title><?php }?> switch ($log_title_style) { case '0': $site_title = $log_title; break; case '1': $site_title = $log_title . ' - ' . $blogname; break; case '2': $site_title = $log_title . ' - ' . $site_title; break; } 这些代码大概在72~82行,修改为如下代码: $sort_cache = $CACHE->readCache('sort'); if (!isset($sort_cache)) { $log_title_style=$log_title_style>2?($log_title_style-2):$log_title_style; } $sort = $sort_cache; $sortName = $sort; //meta switch ($log_title_style) { case '0': $site_title = $log_title; break; case '1': $site_title = $log_title . ' - ' . $blogname; break; case '2': $site_title = $log_title . ' - ' . $site_title; break; case '3': $site_title = $log_title. ' - ' . $sortName . ' - ' . $blogname; break; case '4': $site_title = $log_title. ' - ' . $sortName . ' - ' . $site_title; break; } 2、修改admin/seo.php文件 $opt0 = $opt1 = $opt2 = ''; 大概在17行,修改为如下代码: $opt0 = $opt1 = $opt2 = $opt3 = $opt4 = ''; 3、修改admin/views/seo.php文件 <option value="0" <?php echo $opt0; ?>>文章标题</option> <option value="1" <?php echo $opt1; ?>>文章标题 - 站点标题</option> <option value="2" <?php echo $opt2; ?>>文章标题 - 站点浏览器标题</option> 大概在35~37行,修改为如下代码: <option value="0" <?php echo $opt0; ?>>文章标题</option> <option value="1" <?php echo $opt1; ?>>文章标题 - 站点标题</option> <option value="2" <?php echo $opt2; ?>>文章标题 - 站点浏览器标题</option> <option value="3" <?php echo $opt3; ?>>文章标题 - 分类标题 - 站点标题</option> <option value="4" <?php echo $opt4; ?>>文章标题 - 分类标题 - 站点浏览器标题</option> 4、登录后台--设置--SEO设置 中选择你需要的格式即可 二、直接修改Emlog程序模板的方法(以默认模板为例) 找到模板文件header.php中的 <title><?php echo $site_title; ?></title> 用下面代码替换即可 <?php if($logid){$log_cache_sort = $CACHE->readCache('logsort');?><title><?php echo $log_title;if($log_cache_sort){echo ' - '.$log_cache_sort;}echo ' - '.$blogname;?></title><?php }else{?><title><?php echo $site_title; ?></title><?php }?>
2016年12月15日
12277 阅读
8 评论
Emlog教程
2016-11-13
Emlog博客文章签名档插件(修改)
cxryun.cn
2016年11月13日
8298 阅读
3 评论
Emlog教程
2016-11-8
emlog博客程序判断插件是否安装并启用的方法
在制作模板的时候,可能会用到一些特定的插件,如果使用者不安装插件的话,会造成模板无法使用,所以想弄个提示使用者安装插件并启用,代码如下: <?php if(!function_exists('插件的标签')){emMsg('XX插件未安装或者未启用', BLOG_URL.'admin/plugin.php');}?> 上面这一段函数的效果是需要知道插件的标签,如果实现不知道插件标签,还可以用以下代码来实现<?php $DB = MySql::getInstance();$slsql = $DB->query("SELECT * FROM ".DB_PREFIX."options WHERE option_value like '%插件名称%'"); if($DB->num_rows($slsql) < 0){emMsg('XX插件未安装或者未启用', BLOG_URL.'admin/plugin.php');}?>
2016年11月8日
8458 阅读
1 评论
Emlog教程
2016-11-8
利用cookie应该可以实现php指定时间随机一次
在取出数据之后把数据缓存在客户端,然后cookie指定一个时间周期,在下次刷新时先判断这个cookie时间到期没,如果到期了就重新刷新,否则就调用本地缓存。以下是以emlog博客为案例的代码 <?php //载入全局加载项 require_once 'init.php'; //链接数据库 $DB = MySql::getInstance(); /*****************根据条件随机获取20条文章的GID***************/ $sql = "SELECT * FROM ".DB_PREFIX."blog ORDER BY rand() DESC LIMIT 20"; $list = $DB->query($sql); while($row = $DB->fetch_array($list)){ $arrgid.= $row.','; } $arrgid = substr($arrgid,0,strlen($arrgid)-1);//去除最后一个逗号 $arr = explode(",",$arrgid);//将获取的gid以逗号分割为数组 /***********函数,根据文章gid输出文章标题与连接**************/ function sylist($gid){ $DB = MySql::getInstance(); $sql = "SELECT * FROM ".DB_PREFIX."blog WHERE gid = '{$gid}'"; $list = $DB->query($sql); while($row = $DB->fetch_array($list)){ return '<li><a target="_blank" href="'.Url::log($row).'">'.$row.'</li>'; } } /***********根据cookie在指定时间内获取内容**************/ //判断cookie【gid】是否存在 if (isset($_COOKIE)){ //判断cookie【date】过期时间是否存在 if(isset($_COOKIE)){ echo '过期时间为:'.date("Y-m-d H:i:s", $_COOKIE).'<br/><br/>'; //判断时间是否过期,当前时间大于cookie【date】中储存的时间则为过期 if(time() > $_COOKIE){ //如果过期了,重新创建过期时间 setcookie("date", "", time()-3600);//删除过期时间 setcookie("date", time()+60*1,time()+3600);//重新创建过期时间,其中的60*1为一分钟 //刷新内容 setcookie("gid", "", time()-3600);//删除过期内容 setcookie("gid", $arrgid,time()+3600);//重新创建内容 } //输出内容 $arr = explode(",",$_COOKIE); //循环输出数组 foreach($arr as $value){ echo sylist($value); } }else{ //如果不存在,则创建一个距离当前时间一分钟的时间为过期时间 setcookie("date", time()+60*1,time()+3600);//其中的60*1为一分钟 //如果date不存在时则会输出空白,此时随机输出内容 foreach($arr as $value){ echo sylist($value); } } }else{ setcookie("date", time()+60*1,time()+3600);//其中的60*1为一分钟 setcookie("gid", $arrgid,time()+3600);//如果gid不存在,则创建gidcookie,内容为随机获取的文章gid //如果gid不存在时则会输出空白,此时随机输出内容 foreach($arr as $value){ echo sylist($value); } } ?> 本文代码由emlog学院陈子文提供,舍力仅作保存分享之用!代码演示请转到daohang.shuyong.net查看
2016年11月8日
13485 阅读
0 评论
Emlog教程
2
3
4
5
6