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)"/>//文本框类型,这里是 切换时间,微秒,10001

<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,模块模版文件,主要就是前台显示布局,有些模块把所有的功能处理也写在这里,这个文件是模块必须的,一般混写HTMLPHP代码.

5.总结模块开发:

A.模块配置在xml文件中定义,helper.phpdefault.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编辑

原文地址:https://www.cnblogs.com/logoove/p/2616994.html