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

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

在这一节我们将介绍一下joomla一个标准模块的文件夹结构。并且写一个最小的能够成功安装的模块。

模块的存放目录

在joomla的安装目录下,有一个modules目录,这个目录中存放了系统所有的模块的实现。如图:

在上面的每一个目录,就是一个模块。

模块的名称

由于joomla非常依赖命名规范,因此,在开始写代码前需要确定一下你的模块的名称。我们的模块的功能是滚动展示图片新闻,因此就将其取名为zmaxslidernews.如果我们的模块成功安装,那么系统就会在modules目录下创建一个mod_zmaxslidernews的文件夹。

文件结构

一个标准的模块最少需要3个文件文件,以及一个文件夹。

  • 安装说明文件
    • 安装说明文件是一个XML文件,其主要的作用就是向Joomla系统注册这个模块。
    • 这个xml文件的名称为 mod_模块的名称.xml
    • 因为我们模块的名称为zmaxslidernews,因此,我们需要创建一个mod_zmaxslidernews.xml的文件作为其安装说明文件
  • 入口点文件
    • 入口点文件是一个php文件,模块的功能就是从这个文件开始执行的。
    • 入口点文件的名称为mod_模块的名称.php
    • 因为我们模块的名称为zmaxslidernews,因此,我们需要创建一个mod_zmaxslidernews.php的文件作为其入口点文件
  • 模型文件
    • 用来获得数据的文件
    • 文件名称为helper.php
    • 这个文件可以没有,但为了方便管理,一般建议加上
  • 视图的模板文件夹
    • 这是一个文件夹,固定名称为tmpl
    • 在这个文件夹下有一个固定文件名的视图文件。default.php

详细的代码示范

mod_zmaxslidernews.xml(安装说明文件)代码如下:

<?xml version="1.0" encoding="utf-8"?>
<extension type="module" version="3.0" client="site" method="upgrade">
	<name>滚动图片新闻模块</name>
	<author>ZMAX程序人</author>
	<creationDate>2022-10-01</creationDate>
	<copyright>Copyright (C) 2005 - 2022 南宁市程序人软件科技有限责任公司. All rights reserved.</copyright>
	<license>GNU General Public License version 2 or later; see LICENSE.txt</license>
	<authorUrl>www.zmax99.com</authorUrl>
	<version>0.0.1</version>
	<description>将指定分类的文章用滚动图片新闻的方式来展示</description>
	<files>
		<filename module="mod_zmaxslidernews">mod_zmaxslidernews.php</filename>
		<filename >helper.php</filename>
		<folder>tmpl</folder>
	</files>
	<config>
		<fields name="params">
			<fieldset name="basic" >
			</fieldset>
		</fields>
	</config>
</extension>

上面的代码中,需要关注的点有如下几个:

  • <extenions>节点的type属性必须是module.  client属性按照实际的需要设置。可选择的值为site和administrator,代表这个模块将会安装在前台还是后台。method设置为upgrade,表示不会删除之前同名的模块,而是使用更新的方法来安装。
  • <name>属性是模块的标题,主要是给人看的。注意这里并不是模块的名称。
  • <filename>节点的module属性必须是mod_模块的名称。我的模块的名称为zmaxslidernews,因此,这里的值是mod_zmaxslidernews。且节点中的文件为模块的入口点文件。
  • <files>节点是用来说明你的插件需要包含的文件,如果多个文件,请按照实际情况添加filename节点。在这里我指名需要包含一个helper.php的文件
  • <folder>节点是用来说明你的插件需要包含的文件夹,如果多个文件,请按照实际情况添加folder节点。在这里我指名需要包含一个tmpl的文件夹

其他的所有设置都是标准的一些信息,按照实际情况填写即可。特别注意,如果在file和folder节点中指定的文件文件夹在你的安装包中找不到,那么安装时系统会提示安装失败,缺少xxx文件。

mod_zmaxslidernews.php(模块入口点文件)代码如下:

defined('_JEXEC') or die;

\JLoader::register('ModZmaxnewsHelper', __DIR__ . '/helper.php');
$items = ModZmaxnewsHelper::getItems($params);
if(!$items || empty($items))
{
	return ;
}
require JModuleHelper::getLayoutPath('mod_zmaxslidernews', $params->get('layout', 'default'));

关于入口点文件的详情说明,我们在下一节在展开。

helper.php(模型文件)代码如下:

defined('_JEXEC') or die;

class ModZmaxslidernewsHelper
{
	static function getItems($params)
	{
		//TODO
		return false;
	}
}

关于helper.php文件的详情说明,我们在下一节在展开。

tmpl/default.php(模板文件)代码如下:

<h1>Hello Joomla module!</h1> 

打包,安装测试

至此,我们的第一个模块就开发完成了。最终的文件夹结构截图如下:

将其打包称zip格式,然后在扩展管理中进行安装。

安装成功截图如下:

在内容管理=>前台模块中可以看到我们刚刚安装的新的模块,截图如下:

 在网站根目录下的modules目录下可以成功的看到我们的模块目录,截图如下:

其他

模块的v0.0.1版本源码下载:[下载文件:]mod_zmaxslidernewsv0.0.1_2022-10-01_for_j3x.zip

 

作者: 樱木花道

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

作者网站:ZMAX程序人

评论 (0)

  • 最新在前
  • 最佳在前