zoukankan      html  css  js  c++  java
  • 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编辑

  • 相关阅读:
    StrToInt && StrToHex && IntToString && 编辑框格式 .
    DAO简介(MFC) .
    RedrawWindow, UpdateWindow,InvalidateRect 用法
    在MFC中获取窗口\视图句柄 &获取当前活动的CView .
    DAO在MFC中的应用实例 .
    捕获异常 .
    ubuntu下chm和PDF阅读器 « 小居
    QQ登陆功能的实现2 rolends1986 博客园
    【原创】说说JSON和JSONP,也许你会豁然开朗,含jQuery用例 随它去吧 博客园
    PDF Ubuntu中文
  • 原文地址:https://www.cnblogs.com/logoove/p/2616994.html
Copyright © 2011-2022 走看看