<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></title> 
<link>http://jackxiang.com/index.php</link> 
<description><![CDATA[赢在IT，Playin' with IT,Focus on Killer Application,Marketing Meets Technology.]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></copyright>
<item>
<link>http://jackxiang.com/post//</link>
<title><![CDATA[B-blog2.0.2的插件机制讲解 ]]></title> 
<author>jack &lt;xdy108@126.com&gt;</author>
<category><![CDATA[WEB2.0]]></category>
<pubDate>Sat, 18 Jun 2011 08:51:01 +0000</pubDate> 
<guid>http://jackxiang.com/post//</guid> 
<description>
<![CDATA[ 
	无废话版本。以下的插件均指“可被插件管理器识别并管理的插件”，非模块插件。<br/>1. 插件存放的位置<br/>所有插件都存放于plugin文件夹下，并单独建立自己的文件夹。比如 plugin/mynewplugin。<br/>2. 文件构成<br/>*setup.php&nbsp;&nbsp;必需，插件识别信息，如名称、描述、制作者等<br/>*install.php&nbsp;&nbsp;非必需，插件安装时调用的文件，可用于新建数据表，创建文件，初始化数据等<br/>*uninstall.php&nbsp;&nbsp;非必需，插件卸载时调用的文件，可用于删除插件生成的临时文件等<br/>*admin.php&nbsp;&nbsp;非必需，插件后台调用文件<br/>*&lt;“接口”识别字符&gt;.php&nbsp;&nbsp;非必需，插件运行时调用的文件（解释见后）<br/>*其它必要的文件，如图片<br/>所有文件如有多字节文字，需以UTF-8编码保存。<br/>3. setup.php的文件格式<br/>以巴巴变相册插件为例。<br/>&lt;?php <br/>$info[&#039;name&#039;]=&quot;bababian&quot;; //插件识别名，必需是拉丁字母或数字，必需与插件所在文件夹同名 <br/>$info[&#039;author&#039;]=&quot;Bob&quot;;&nbsp;&nbsp;//插件作者 <br/>$info[&#039;intro&#039;]=&quot;巴巴变相册&quot;;&nbsp;&nbsp;//插件作用描述 <br/>$info[&#039;version&#039;]=&quot;1.0&quot;;&nbsp;&nbsp;//插件自身的版本 <br/>$info[&#039;authorurl&#039;]=&quot;http://www.bo-blog.com&quot;;&nbsp;&nbsp;//插件开发者网站 <br/>$info[&#039;blogversion&#039;]=&quot;2.0.1&quot;;&nbsp;&nbsp;//插件可正常运行的最低blog程序版本 <br/>$info[&#039;register&#039;]=&quot;page&quot;;&nbsp;&nbsp;//插件调用的“接口”识别字符的名字 <br/>?&gt; <br/>4. 运行方法<br/>目前为止，提供了以下一些“接口”。（这个不是一般意义上的接口，所以打个引号）<br/>4.1 独立前台页面（page）<br/>*设置 $info[&#039;register&#039;] 为page，即可注册一个独立前台页面。插件激活后，用户可通过 index.php?act=插件名 来直接进入插件提供的独立页面。<br/>*该独立页面的内容需写入 page.php ，放置于该插件的文件夹下。该独立页面的内容由变量 $plugin_return 提供。<br/>*示例1：新建一个独立页面，进入该页面时显示“Hello, world”字样。<br/>A. 创建setup.php，设置 $info[&#039;register&#039;]=&quot;page&quot;;。<br/>B. 创建page.php，内容大致如下：<br/>&lt;?PHP <br/>$plugin_return=&#039;Hello, world&#039;; <br/>?&gt; <br/>*如果想在页面打开时自动屏蔽侧边栏，可在page.php中加入：<br/>$plugin_closesidebar=1; <br/>4.2 嵌入内容（有 entrybegin，commentbegin，entrycontentend，entryend 四个）<br/>*使用这4个“接口”可在页面中插入指定的内容，运行PHP代码。<br/>*4个“接口”的具体位置是：<br/>entrybegin - 日志开头的位置<br/>commentbegin - 评论（或评论框）开始的位置<br/>entrycontentend - 日志正文下方的位置<br/>entryend - 整篇日志（包含管理条）结束的位置<br/>*嵌入的内容同样由变量 $plugin_return 提供。<br/>*示例2：在日志正文下方插入一个广告代码。<br/>A. 创建setup.php，设置 $info[&#039;register&#039;]=&quot;entrycontentend&quot;;。<br/>B. 创建文件 entrycontentend.php 。该文件的内容大致如下：<br/>&lt;?php <br/>$plugin_return=&quot;这里是广告代码&quot;; <br/>?&gt; <br/>*示例3：在日志正文下方插入一个框，框内显示访客的IP地址。<br/>A. 创建setup.php，设置 $info[&#039;register&#039;]=&quot;entrycontentend&quot;;。<br/>B. 创建文件 entrycontentend.php 。该文件的内容大致如下：<br/>&lt;?php <br/>$yourip=$_SERVER[&#039;REMOTE_ADDR&#039;]; <br/>$plugin_return=&quot;&lt;div style=&quot;border: 1px solid #000; width: 90%;&quot;&gt;&#123;$yourip&#125;&lt;/div&gt;&quot;; <br/>?&gt; <br/>4.3 替换内容（目前仅 ubbanalyse 一处）<br/>*使用这个“接口”可以对当前正在处理中的文本进行改写等操作。<br/>*目前仅支持在UBB解析时，对正在解析的内容进行更改。<br/>*改写内容的操作需写入函数 plugin_插件识别名_run() 中。该函数只接受一个变量，即需要改写的内容。该函数返回值即改写后的内容。<br/>*示例4：自定义UBB代码[marquee]。该代码的作用是使文字横向滚动。<br/>A. 设该插件的识别名为 domarquee 。<br/>B. 创建plugin/domarquee/setup.php，设置 $info[&#039;register&#039;]=&quot;ubbanalyse &quot;;。<br/>C. 创建文件 plugin/domarquee/ubbanalyse.php 。该文件的内容大致如下：<br/>&lt;?php <br/>function plugin_domarquee_run ($strInput) &#123; <br/>&nbsp;&nbsp;$strInput=preg_replace(&quot;/[marquee](.+?)[/marquee]/i&quot;,&nbsp;&nbsp;&quot;&lt;marquee&gt;1&lt;/marquee&gt;&quot;, $strInput); <br/>&nbsp;&nbsp;return $strInput; <br/>&#125; <br/>?&gt; <br/>5. 插件后台管理页面<br/>*如果在插件安装的时候，检测到该插件文件夹下存在 admin.php ，则今后可在插件管理器中点击相应链接进入这个插件的管理页面。反之则不能。该插件管理页面的地址形式为 admin.php?act=插件名 。<br/>*插件管理页面的内容需写入 admin.php ，放置于该插件的文件夹下。该独立页面的内容同样由变量 $plugin_return 提供。<br/>*与独立前台页面（page）类似。参考page的示例。<br/>6. install.php 和 uninstall.php 提供的两个特殊函数<br/>*在这两个文件中，您可以使用函数 add_module() 和 remove_module() 来创建/移除一个模块项目。<br/>*示例5：在安装该插件的同时，安装一个名为 example 的模块项目。<br/>A. 创建该模块项目的安装文件 example.blog 。<br/>B. 在install.php中写上 add_module (&#039;minivote.blog&#039;); ；在 uninstall.php 中写上 remove_module (&#039;minivote.blog&#039;);<br/>7. 安全提示<br/>*请注意，为了避免插件文件被独立运行可能带来的问题，请在各个PHP的头部加入必要的条件判断。<br/>*在前台，可通过判断常数 VALIDREQUEST 是否定义过来判断是否为正常调用。<br/>在后台，可通过判断常数 VALIDADMIN 是否定义过来判断是否为正常调用。<br/>示例代码如： if (!defined(&#039;VALIDREQUEST&#039;)) die (&#039;Access Denied.&#039;); 
]]>
</description>
</item><item>
<link>http://jackxiang.com/post//#blogcomment</link>
<title><![CDATA[[评论] B-blog2.0.2的插件机制讲解 ]]></title> 
<author> &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate> 
<guid>http://jackxiang.com/post//#blogcomment</guid> 
<description>
<![CDATA[ 
	
]]>
</description>
</item>
</channel>
</rss>