跳至主要内容
版本:5.1

构建扩展

Joomla 是一个功能丰富的内容管理系统,但如果您使用 Joomla 构建网站并且需要默认情况下不可用的额外功能,那么您可以轻松地使用扩展对其进行扩展。Joomla 有五种常见的扩展类型:组件、模块、插件、模板和语言。另外还有三种:包、文件和库。每种扩展都处理特定的功能(Joomla 的许多内置功能都是使用扩展实现的)。

Joomla 组件、模块、插件和模板之间的区别一开始可能令人困惑。如果您是 Joomla 的新手,那么您可能会发现观看视频Joomla 如何工作 - 扩展开发人员指南很有用,该视频描述了这 4 种扩展类型如何融入 Joomla 网页的生成。它们的输出在下面的图中也以不同的颜色突出显示。

Screenshot showing extension types

组件

组件提供 Joomla 网站上网页的中心部分;每个网站网页都显示来自一个组件的输出。可以将其视为小型应用程序。大多数组件都有两个部分:网站部分和管理员部分。例如,com_content 是处理文章的组件;在网站前端,com_content 将文章显示给网站访问者,而在后端,com_content 为管理员提供了编辑文章的功能。

通常,组件管理 Joomla 实例的数据并提供创建、编辑、删除和显示数据的功能。通常,数据管理方面在管理员后端处理,而网站前端只是显示数据,但这项责任的分工并非强制性,并且某些组件提供了用于创建/编辑/删除数据的用户界面功能。

当您导航到网站上的某个页面或执行某个操作(例如登录/退出)时,您会选择要运行的组件。该组件是主要负责处理 HTTP 请求、执行所请求的操作以及在网页上显示关键数据的代码。

  • 示例:管理文章 (com_content)、类别 (com_categories)、联系人 (com_contact)、图像和媒体文件 (com_media)
  • 管理功能:管理员菜单 → 组件 → 联系人(对于 com_contact)

来自第三方扩展的组件功能示例包括备份实用程序和对电子商务的支持。

模块

模块是更轻量级且灵活的扩展,显示在网页上。模块主要被称为围绕组件排列的“方框”,例如:登录模块或面包屑模块。模块按菜单项分配。因此,您可以决定根据用户正在查看的菜单项显示或隐藏登录模块。

模块通常可以是组件的伴侣。例如,如果您的网页显示一篇内容 (com_content 组件),那么您可能在侧边栏中有一个模块 (mod_tags_similar),该模块显示相关文章的链接,或者一个显示相关照片的图像滑块的模块。

但是,模块不需要与组件链接,实际上它们甚至不需要链接到任何东西,并且可以只是静态 HTML 或文本。

  • 示例:最新文章 (mod_articles_latest)、菜单 (mod_menu)、谁在线 (mod_whosonline)、自定义 HTML (mod_custom)
  • 管理功能:管理员菜单 → 内容 → 网站模块

如果您只是开始使用 Joomla 扩展开发,那么开发模块是最好的起点。

插件

插件在后台工作以修改或增强基本的 Joomla 功能。在执行 Joomla 的任何部分(无论是核心、模块还是组件)时,都可以触发事件。当触发事件时,注册处理该事件的插件会执行,并将与该事件相关的数据传递给它们。然后,插件可以(例如)修改数据并将其返回给 Joomla 核心代码。例如,可以使用插件拦截用户提交的文章并过滤掉脏话。

  • 示例:内容分页导航插件(生成上面屏幕截图中显示的“上一个”和“下一个”链接)
  • 管理功能:管理员菜单 → 系统 → 插件

模板

一个模板基本上是您 Joomla 网站的设计。使用模板,您可以定义网站的外观和感觉,主要基于 CSS。模板中有一些字段,在这些字段中将显示组件(只有一个)和模块(您可以随意添加)。从头开始构建一个完整的 Joomla 模板很难,因为您必须了解 Joomla 组件的各种 HTML 输出以及其中使用的 CSS 类。但是,自定义与 Joomla 一起提供的 Atum(管理员)和 Cassiopeia(网站)模板相对容易,尤其是因为您可以使用 Joomla 子模板功能来简单地指定与父模板的偏差。

  • 管理功能:管理员菜单 → 系统 → 模板

语言

可能是最基本的扩展是语言。语言可以以两种方式打包:作为核心包或作为扩展包。本质上,核心和扩展语言包文件都包含键值对,这些键值对提供对 Joomla 源代码中分配的静态文本字符串的翻译。这些语言包将影响 Joomla 实例的前端和管理员端。注意:这些语言包还包含一个描述语言的 XML 元数据文件。

  • 管理功能:管理员菜单 → 系统 → 管理 / 语言

库是 Joomla 使用的独立 PHP 代码段。请注意,几乎所有 Joomla 的核心代码都作为库在 libraries/src 文件夹中提供。所有 composer 库(例如 PHPMailer)都作为库“供应商”安装在 libraries/vendor 中。Joomla 中许多最受欢迎的第三方扩展使用库在它们的组件中重用公共功能。

文件

文件扩展类型用于将单个文件安装到 Joomla 实例的目录中。Joomla 核心没有这种类型的示例,并且它是使用最少的类型,但是它可以用于(例如)将自定义脚本放入 Joomla cli 目录或将模板覆盖放入特定目录中。

包只是一组上述类型的扩展。包的常见用途是运送一个模板,该模板还捆绑了一个系统插件。或者是一个组件,它还安装了它使用的库。在 Joomla 中,许多语言包作为包安装,以便可以独立安装前端和后端语言。

扩展安装

有 4 种安装扩展的方法。您可以从 Joomla 扩展目录(从网络安装)安装,上传扩展的 zip 文件,从文件夹安装或从 URL 安装。

Screenshot showing installing an extension