PHP开发案例:zblog插件开发之E58分类目录
![](/skin/images/mar_09.png)
![](/skin/images/mar_10.png)
![](/skin/images/mar_07.png)
![](/skin/images/mar_08.png)
是不是觉得文煞好久没有更新文章了,最近在研究一个zblog插件。E58分类目录是一款zblog分类目录插件,可以让你的zblog网站瞬间变成一款支持分类目录的小插件!其实很久就想做一款zblog for php款的分类目录插件,让一个zblog博客网站支持网址提交的导航站总觉得是一个很有用的东西,但是由于一直上班之余身心疲累,懒得去折腾,最近终于下定决心来完成它。前后花了十天左右,虽然代码不多,但是从构思到代码的完成,只有工作之余的个把小时的时间来做这些事情。每一部分代码的编写、检查和实际功效的测试,都是牺牲了自己业余休息的时间,不过总算还是完成了,希望能够有人需要。至于插件的不足之处,希望大家在本文后面‘阅读原文’页面进行留言反馈!
插件开发过程中也是一件很有趣的事情,今天不知道写啥内容,就为大家分享部分插件的代码吧:
1、这是给zblog添加自定义导航的代码:
function global_e58_dir_Nav(&$template) { global $zbp; $navbar = $zbp->modulesbyfilename[navbar]->Content; $navbar .= <li><a href="#" onclick="openPopup()">网站提交</a></li>; $zbp->modulesbyfilename[navbar]->Content = $navbar.PHP_EOL;}不过在使用该代码之前,需要在插件开头添加插件钩子:
function ActivePlugin_e58_dir() {...... Add_Filter_Plugin(Filter_Plugin_ViewPost_Template, e58_dir_Main); Add_Filter_Plugin(Filter_Plugin_ViewList_Template, global_e58_dir_Nav); Add_Filter_Plugin(Filter_Plugin_ViewPost_Template, global_e58_dir_Nav); Add_Filter_Plugin(Filter_Plugin_ViewSearch_Template, global_e58_dir_Nav); Add_Filter_Plugin(Filter_Plugin_ViewComments_Template, global_e58_dir_Nav); Add_Filter_Plugin(Filter_Plugin_ViewComment_Template, global_e58_dir_Nav);}上面的代码分别在列表页、文章页、搜索页、评论页都添加了插件自定义的导航链接。我觉得新手在开发zblog插件的时候,或许会用得上!
2、分享一个自定义的跳转代码
function e58_dir_jump($url, $str) { global $zbp; if($url == 0) { echo <script language="javascript">; echo if (confirm(" . $str . ")) {; echo history.back();; echo }; echo </script>; return; } else if ($url == ) { $url = $zbp->host; echo <script language="javascript">alert(" . $str . "); top.location.href=" . $url . ";</script>; } else { echo <script language="javascript">alert(" . $str . "); top.location.href=" . $url . ";</script>; }}该类需要传入两个值,分别是$url和$str,如果传入一个空值,就返回zblog首页,如果传入0就返回上一页,如果传入指定的url,则跳转到该url。$str是提示词,跳转之前告知操作者的信息。当然这是一个十分简易的跳转功能。效果:
3、再分享一个生成验证码的代码吧
class Captcha { private $width; private $height; private $code; private $image; public function __construct($width = 120, $height = 40) { $this->width = $width; $this->height = $height; $this->code = $this->generateCode(); $this->image = $this->createImage(); } public function getCode() { return $this->code; } public function showImage() { header(Content-Type: image/png); imagepng($this->image); imagedestroy($this->image); } private function generateCode() { global $zbp; $charset = "1234567890abcdefghijkmnpqrstuvwxyz"; $code = substr(str_shuffle($charset), 0, 6); $zbp->Config(e58_dir)->dircode = $code; $zbp->SaveConfig(e58_dir); return $code; } private function createImage() { $image = imagecreate($this->width, $this->height); $background = imagecolorallocate($image, 255, 255, 255); $textColor = imagecolorallocate($image, 0, 0, 0); for ($i = 0; $i < 200; $i++) { $x = rand(0, $this->width - 1); $y = rand(0, $this->height - 1); imagesetpixel($image, $x, $y, $textColor); } imagestring($image, 5, $this->width / 2 - 30, $this->height / 2 - 8, $this->code, $textColor); return $image; }}在该插件开发的时候,我没有使用zblog内置的验证码,因为内置验证码大小写有时候分不清楚,而我使用了这个自定义的验证码,主要是去除了字母‘l’和‘o’,主要是怕数字1和字母l、数字0和字母o肉眼分辨不清楚。同时全部使用小写字母和数字,在保证安全的同时,兼顾一下使用体验!免得别人辛辛苦苦填写的内容因为一个验证码的失误而无法提交。
好了,插件代码分享到此为止,可见都是我前期在php教程专辑中提到过的知识,现在用来开发zblog插件,同样是可行的。
插件名称:E58分类目录
插件最新版本:V.1.0 bate
适配版本:Zblog for php 1.7.3
PHP版本:5.3-7.4
插件功能介绍:本插件支持zblog网站提交网站信息,并通过文章页面进行展示;本插件通过api接口获取相关SEO信息!支持免登录提交!后台设置获取SEO信息的开关,可任意使用!