Joomla(4) 建立Modules ,模組開發

2021-07-27 18:29:56 字數 3733 閱讀 2289

簡介

模組是頁面擴充套件輕量級方式,相對元件更為靈活。模組通常用來做頁面中不太複雜的一小塊,

並且能夠跨越不同的元件。

在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 類,並返回資料。

helper 

類在helper.php 中定義,這個檔案通過require_once 宣告來引入:

require_once __dir__ . '/helper.php';

我們的helper 類現在還沒定義,但是以後你可以看到,包含乙個方法gethello()。對於我們這個簡單的例子,這樣做並不是必須的,因為這個方法返回的資訊「hello, world」可以直接簡單的包含在模板中。

我們的模組現在沒有用到引數,但是為了以後擴充套件模組的時候方便,我們把引數傳遞給helper的方法。

helper 

類的方法用以下的方式呼叫:

$hello = modhelloworldhelper::gethello( $params );

完整的mod_helloworld.php 檔案

<?php

/*** hello world! module entry point */

// 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 */

class modhelloworldhelper

}沒有對定我們必須這樣命名我們的helper 類,但是這樣命名有利於我們找到和統一。

一些複雜的模組可以在helper 的方法中包含資料庫請求和其他功能。

建立tmpl/default.php

default.php 

是模板檔案

,他的**如下 :

<?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"?>

hello, world!

john doe

1.5.0

a ****** hello, world! module.

mod_helloworld.php

index.html

helper.php

tmpl/default.php

tmpl/index.html

index.html 

和tmpl/index.html

你可能注意到了有兩個附件檔案index.html 和tmpl/index.html. 這兩個檔案

主要是瀏覽目錄的時候顯示這兩個檔案

,而不是顯示目錄下的檔案結構。這兩個檔案僅僅包含一行:

就是乙個空白頁面。因為我們的模組沒有引數,所以xml 檔案中這部分沒有

安裝模組

首先,把mod_indexnews資料夾壓縮成字尾為.zip格式的壓縮包;

其次,登入joomla後台管理->擴充套件->

擴充套件管理->安裝;

注:瀏覽上傳壓縮包mod_indexnews.zip時,如果報錯,按如下處理:擴充套件->外掛程式管理,把system - legacy外掛程式啟用(一般不會報錯,主要是由於版本交替引起)

最後,到擴充套件->模組管理,就可以看到新增模組,把名字改為中文「****」

模組在components下

的引用

方式一:

$modname

= 『mostread

』; // not mod_mostread ,即不用mod_的字首;

<?php

$modules = jmodulehelper::

getmodule(

$modname);

$module = jmodulehelper::rendermodule($modules);

?>

<?php echo $module; ?>

結論:

joomla 

的模組開發是乙個非常簡單明瞭的過程,使用本教程中的技術,簡單的變化能生成無盡的

模組。

Joomla擴充套件模組開發文件 module

概述 擴充套件模組用於簡單的頁面展示,可以應用於多個不同的元件 擴充套件模組可以使頁面構建更加靈活並且可以提高程式的重用性 模組分為前台和後台兩種 在配置檔案的install元素中設定屬性client administrator 即為後台模組 前台的模組的目錄為 modules,後台模組的目錄為 a...

laravel4 建立module 模組式開發

好了,開始 autoload 第二步,在modules目錄下建立乙個admin資料夾,放模組的主體,目錄下建立config,controller,views資料夾,分別放相應的檔案 第三步,在modules資料夾下建立乙個檔案 serviceprovider.php abstract class s...

Zen cart裡建立module的方法

雖然zen cart左右欄都有相關的module放在sideboxes裡,但是,有的時候,需要在頁面上某個地方單獨顯示這些box的內容。比 如說,我想把shopping cart和currencies的內容顯示在頁面的頭部。這個時候,並不能直接用zen cart提供的module 唯有對現有的mod...