如何开发一个Joomla模块插件
利用M-V-C机制巧妙的架构
笔者一再的强调,Joomla!1.5是一个很成功的以MVC模型开发的CMS,除了作为核心系统的Control层,其他都是可以由开发者自行扩展的,以下我们就来看看究竟是怎么运作。
再继续以前,希望读者能够有一点点基本的php对象语法概念,或者可以拿一本相关书籍放在手边,随时查阅。
module/mod_MyMod/mod_MyMod.xml
我们稍微修改一下上一篇的注册安装档中参数的部分,修改如下:
description="请输入要说的话" />
修改后MyMod模块的后台管理介面如下图,我们在模块标题的栏位key入 [我有话要说],并将 [向大家问好]的参数栏位改成 [很高兴认识你]。
module/mod_MyMod/helper.php
这是一个协助用的文件,我们把此模块会用到的对象都写在里边,让这个文件很单纯的就只有功能而不考虑排版。
defined('_JEXEC') or die('Restricted access');
class modMyModHelper{
//建立一个涵式,读取参数 myParam。
function sayWords($params) {
return $params->get('myParam');
}
}
?>
module/mod_MyMod/mod_MyMod.php
这个文件命名的方式是有原则的,除了与该模块同样的名称外,前面还要加上 (mod_)的前缀字样,我们在里边运用helper.php档中对象产生的结果,并储存到一些变量内。
require_once (dirname(__FILE__).DS.'helper.php');
这行是必须的,一次性的引入helper.php档来协助模块运作。
// no direct access
defined('_JEXEC') or die('Restricted access');
// Include the syndicate functions only once
require_once (dirname(__FILE__).DS.'helper.php');
// 定义 show 变量的内容为 modMyModHelper对象处理好的句子
$show = modMyModHelper::sayWords($params);
require(JModuleHelper::getLayoutPath('mod_MyMod'));
?>
require(JModuleHelper::getLayoutPath('mod_MyMod'));
这行也是必须的,目的是使用Joomla系统的JModuleHelper对象来告诉系统Layout档的路径
module/mod_MyMod/tmpl/default.php
最后这个文件则是整个模块的版面输出(layout),也只有到了撰写这个文件时,我们才开始加入HTML代码。
// no direct access
defined('_JEXEC') or die('Restricted access');
?>
读者若是熟悉php,其实可以发现,[helper.php]档的名称其实可以自定义,但为了有良好的模块架构,我们还是遵循常用的开发惯例,一来比较不会出错,二来接手的人也可以在最短的时间上手,便于团体共同开发。
终于,一个简单的模块完成了,是不是很兴奋阿!
茶杯头甜蜜终章dlc 官方手机版v1.0.0.3
下载火柴人传说暗影格斗内置菜单 最新版v3.0.1
下载荒野乱斗测试服 安卓版v61.10.3
下载荒野乱斗彩虹服 安卓版v61.10.3
下载寒霜启示录 安卓版v1.25.10
寒霜启示录是一款生存模拟游戏,不少玩家可能对于末日都有着自己
末日城堡免广告版 安卓最新版v0.7.1
末日城堡免广告版是一款非常好玩的模拟经营类游戏,内部可以不看
甜蜜人生模拟器 最新版v1.4.5
甜蜜人生模拟器是一款非常好玩的模拟恋爱手游,玩家在这里能够对
武器锻造师内置功能菜单 v10.4
武器锻造师内置菜单版是游戏的破解版本,在该版本中为玩家提供了
开放空间overfield 安卓版v1.0.5
开放空间Overfield是一款箱庭养成经营手游,让你在广阔