好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

joomla1.5模块开发和插件开发详解带实例

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模块开发和插件开发详解带实例的详细内容...

  阅读:56次