joomla 3.x 创建简单的模块
admin
2023-06-12 20:02:51
0次

(一)开发一个基本的模块

说明:
joomla中的模块是轻量的可伸缩的扩展。它们通常用于最少的页面输出,有点复杂并通穿插在不同的组件中。

文件结构:
在标准的joomla模块开发中有如下几个基本的文件,比如你开发的是一个helloworld的模块
mod_helloworld.php 这个主要是模块的入口文件。它执行的是任何需要的初始化程序及调用帮助类程序收集数据,还有调用模块中输出需要的模板
mod_helloworld.xml 这是模块信息定义文件。它定义了一些需要安装的文件及模块需要的参数定义。
helper.php 这个文件里面包涵了给模块检索信息并展示的帮助类。
tmpl/default.php 模块的模板。就是如何展示模块收集的数据

创建 mod_helloworld.php
mod_helloworld.php 文件有三个任务
1.引入 helper.php 文件
2.调用helper.php 帮助类来检索需要的数据
3.引入模板来展示检索的数据
文件内容如下:

创建helper.php

创建tmpl/default.php


创建mod_helloworld.xml



    Hello, World!
    John Doe
    1.0.0
    A simple Hello, World! module.
    
        mod_helloworld.xml
        mod_helloworld.php
        index.html
        helper.php
        tmpl/default.php
        tmpl/index.html
    
    
    


(二)joomla基本的模块中引用数据库

在这部分中需要了解JDatabase的使用,可参考:https://docs.joomla.org/Accessing_the_database_using_JDatabase

在安装时创建表,即在文件sql/mysql/install.mysql.utf8.sql中创建表

CREATE TABLE IF NOT EXISTS `#__helloworld` (
    `id` int(10) NOT NULL AUTO_INCREMENT,
    `hello` text NOT NULL,
    `lang` varchar(25) NOT NULL,

  PRIMARY KEY (`id`)
) ENGINE=INNODB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;

INSERT INTO `#__helloworld` (`hello`, `lang`) VALUES ('Hello World', 'en-GB');
INSERT INTO `#__helloworld` (`hello`, `lang`) VALUES ('Hola Mundo', 'es-ES');
INSERT INTO `#__helloworld` (`hello`, `lang`) VALUES ('Bonjour tout le monde', 'fr-FR');

然后需要补充卸载时需要执行的sql,即文件sql/mysql/uninstall.mysql.utf8.sql中写入卸载时需要执行的sql

DROP TABLE IF EXISTS `#__helloworld`

当然后后期开发中有对数据库更新更新可以在sql/mysql/updates中添加更新sql文件,文件命名方式为版本号.sql 如:2.0.0.sql

修改helper.php 文件中的help类
内容如下:

getQuery(true)
            ->select($db->quoteName('hello'))
            ->from($db->quoteName('#__helloworld'))
            ->where('lang = ' . $db->Quote('en-GB'));
        $db->setQuery($query);
        $result = $db->loadResult();
        return $result;
    }
}

最后修改mod_helloworld.xml中把需要的文件及文件的作用定义好



    Hello, World!
    John Doe
    4.0.0
    A simple Hello, World! module.
    
        mod_helloworld.xml
        mod_helloworld.php
        index.html
        helper.php
        tmpl/default.php
        tmpl/index.html

        sql
    

    
        
            sql/mysql/install.mysql.utf8.sql
        
    

    
        
            sql/mysql/uninstall.mysql.utf8.sql
        
    

    
        
            sql/mysql/updates
        
    

    

    

(三)给joomla模块中添加表单字段
其实就是给模块的显示添加参数控制
首先在mod_helloworld.xml文件中的元素里添加如下


    

上面这个是SQL表单字段的写法,可参数https://docs.joomla.org/Special:MyLanguage/SQL_form_field_type
然后修改mod_helloworld.php中的内容如下

get('lang', '1');

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

require JModuleHelper::getLayoutPath('mod_helloworld');

最后修改helper.php文件,内容如下

getQuery(true)
            ->select($db->quoteName('hello'))
            ->from($db->quoteName('#__helloworld'))
            ->where('id = ' . $db->Quote($params));
        $db->setQuery($query);
        $result = $db->loadResult();
        return $result;
    }
}

最后mod_helloworld.xml的内容如下:



    Hello, World!
    John Doe
    4.0.0
    A simple Hello, World! module.
    
        mod_helloworld.xml
        mod_helloworld.php
        index.html
        helper.php
        tmpl/default.php
        tmpl/index.html

        sql
    

    
        
            sql/mysql/install.mysql.utf8.sql
        
    

    
        
            sql/mysql/uninstall.mysql.utf8.sql
        
    

    
        
            sql/mysql/updates
        
    

    
        
            

相关内容

热门资讯

空调连续工作多久需要停机休息 空调连续工作的时间取决于多个因素,包括空调的型号、功率、使用环境和维护情况等。一般来说,空调可以连续...
空调哪个符号是除湿的 空调除湿功能通常用一个水滴形状的符号表示。不同品牌和型号的空调遥控器可能会有所差异,但一般来说,除湿...
格力空调多长时间加一次氟利昂 1、一般情况下,空调对氟利昂的使用量是非常小的,所以在空调使用了四年左右的时候再考虑加也没问题。2、...
空调用多长时间需要加氟一次 一般情况下是五年。当出现以下这几种情况时,空调才需要加氟。1、空调的室内机和室外机各有两个接口,当接...
格调生活·C标思享荟:卡萨帝在... 9月12日的郑州龙湖金融岛,夜风轻拂,灯光璀璨。“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑...
品牌价值破千亿、高端份额持续领... 9月12日,“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑州站”在郑州龙湖金融岛举办。2026...
空调主板坏了修800还是换新的 空调主板坏了是修还是换新,需要考虑多个因素,以下是一些建议:1. 维修成本:如果维修费用较低,比如 ...
空调开多久需要休息多长时间 问题:空调开多久需要休息多长时间回答:1、在使用空调的过程中,一般空调开7~8个小时左右需要休息2~...
中央空调多长时间清洗一次 1、一般空调开机前清洗一次即可,空调开机中间时段再清洗一次,空调关机时清洗一次,这样比较合理。2、空...
中央空调氟利昂多久加一次 看空调制热和制冷程度,很多人的观点认为氟利昂必须一年放一次,其实这个观点是错误的,理解上面有点偏差,...