`
we1818
  • 浏览: 61856 次
  • 性别: Icon_minigender_1
  • 来自: 湖州
社区版块
存档分类
最新评论

joomla 模块modules开发教程

    博客分类:
  • php
阅读更多
模块是页面扩展轻量级方式,相对组件更为灵活。模块通常用来做页面中不太复杂的一小块,并且能够跨越不同的组件。有时候模块可以跟组件密切联系,比如说最新新闻模块,这个模块显示来自com_content组件的最新的条目,由于它是一个模块,所以它甚至可以在com_content组件没有激活的情况下使用。站点的菜单是模块,而这些模块作为Joomla和核心应用,并没有和任何组件相关联。模块不必和任何特定的事情相关联,并且可以是你想在一些页面上显示的静态html,text。

怎样编写模块

Hello World Module - Basic Module

模块是页面扩展轻量级方式,相对组件更为灵活。模块通常用来做页面中不太复杂的一小块,并且能够跨越不同的组件。
在Joomla的标准安装后,你可以看到许多模块的例子,菜单,最新新闻,登录框等等

这个教程阐述如何编写一个简单的 Hello world 模块,通过这个教程,你可以学到一个模块的基本文件结构。而通过基本机构可以扩展生成更为复杂的模块。


文件架构

标准的模块开发共有四个基本文件,
mod_helloworld.php - 模块的主入口,主要执行一些必须的初始化工作,调用helper或缺必要的数据,并引入模板。

mod_helloworld.xml - 这个文件主要包含模块的信息,主要定义安装时必须的文件以及模块的参数。

helper.php - 这个文件包含 helper 类,这个类主要用来获取模块要显示的信息(通常是从数据库或其他的源)

tmpl/default.php - 模块的模板,这个文件采用mod_helloworld.php返回的数据生成页面要显示的html

创建 mod_helloworld.php

mod_helloworld.php 主要进行以下工作:

引入helper.php文件,helper.php文件包含是获取必要数据的类
调用合适的helper类,并返回数据。
引入模板


The helper class is defined in our helper.php file. This file is included with a require_once statement:

helper 类在helper.php中定义,这个文件通过 require_once 声明来引入:

require_once( dirname(__FILE__).DS.'helper.php' );

我们的helper类现在还没定义,但是以后你可以看到,包含一个方法 getHello()。对于我们这个简单的例子,这样做并不是必须的,因为这个方法返回的信息“Hello, World”可以直接简单的包含在模板中。我们这里这样做主要是为了战士这项技术。

我们的模块现在没有用到参数,但是为了以后扩展模块的时候方便,我们吧参数传递给 helper的方法。

helper 类的方法用以下的方式调用:

$hello = modHelloWorldHelper::getHello( $params );

完整的 mod_helloworld.php 文件

<?php
/**
* Hello World! Module Entry Point
*
* @package    Joomla.Tutorials
* @subpackage Modules
* @link http://dev.joomla.org/component/option,com_jd-wiki/Itemid,31/id,tutorials:modules/
* @license        GNU/GPL, see LICENSE.php
* mod_helloworld is free software. This version may have been modified pursuant
* to the GNU General Public License, and as distributed it includes or
* is derivative of works licensed under the GNU General Public License or
* other free or open source software licenses.
*/

// no direct access
defined( '_JEXEC' ) or die( 'Restricted access' );

// Include the syndicate functions only once
require_once( dirname(__FILE__).DS.'helper.php' );

$hello = modHelloWorldHelper::getHello( $params );
require( JModuleHelper::getLayoutPath( 'mod_helloworld' ) );


我们还没有解释第一行,第一行主要是定义这个文件属于一个Joomal应用,并用来防止注射和其他潜在的风险。

创建 helper.php

helper.php这个文件包含 helper 类,这个类主要用来获取模块要显示的数据。我们已经说过,现在这个helper类只有一个方法 getHello(),这个方法返回‘Hello, World’

以下是 helper.php 的代码:

<?php
/**
* Helper class for Hello World! module
*
* @package    Joomla.Tutorials
* @subpackage Modules
* @link http://dev.joomla.org/component/option,com_jd-wiki/Itemid,31/id,tutorials:modules/
* @license        GNU/GPL, see LICENSE.php
* mod_helloworld is free software. This version may have been modified pursuant
* to the GNU General Public License, and as distributed it includes or
* is derivative of works licensed under the GNU General Public License or
* other free or open source software licenses.
*/
class modHelloWorldHelper
{
/**
* Retrieves the hello message
*
* @param array $params An object containing the module parameters
* @access public
*/ 
function getHello( $params )
{
return 'Hello, World!';
}
}

没有对定我们必须这样命名我们的helper类,但是这样命名有利于我们找到和统一。
一些复杂的模块可以在helper的方法中包含数据库请求和其他功能。

创建 tmpl/default.php

default.php file 是模板文件,他的代码如下:
<?php // no direct access
defined( '_JEXEC' ) or die( 'Restricted access' ); ?>
<?php echo $hello; ?>

需要注意的一点是 模板文件和 mod_helloworld.php 是同一个变量作用域,也就是说,在mod_helloworld.php中定义的变量 $hello可以直接在模板文件中使用,而不必额外的声明或者函数调用。


创建 mod_helloworld.xml

mod_helloworld.xml主要是用来指定那些文件安装时候要拷贝以及告诉模块管理器那些蚕食用来配置模块,同样也指定模块相关一些其他信息。


mod_helloworld.xml 代码如下:

<?xml version="1.0" encoding="utf-8"?>
<install type="module" version="1.5.0">
<name>Hello, World!</name>
<author>John Doe</author>
<version>1.5.0</version>
<description>A simple Hello, World! module.</description>
<files>
<filename module="mod_helloworld">mod_helloworld.php</filename>
<filename>index.html</filename>
<filename>helper.php</filename>
<filename>tmpl/default.php</filename>
<filename>tmpl/index.html</filename>
</files>
<params>
</params>
</install>


你可能注意到了有两个附件文件index.html 和 tmpl/index.html. 这两个文件主要是浏览目录的时候显示这两个文件,而不是显示目录下的文件结构。这两个文件仅仅包含一行:

<html><body bgcolor="#FFFFFF"></body></html>

就是一个空白页面

因为我们的模块没有参数,所以xml文件中这部分没有


结论:

Joomla 的模块开发是一个非常简单明了的过程,使用本教程中的技术,简单的变化能生成无尽的模块。
分享到:
评论

相关推荐

    joomla模块开发教程

    如果你对Joomla开发感兴趣,可以访问http://www.zmax99.com,那里提供了许多免费的Joomla开发教程,包括更多关于模块开发和多语言支持的内容。Zmax是中国的一支专注于Joomla开发的团队,他们致力于分享和提供有关...

    Joomla1.5系列组件开发经典教程

    在Joomla中,扩展主要分为三大类:组件(Components)、模块(Modules)和插件(Plugins)。 1. **组件**:是构成页面主要内容的基本单元,通常具有强大的后台管理功能,可以用于创建和更新数据库记录,如文章管理...

    Joomla+1.6模板制作教程

    Joomla 1.6模板制作教程是针对网页设计和开发人员的一份详细指导,旨在教习如何利用960 Grid System为Joomla 1.6版本创建自定义模板。960 Grid System是一种流行的设计框架,它提供了一种标准化的方法来布局网页元素...

    joomla入门-new.rar

    学习Joomla时,了解其核心概念是必要的,如组件(Components)、模块(Modules)和插件(Plugins)。组件是Joomla中的主要功能单元,它们负责处理网站的主要任务,如内容管理。模块则用于在网站的不同位置显示信息,...

    joomla模板设计(中文版)

    本教程将深入讲解Joomla模板设计的基础知识、步骤以及技巧。 **一、Joomla模板的基本结构** Joomla模板主要由以下组件构成: 1. **templateDetails.xml**:这是模板的配置文件,包含了模板的元数据,如作者、版本...

    Learning Joomla! 1.5 Extension Development Creating Modules, Components, and Plugins with PHP

    - **特点**:本书是一本实践教程,旨在帮助读者从零开始创建自己的Joomla! 1.5扩展。作者提供了详细的步骤指导,并深入讲解了各种技术细节。 - **目标读者**: - **开发者**:对于希望学习如何为Joomla! 开发扩展的...

    Learning.Joomla.Extension.Development

    1.5 的模块(Modules)、组件(Components)和插件(Plug-ins)的实用教程。本书由 Joseph LeBlanc 编写,并于 2007 年首次出版。它为读者提供了深入学习 Joomla 扩展开发的机会,并通过实际案例展示了如何创建自己...

    Joomla组件Community Builder 1.0.2的安装方法

    Community Builder (简称CB)是一款专门针对Joomla开发的社区组件,它可以极大地增强网站的社交功能,提供诸如用户管理、论坛、个人资料定制等功能。本篇将详细介绍如何在Joomla 1.0.12版本上安装Community Builder ...

    joomla建站软件用的插件

    除了插件,Joomla还有其他类型的扩展,如模块(Modules)、组件(Components)和模板(Templates)。模块可以在网站的不同位置显示内容,组件是功能最强大的扩展,常用于构建复杂的网站功能,而模板则决定了网站的...

    VirtueMart - joomla电子商城组件

    "modules"和"plugins"目录可能包含用于扩展功能的模块和插件,根据需求安装到Joomla网站中。 总的来说,VirtueMart是Joomla平台上的强大电商工具,它的灵活性和扩展性使得无论是小型网店还是大型电商企业都能找到...

    plg_FlowPlayer.Reloaded-3.0_j15.zip

    《Joomla模块:plg_FlowPlayer.Reloaded-3.0_j15.zip与视频播放功能详解》 在Web开发领域,Joomla作为一个流行的开源内容管理系统(CMS),以其强大的功能和灵活性备受开发者喜爱。本篇文章将深入探讨Joomla的一个...

    Virtuemart Accordation menu module-开源

    首先,将这个文件上传到网站的 "modules" 目录,然后在 Joomla 的模块管理页面创建一个新的模块实例,选择 "mod_accordion_menu" 模块类型。接着,你可以定制菜单的颜色方案、字体样式、动画速度等外观属性,并指定...

    零起点学drupal

    6. **模块(Modules)扩展**:Drupal的强大在于其丰富的模块生态系统,学习如何安装、配置和管理模块,以增强网站功能,如搜索、评论、社交分享等。 7. **视图(Views)与块(Blocks)**:掌握Drupal的视图工具,...

Global site tag (gtag.js) - Google Analytics