Joomla! 3.0 扩展开发系列:入门开发
为了有一个好的示例来演示这个 Joomla! 3.0 组件开发教程系列,我决定通过实际编写一个扩展来详细说明整个过程。这个组件将在访问以下网站时可供审查和下载:相关网站(本系列文章中及未来的文章中均有提及)。我的目标是编写一个相对健壮的组件,而不仅仅是“Hello World”组件,以充分展示组件开发中的关键点。
步骤 0:准备咖啡
再次强调,开始你的工作和项目非常重要。养成一种模式,一种节奏,不久你就会发现当你坐下来开始工作时,你的创造力、专注力和编程技巧将随时准备就绪。不要忽视开始工作时的正确心态的重要性。
步骤 1:编写所需文件的基本组件大纲
首先,我们需要创建一个关于文件、文件夹、数据库表和关联字段的粗略概述。对于我们的组件,我们将创建以下系统。
组件详情
名称: Lendr
组件名称:com_lendr
描述:Lendr 是一个基于 Bootstrap 的 Joomla! 3.0 组件,它允许用户创建个人资料,将书籍添加到他们的图书馆收藏中,查看其他用户的图书馆,请求借阅书籍,添加到愿望清单,并注册成为特定书籍的等待列表。
基本功能
这个新的 Lendr 组件将提供以下功能集
- 用户账户/基本个人资料
- 书籍/用户的图书馆
- 愿望清单(所需书籍)
- 书籍的借出与借入
- 请求借阅书籍
- 已借出书籍的等待列表
现在我们应该写下所需文件的基本结构。这不会是一个详尽的列表,而且随着我们通过这个过程,肯定会进行修改。然而,有一个起始大纲将有助于保持事情的大致方向。以下是 Lendr 所需关键文件初始大纲。
基本文件
控制器 | 模型 | 视图 | 表格 | 其他 |
---|---|---|---|---|
保存 |
书籍 |
书籍 |
书籍 |
安装 |
现在我们已经将内容写出来并有了初步的轮廓,我们开始在文件夹结构中创建这些文件。
第二步:编写数据库表文件
我们首先创建数据库表文件。我们将这些文件存储在我们的组件前端目录下的表文件夹中。请参考本系列的第一个文章,回顾一下您的本地环境应该如何配置。我们创建我们在轮廓中描述的每个文件。下面是其中一个文件。
/joomla_root/components/com_lendr/site/tables/book.php [点击查看源代码]
在我们的例子中,表文件包含一个单独的结构函数。此函数提供了与该JTable文件关联的表名,并在文件中定义了主键字段,book_id。
在创建这些数据库表的过程中,开始创建安装.mysql.sql脚本的过程是合适的,该脚本将在通过Joomla!管理员面板安装组件时使用。该文件的开始如下
/joomla_root/administrator/components/com_lendr/admin/install.mysql.sql [点击查看源代码]
我们将在创建表的过程中继续添加到这个文件。通过在创建表时添加这些表,在最终编译组件以安装时将使事情变得更加容易。
第三步:开始创建组件文件夹和文件
在创建数据库表之后,我们为整个组件设置文件结构。以下是基本的目录结构。
com_lendr/
admin/
controllers/
models/
views/
index.html
install.mysql.sql
lendr.php
site/
assets/
controllers/
helpers/
language/
models/
tables/
views/
index.html
lendr.php
router.php
install.php
lendr.xml
这些文件和文件夹都很重要,尽管并非所有都是必需的。我们将开始逐个处理这些文件及其包含的功能。在这个过程中,我们将解释每个功能的用途。
第四步:编写安装文件、根文件、控制器和视图控制器
在这一步,我们将向几个文件添加内容。首先,我们将查看安装文件,然后我们将处理一些控制器,最后我们将添加视图控制器。
安装文件
根级别的文件是Joomla!在安装过程中使用的文件。它们位于组件文件夹的站点和admin文件夹之外。有一个XML文件,用于定义组件的详细信息以及所有相关文件、菜单和语言;还有一个install.php文件。此install.php文件包含在安装期间运行的许多函数。名称不是特定的,但必须在XML文件中正确引用。这些函数不必使用或甚至存在,但可以在组件安装期间执行附加操作。
示例文件
lendr.xml [Click to view source]
install.php [Click to view source]
根文件(lendr.php)
位于站点文件夹根目录下的lendr.php文件是Joomla!安装后首先识别和读取的文件。该文件处理将任务重定向到其他控制器,加载辅助文件、样式表、javascript、插件库以及其他在整个组件中必要的核心部分。它将在本系列后续教程中进一步介绍。
此文件将加载与该组件关联的表;导入插件组"lendr"中存在的任何插件;确定用户请求的控制器,然后根据该请求执行适当的控制器。
控制器
在Joomla! 3组件中,控制器作为一个具有单个函数的类来创建。通常,控制器名称定义了控制器的任务。这与之前Joomla!版本中的控制器不同,之前的控制器是针对组件特定区域的各种任务的。通过创建具有单个可执行函数的控制器,有更大的机会将控制器串联起来,形成一个易于跟踪的动作和故障排除的路径。以下是我们将为Lendr定义的控制器之一,以及我们的用于基本功能的基本控制器。
示例
edit.php [Click to view source]
default.php [Click to view source]
视图控制器
Joomla!在处理视图方面有些独特。Joomla!利用一个二级控制器来帮助渲染数据方面和分配用于视图布局的变量。这个二级控制器位于组件的视图文件夹中,通常与所需渲染类型相似命名。(例如,用于渲染HTML的html.php,用于渲染部分模板的phtml.php,用于渲染原始数据的raw.php等...)。以下是Lendr使用的视图控制器之一。
示例
html.php [Click to view source]
raw.php [Click to view source]
第5步:创建模型
Joomla!模型与大多数MVC系统类似,处理大部分数据操作和数据检索。在下一教程中,我们将重点介绍Lendr模型,所以这里我们只看看一般结构。
示例
book.php [Click to view source]
default.php [Click to view source]
这些Joomla!模型只是将要创建的Lendr组件系统文件中的两个。其他模型在性质和基本结构上相似,但将在下一教程中更详细地介绍。
开发总结
现在我们已经创建了组件的基本文件夹结构,编写了数据库表、安装文件、控制器、视图控制器和模型,我们的组件应该是可安装的。当然,尽管目前还没有功能,组件只是一个空壳,但它确实提供了一种成就感,因为我们有一个可安装的组件。请务必检查我们的GitHub存储库,以查看这里未编写的其他数据库表、控制器、视图控制器和模型。
在http://lendr.websparkinc.com查看带有代码片段的完整教程。
在下一教程中,我们将深入了解要写入各种模型的实际功能。
发表在Joomla社区杂志上的一些文章代表了作者对特定主题的个人观点或经验,可能不代表Joomla项目官方立场。
通过接受,您将访问由https://magazine.joomla.net.cn/之外的第三方提供的服务
评论