joomla1.5模块开发和插件开发详解带实例
这是一个模块和插件开发实例详解文档,模块实现的是图片幻灯片方式切换,图片是自带的banner组件管理器来管理,对于图片可以只显示某一个分类下面的,切换方式可以选择多种,插件就是实现如何过滤文章中出现的email,凡是写了email的就自动过滤.从分析来看,是没有什么难度的,这里主要是开发的步骤,我在这里从开头到一个开发,打包成可以供所有joomla安装的zip文件为止,算是一个功能完成.
1.建立模块文件结构 , 样式如下图的文件结构
Mod_banner 模块文件夹 , 所有模块必须以 mod_ 为前缀 .banner 就是模块名称
Images 文件夹 , 用来放样式中用的图片还有模块所需的 jquery 库 ,jquery 插件 , 减少文件夹数量 , 就不单独建文件夹了 .
Tmpl 模块模版文件夹 .
Default.php 模版显示样式文件 , 必须的文件 .
Index.html 防止文件直接被调用 , 用于安全考虑 .
Helper.php 功能实现文件 , 里面主要写功能实现 .
Index.html 防止文件被直接调用 , 所有模块文件夹 , 子文件夹都应该加上这个文件 .
Mod_banner.php 模块入口文件 , 必须的文件
Mod_banner.xml 参数配置和打包安装文件
2.文件建立好以后 , 先来写 xml 这个文件吧 , 内容如下 :
// 后边是注释
<?xml version="1.0" encoding="utf-8"?>
<install type="module" version="1.5.0">
<name>Banner Change</name>// 模块显示名称
<author>Yoby</author>// 作者
<creationDate>2012 07</creationDate>// 创建日期
<copyright>Copyright (C) 2012 - 2020 Open Source Matters. All rights reserved.</copyright>// 版权
<license>http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL</license>// 软件协议
<authorEmail>logove@qq.com</authorEmail>// 作者邮箱
<authorUrl>www.joomla.org</authorUrl>// 插件连接地址
<version>1.5.0</version>// 插件版本
<description>Banner Change Module !</description>// 模块功能描述
<files>// 用来描述模块的所有用到的文件 , 在安装的时候根据这个来复制到模块对应路径
<filename module="mod_banner">mod_banner.php</filename> // 文件
<filename module="mod_banner">helper.php</filename>
<filename module="mod_banner">index.html</filename>
<folder>tmpl</folder> // 文件夹 , 子文件和文件夹不用再次描述
<folder>images</folder>
</files>
<params addpath="/administrator/components/com_banners/elements">// 模块配置参数 ,addpath 是用来加载组件里面定义的表单元素 , 这里是广告的分类
<param name="change" type="list" default="0" label="Change Mode">//list 列表类型表单元素 , 这里是广告切换样式 , 有 3 种默认 , 数字样式 , 按钮样式
<option value="0">Default</option>
<option value="1">Number</option>
<option value="2">Button</option>
</param>
<param name="changetime" type="text" default="3000" label="Change Time (ms)"/>// 文本框类型 , 这里是 切换时间 , 微秒 ,1000 为 1 秒
<param name="adnumber" type="text" default="4" label="AD Number"/>// 广告显示数量
<param name="catid" type="category" section="com_banner" default="" label="Category" />// 广告分类 , 这里用到了 banner 组件的广告分类
<param name="width" type="text" default="468" label="AD Width"/>// 显示广告宽度
<param name="height" type="text" default="60" label="AD Height"/>// 显示广告高度
<param name="moduleclass_sfx" type="text" default="" label="Module Class Suffix"/>// 模块显示样式附加类
</params>
<params group="advanced"> // 高级配置 , 一般模块都加上这个配置参数 , 保持和官方一样标准
<param name="cache" type="list" default="0" label="Caching" description="Select whether to cache the content of this module"> // 是否使用缓存
<option value="1">Use global</option>
<option value="0">No caching</option>
</param>
<param name="cache_time" type="text" default="900" label="Cache Time" description="The time before the module is recached" />// 缓存时间
</params>
</install>
3.mod_banner.php 文件和 helper.php 文件编写
Mod_banner.php 是入口文件 , 模块就是从这里执行的 ,
第一行代码 defined( '_JEXEC' ) or die( 'Restricted access' );
这是为了防止文件被其他程序随便调用 , 出于安全考虑 , 所有 joomla 组件插件模块等 php 文件都应该开头写上这一行代码 .
第二行代码 require_once (dirname(__FILE__).DS.'helper.php');
加载 helper.php 功能文件 , 里面定义了这个模块所实现的功能 , 主要是数据处理 , 最后返回数据处理结果 .
第三行 $list = modBannerHelper::getList($params);
这里是返回 helper.php 里面函数 getlist 结果 , 这里是广告数据
不一样的模块 , 这里可以写不同的返回结果 ,
最后一行 ,require(JModuleHelper::getLayoutPath('mod_banner'));
通过助手类提供的函数加载模版 , 必须这样写 , 参数就是模块名称 .
每个组件的入口文件至少包括第一行 , 最后一行 .
第二行只有用到助手文件才需要写 .
第三行可以根据实际功能来写 , 还可以添加更多代码来实现 .
Helper.php 文件是一个类 ,
定义格式
class modBannerHelper{
function custom(){
//content
}
}
里面的方法就是用来做数据处理或功能的 , 返回值供模版使用 .
4.default.php, 模块模版文件 , 主要就是前台显示布局 , 有些模块把所有的功能处理也写在这里 , 这个文件是模块必须的 , 一般混写 HTML 和 PHP 代码 .
5.总结模块开发 :
A.模块配置在 xml 文件中定义 , 在 helper.php 或 default.php 中调用 , 通过 $params->get('custom') 读取配置参数在程序中应用 .
B.数据处理中的数据库连接步骤 ;
$db = JFactory::getDBO(); // 建立数据库连接
$query = "select * from #__table"; //SQL 查询语句
$db->setQuery($query); // 执行查询
$rs = $db->LoadObjectList();// 得到结果集对象
C. 对建立好的模块压缩成 zip 文件 , 就得到了标准模块 .
6.截图
后台参数说明 ,
change module 显示样式切换 , 有三种 ;
change time 自动切换时间 , 默认 3s;
ad number 设置广告数量 , 对于数字有效 ;
item 类别 , 不选择就是所有广告类 ;
Ad width, 广告宽度 , 尽量和图片宽度一样
Ad height, 广告高度 ;
Css, 这里可以用一个类来些样式
高级参数是设置缓存和时间的 .
前台样式图 , 三种
文章内容邮箱地址过滤插件开发过程 :
1.定义插件文件 , 分别是插件文件 filter.php 和安装配置文件 filter.xml.
2.先来写配置文件 , 基本上 joomla 配置文件都有相似的地方 , 内容如下
<?xml version="1.0" encoding="utf-8"?>
<install version="1.5" method="upgrade" type="plugin" group="content">// 定义插件为 content
<name>Filter</name>// 插件名字
<creationDate>2012-07-31</creationDate>// 插件日期
<author>Yoby</author>// 作者
<authorEmail>baixy@bodait.com</authorEmail>// 邮箱
<authorUrl>http://www.baidu.com</authorUrl>// 网址
<copyright>Copyright (C) 2012 Open Source Matters. All rights reserved.</copyright> // 版权
<license>GUN</license>// 软件协议
<version>1.0</version>// 软件版本
<description>This is filter email plugin !</description>// 描述
<files>
<filename plugin="filter">filter.php</filename>// 安装文件 , 还有其他的都需要列出来
</files>
<params>// 配置参数列表 , 本插件没有用到 , 但是预留一个 id
<param name="exid" type="text" default="" label="ID" description="description" />//# 文本框
</params>
</install>
基本上一个配置安装文件就完成了 . 接着是定义插件 , 内容模式如下 :
defined('_JEXEC') or die;// 防止其他程序加载
$mainframe->registerEvent('onPrepareContent', 'plgContentFilter');// 注册一个事件 , 这里的 onPrepareContent 是输出文章之前触发事件
function plgContentFilter(&$row, &$params, $page=0) // 触发的函数
{
if (is_object($row)) {// 判断是否是对象记录集
return plgFilter($row->text, $params);
}
return plgFilter($row, $params);
}
function plgFilter(&$text, &$params)
{
$text = preg_replace("/\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/",'',$text); // 正则替换邮箱为空
return true;
}
3.将这两个文件压缩成 zip 格式 , 不需要文件夹 , 直接压缩 , 然后就可以安装了 . 截图如下
后台编辑带有邮箱文章
前台显示自动替换掉了邮箱
最后附上文件树形结构图;内容中代码没有使用编辑器,需要代码插件的下载附件吧.包括开发文档哦.
下载地址: https://files.cnblogs.com/logoove/%E6%A8%A1%E5%9D%97%E5%92%8C%E6%8F%92%E4%BB%B6%E5%AE%9E%E4%BE%8B%E5%8F%8A%E5%BC%80%E5%8F%91%E6%96%87%E6%A1%A3.7z
最详细的开发文档,例子说明一切,还有注释,只适合新手,牛人绕行!
by Yoby编辑
分类: joomla
标签: joomla1.5开发 , joomla1.5
作者: Leo_wl
出处: http://www.cnblogs.com/Leo_wl/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
版权信息查看更多关于joomla1.5模块开发和插件开发详解带实例的详细内容...