zblog的自定义模块分为数据库模块和文件型模块分别是以数据库的形式储存内容和已文件的形式储存内容
创建模块,下面以创建标签云为例:
在插件include.php里主题启动时,执行以下函数,模块的内容可以随便写,后面可以让他自动更新
function InstallPlugin_XXXX() { global $zbp; if(!isset($zbp->modulesbyfilename['biaoqianyun'])) //检查系统中是否已有该模块,没有则创建 { $t = new Module(); //实例化模块 $t->Name = "标签云"; //模块名称 $t->FileName = "biaoqianyun"; //模块文件名 $t->Source = "theme_主题id"; //模块属性 如果插件可以使用 plugin_ 开头+插件id $t->SidebarID = 0; $t->Content = ""; $t->HtmlID = "biaoqianyun"; //htmlID $t->Type = "div"; //模块类型 $t->Content = '<b>啊啊啊啊阿</b>'; //模块内容 $t->Save(); } }
直接在include文件夹里创建文件就可以了,模块的htmlid就是文件名:FileName,内容就是文件里的内容
(在zblog1.6.0里面,是没有htmlid的,官方说会在1.6.1时增加)
所以在兼容zblog1.6.0的时候,需要把 zb_system\difend\default\module.php 这个默认的模块模板复制到主题目录下修改一下:
{$module.HtmlID}
修改为:
{if $module.HtmlID==''}{$module.FileName}{else}{$module.HtmlID}{/if}
在模板里判断一下,如果HtmlID为空,就用FileName!改完如下:
{* Template Name:单个模块 *} <dl class="function" id="{if $module.HtmlID==''}{$module.FileName}{else}{$module.HtmlID}{/if}"> {if (!$module.IsHideTitle)&&($module.Name)}<dt class="function_t">{$module.Name}</dt>{else}<dt style="display:none;"></dt>{/if} <dd class="function_c"> {if $module.Type=='div'} <div>{$module.Content}</div> {/if} {if $module.Type=='ul'} <ul>{$module.Content}</ul> {/if} </dd> </dl>
在文章提交成功时,执行下面函数即可,要组合的格式可以随便修改.要加入的内容也可以是其他的.
function wanniuseo_updatetags() { global $zbp; $biaoqianyun=$zbp->modulesbyfilename['biaoqianyun']; if(isset($biaoqianyun)){ $str = ''; $array = $zbp->GetTagList('','',array('tag_Count'=>'DESC'),array(500),''); foreach ($array as $tag) { $str .= "<a href=\"{$tag->Url}\" title=\"{$tag->Name}\">{$tag->Name}</a>"; } $biaoqianyun->Content = $str; $biaoqianyun->Save(); } }