如何开发Joomla模块?


10

我一直在寻找有关此的教程,但似乎找不到满意的东西。您如何为joomla创建新模块?

现在,我在代码中都使用了自定义HTML模块,并且希望能够使用PHP并将其全部集成到模块中,但是我还没有找到可以做到这一点的教程。我之前已经修改了已安装的模块,但是我不知道如何制作要安装的模块。

joomla文档非常混乱,在阅读了几次之后,我放弃了。谁能帮我解释一下这个过程?谢谢!

Answers:


17

学习Joomla模块开发

我学习的方式是通过研究和自定义核心或其他第三方模块。
模块作为概念比组件(可以说是2个应用程序的前端/后端)更简单,并且旨在显示一条信息。
因此,如果您打开模块文件夹/文件并开始阅读代码,则可能会很快上手。

通过示例的Joomla模块解剖

例如,您可以在Joomla 3.2中打开“ 最新文章”模块并检查其代码,同时阅读以下几行。在模块的文件夹中,我们将找到4个基本文件:

1. mod_articles_latest.php
2. helper.php
3. tmpl/default.php
4。mod_articles_latest.xml

  1. mod_articles_latest.php是模块的主文件,即在第一次使用时的模块被称为一个。它初始化模块并包括helper.php,调用帮助程序的class方法以检索数据,最后包括模块的模板(default.php)以显示数据。

  2. helper.php文件是模块的“机器”(如果可以命名的话)。在帮助程序中,我们创建模块的类及其方法来检索数据。在这里我们可以让模块与数据库“对话”。读码在该模块的帮助文件,你会看到它包含的ModArticlesLatestHelper,它有一个方法:getList(&$params)
    在此方法中,模块将检查模块的后端设置,并根据这些条件最终构建将返回的文章的列表。请注意,此模块使用该JModelLegacy::getInstance方法返回内容模型对象

  3. default.php是模块和负责的主模板来显示模块的内容。-在这里,我们mod_articles_latest.php通过调用模块的类,使用先前在中检索的数据来构建html输出。它位于tmpl文件夹内。*请注意,主模块的文件包括带有JModuleHelper::getLayoutPath方法的模板文件,该方法首先将检查所有模板替代。

  4. 最后,mod_articles_latest.xml我将其称为模块的“大使”。它是在安装过程中将模块“引入” Joomla的文件,它指定安装程序将复制的文件,并且还包含有关模块管理器使用的模块参数的信息以及其他信息。关于模块。

这些是基本模块的基本部分。您可能要考虑的另一方面是对多种语言的支持。这可以通过使用语言字符串和语言翻译文件来实现。如果您已经成功达成目标,那么创建一个基本模块,然后添加语言支持应该非常简单。


15

3

我们已经为Joomla CMS开发了一个用于相同目的的免费模块Custom PHP Module

您需要在[website-root] / modules / mod_customphp / files中创建一个PHP文件,例如login.php。

  • 现在使用这个文件
  • 转到[后端]->模块管理器
  • 创建新的自定义php模块
  • 在参数includefile中输入登录名
  • 这将在模块中呈现login.php。

可以回答我的用例wrt php,但不能回答我的实际要求(就我而言,我需要为模块的每次使用保存某些设置,例如颜色等,如果可以创建,将更加容易一个新的模块,而不是只访问php),尽管感谢您的提示。
serakfalcon 2014年

您可以向模块添加更多参数,并在php文件中使用这些参数。
Shyam 2014年

3

您可以在本地安装中复制现有模块。然后,以所需的方式对其进行重命名。您还必须重命名代码中的php和xml文件以及php类名称。然后,您只需为模块创建一个zip文件。您可以在joomla安装中安装此zip文件。

您是否需要有关重命名的更多详细信息?


这在一定程度上是可行的,并且通常是我的开始方式,但是不足以处理安装在不同位置的语言字符串和其他媒体。
彼得·怀斯曼

@PeterWiseman是的,您是对的,但这是一种轻松快速的入门方法。
seagul 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.