官方系列教材 - Joomla模块开发教程

介绍在如何从0开发一个模块

  但这并不是我们想要的效果。 客户的需求:我们要提供两种信息输入的方式,一种是文件,一种是手动输入。那么我们现在就来实现这个要求。

 我们需要给模块增加一些后台配置参数

上面我们提到过xml文件不但和安装程序有关,还能够配置模块。那好,我们修改一下

xml文件。

 <?xml version="1.0" encoding="utf-8"?>
<extension type="module" version="2.5.0" client="site" method="upgrade">
<name>Alarm</name>
<author>min.zhang</author>
<version>1.0.0</version>
<description>显示通知信息的模块</description>
<files>
<filename>mod_alarm.xml</filename>
<filename module="mod_alarm">mod_alarm.php</filename>
<filename>index.html</filename>
<filename>helper.php</filename>
<folder>tmpl</folder>
</files>
<config>
<fields name="params">
<fieldset name="basic">
<field
name="inputModle"
type="radio"
default="0"
label="输入模式"
description="选择信息的输入模式 默认为手动输入">
<option value="0">手动输入</option>
<option value="1">从文件输入</option>
</field>
<field
name="content"
type="text"
label="内容"
description="当模式为手动是此处填写你要输出的信息,当模式为文件时,此处为文件的路径名(mod_alarm/)"
>
</field>
</fieldset>
<fieldset name="advanced">
</fieldset>
</fields>
</config>
</extension>

感觉上面代码没什么好解释的。有几个关键词,<field> <fieldset>  其他的就是一些正常的字段了。还是先来看一下效果

于2014-08-20日修改:在joomla中利用XML产生表单是一种很常见的方法,其中对fields和fieldset这两个标签的理解十分重要。我们可以将fields理解为组,将field理解为单独的一个字段。而fieldset可以将一组相关的field放在一起。这个感觉越说越糊涂了。还是先慢慢理解了。

 现在后台的管理界面已经有了我们的输入模式了。

如果要继续完成我们的模块,那么现在急切需要解决的一个问题就是 如何实现和后台的通信了。

在上面我们提到了有一个helper.php文件,这个文件的作用是取得和分析数据。mod_alarm.php就是从helper.php中获取数据。

我们先看一下helper.php文件:

defined('_JEXEC') or die('can not access this file!');

/**
* helper class for alarm module
*/
class modAlarmHelper
{
         // get param from module param
         function getData($params)
         {
              $showMode = $params->get('inputModel');
              $content = $params->get('content');

              echo "showMode value =".$showMode.";
              echo "content value =".$content.";
          } 
}

关于这段代码的说明:这是一个类的实现文件。类名为modAlarmHelper 。注意,这个名称一般是按照命名规范取的。命名规范为mod+模块的名称+Helper. 不能随便命名

于2014-08-20日修改:这个类的名称是可以任意取的,但建议遵循命名规范。

另外在这个类中只实现了一个函数,getData($params),这个函数接受一个参数。然后调用$params的get方法得到我们在后台配置的值。并且将值输出。

很明显这只是一个类。那么我们应该在什么地方使用这个类呢?上面已经提到。mod_alarm.php是这个模块的入口点文件,由他来完成helper类和模块模版(default.php)之间的联系

看一下 mod_alarm.php文件:

 // no direct access

defined('_JEXEC') or die;

 

// Include the syndioate function only once
require_once(dirname(__FILE__).DS.'helper.php');

 

// new a obj
$obj = new modAlarmHelper();
$obj->getData($params);

在解释上面的代码之前,我们先看一下执行的效果:

后台的设置:

前台执行效果:

很明显,我们成功的从后台得到模块的设置参数了,并且在前台也正确输出了。 

再来分析一个mod_alarm.php文件的代码:

在这个文件中首先new一个类 modAlarmHelper.然后调用这个类的getData()方法,并且设置了一个参数$params.

于2014-08-20日修改:如果按照joomla推荐的方法,在helper类中使用静态方法,那么这里就不用使用new了。

一切都是很有道理的。除了$params这个变量。我们不经要问了,$params这个变量是什么东西,是从哪里来的。关于这个问题的答案,从执行结果我们就可知道了。$params是一个对象,这个对象主要用来处理模块参数的。是系统为我们维护的。

print_r($params)的执行结果:

JRegistry Object
(
    [data:protected] => stdClass Object
        (
            [inputModel] => 1
            [content] => www.zmax99.com
        )

)
说明他是一个JRegistry对象。关于JRegistry对象。请参考本网站的相关文章。

作者: 樱木花道

Joomla程序员,从J1.5到J4.x始终都在做Joomla相关开发定制工作,有超过10年行业经验,国内Joomla扩展开发商ZMAX团队的核心成员

作者网站:ZMAX程序人

评论 (0)

  • 最新在前
  • 最佳在前

第1章 Joomla入门教程

第3章 C计划

第5章 E计划

第6章 H计划

第7章 G计划

第9章 运行环境

第11章 主从与集群

第12章 模块开发

第13章 插件开发

第14章 j2.x组件开发教程

第15章 页面定制教程

第16章 页面构造器

第17章 joomla升级

第18章 其他系统迁移

第19章 流量翻倍计划

第20章 wordpress主题开发教程