简单深入Joomla!3.1.5模块_组件开发

主要内容:

1, 模块(访问数据库,链接到组件,数据基本流向)

2, 组件CRUD(MVC模式,访问数据库,表单提交,AJAX提交,数据基本流向)

3, 文字和代码为主,截图为辅,暂不解释相关原理(后续)

Windows7+EasyPHP5.3.9+Navcat for MySQL+Zend Studio10.0.0(PHP5.4)+浏览器

不用NetBeans了,因为Zend Studio界面、快捷键等确实都很好,也已习惯Eclipse(MyEclipse)的风格。

细节:

1 简单创建单一数据表(饮料表):表前缀_drink。

SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Table structure for stu_drink
-- ----------------------------
DROP TABLE IF EXISTS `stu_drink`;
CREATE TABLE `stu_drink` (
`ID` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) NOT NULL,
`produceDate` date NOT NULL,
`validateDate` date NOT NULL,
`manufacturer` varchar(255) NOT NULL,
`volume` decimal(5,1) DEFAULT NULL,
`brand` varchar(255) DEFAULT NULL,
`price` decimal(3,1) DEFAULT NULL,
PRIMARY KEY (`ID`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8; -- ----------------------------
-- Records
-- ----------------------------

stu_换成自己的表前缀。

2 开发模块(饮料提示):mod_drinktip,只显示编号ID和名称两列数据,放在模板的自定义position-7位置,菜单分配为“在所有的页面上”。

饮料提示模块文件结构和代码:

helper.php文件源代码:

<?php
/**
* @package Joomla.Site
* @subpackage mod_drinktip
*
* @author bobrave.shao
*/
defined ( '_JEXEC' ) or die (); /**
* Helper for mod_drinktip
*
* @package Joomla.Site
* @subpackage mod_drinktip
* @since 1.5
*/
class modDrinktipHelper {
// 获取所有饮料的ID和name
function getDrinks() {
$db = JFactory::getDbo (); $query = $db->getQuery ( true );
$query->select ( $db->quoteName ( array (
'ID',
'name',
'price'
) ) )->from ( $db->quoteName ( '#__drink' ) )->order ( 'produceDate DESC' ); $db->setQuery ( $query ); $rows = $db->loadAssocList ();
return $rows;
}
}

mod_drinktip.php文件源代码:

<?php
/**
* @package Joomla.Site
* @subpackage mod_drinktip
*
* @author bobrave.shao
*/
defined ( '_JEXEC' ) or die (); require_once __DIR__ . '/helper.php';
$rows = modDrinktipHelper::getDrinks ();
require (JModuleHelper::getLayoutPath ( 'mod_drinktip' ));

tmpl/default.php文件源代码:

<?php
/**
* @package Joomla.Site
* @subpackage mod_drinktip
*
* @author bobrave.shao
*/
defined ( '_JEXEC' ) or die ();
?>
<table>
<tr>
<th>编号ID</th>
<th>饮料名称</th>
<th>单价</th>
</tr>
<?php foreach ($rows as $drink) { ?>
<tr>
<td align="center"><?php echo $drink['ID'] ?></td>
<td align="center"><?php echo $drink['name']?></td>
<td align="center"><?php echo $drink['price']?></td>
</tr>
<?php } ?>
</table>
<a href="<?php echo JRoute::_('index.php?option=com_drinks&view=show'); ?>">更多饮料</a>

所有index.html文件代码:

<!DOCTYPE html><title></title>

mod_drinktip.xml文件代码:

<?xml version="1.0" encoding="utf-8"?>
<extension type="module" version="3.1" client="site" method="upgrade">
<name>饮料提示</name>
<author>bobrave.shao</author>
<creationDate>September 2013</creationDate>
<version>1.0.0</version>
<description>A simple drinktip module.</description>
<files>
<filename>mod_drinktip.xml</filename>
<filename>index.html</filename>
<filename module="mod_drinktip">mod_drinktip.php</filename>
<filename>helper.php</filename>
<filename>tmpl/index.html</filename>
<filename>tmpl/default.php</filename>
</files>
</extension>

至此,mod_drinktip开发完毕,压缩zip包,扩展-扩展管理-安装-浏览-上传并安装-安装成功->扩展-扩展管理-模块管理-选中“饮料提示”-编辑-详细(选择位置)-菜单分配(选择模块分配)-保存/保存并关闭。

访问前端网站首页http://<host>:<port>/<sitename>

往数据表stu_drink中插入两、三条数据,效果如下:

简单深入Joomla!3.1.5模块_组件开发(一)的更多相关文章

  1. ASP 读取Word文档内容简单示例_组件开发_新兴网络_20161014161610.jpg

  2. 论坛模块_版块管理_增删改查&实现上下移动

    论坛模块_版块管理1_增删改查 设计实体Forum.java public class Forum { private Long id; private String name; private St ...

  3. 权限模块_使用权限_实现主页面的效果_显示左侧菜单&只显示有权限的菜单项

    权限模块__使用权限__实现主页面的效果 HomeAction.java public class HomeAction extends ActionSupport { public String i ...

  4. 权限模块_整体方案说明_设计实体&映射实体_实现初始化权限数据的功能

    权限模块_整体方案说明 要点说明 权限就是控制功能的使用(功能对应着URL). 对功能的控制就是对URL的访问控制. 在我们的程序中,一个功能对应一个或两个URL: 1,例如列表或删除功能,只对应一个 ...

  5. 系统管理模块_用户管理1_实现用户有关的功能_测试功能、解决事务的问题、对密码进行MD5摘要

    系统管理模块__用户管理1__实现用户有关的功能 了解用户管理要做什么(增删改查初始化密码) 设计实体 分析功能有几个对应几个请求 增删改查有6个请求,初始化密码一个 实现增删改查一组功能的步骤流程 ...

  6. 系统管理模块_部门管理_改进_抽取添加与修改JSP页面中的公共代码_在显示层抽取BaseAction_合并Service层与Dao层

    系统管理模块_部门管理_改进1:抽取添加与修改JSP页面中的公共代码 commons.jspf <%@ page language="java" import="j ...

  7. 系统管理模块_岗位管理_实现CRUD功能的具体步骤并设计Role实体

    系统管理模块_岗位管理_实现CRUD功能的具体步骤并设计Role实体 1,设计实体/表 设计实体 --> JavaBean --> hbm.xml --> 建表 设计Role实体 p ...

  8. 分享一个简单易用的软件定时器模块(MultiTimer)——基于keil+stm32f103zet+hal库(裸机实现)

    公众号上看到一个比较好的一个github项目:https://github.com/0x1abin/MultiTimer 今天看了看,简单的,就移植了- 且看文档的说明, ============== ...

  9. 基于ngx_lua模块的waf开发实践

    0x00 常见WAF简单分析 WAF主要分为硬件WAF和软件防火墙,硬件WAF如绿盟的NSFOCUS Web Application Firewall,软件防火墙比较有名的是ModSecurity,再 ...

随机推荐

  1. Codeforces Round #551 (Div. 2) F. Serval and Bonus Problem (DP/FFT)

    yyb大佬的博客 这线段期望好神啊... 还有O(nlogn)FFTO(nlogn)FFTO(nlogn)FFT的做法 Freopen大佬的博客 本蒟蒻只会O(n2)O(n^2)O(n2) CODE ...

  2. Consul概述

    环境安装 1.下载consul 官网https://www.consul.io/downloads.html下载对应版本的consul:本文以Windows-64版本为例 2.配置到系统环境变量 C: ...

  3. Codeforces Round #495 (Div. 2) A,B,C

    A题 1.新添加一间酒店,要求酒店离已有的最近的一间酒店的距离恰好等于d 2.最左和最右必定存在合适的两种情况 3.酒店之间的情况就要判断两间酒店间的距离: 小于2d,表示无法在这两间酒店中间找到合适 ...

  4. Oracle Index 索引监控

    1.冗余索引的弊端 大量冗余和无用的索引导致整个数据库性能低下,耗用了大量的CPU与I/O开销,具体表现如下: a.耗用大量的存储空间(索引段的维护与管理) b.增加了DML完成的时间 c.耗用大量统 ...

  5. Crystal Report水晶报表碰到的一些纠结问题

    1.插入PNG文件时,透明的背景会变成黑色.试了矢量图WMF文件,是可以正常显示的,不过毕竟得到矢量图比较困难.   后来找到个方法,就是把JPG图片放在子报表里,调整子报表在父报表的位置并且保持JP ...

  6. MySQL数据分析—(4)关系数据库的三个逻辑框架

    (一)前面课程逻辑梳理 任何一门数据的软件也好,数据构架也好,或者说是数据学科也好,最终都是要解决实际问题的,大家说是不是? 前面jacky讲为什么要引入数据库的时候,举了一个案例,大家还记的吗?大家 ...

  7. 二十九、SELinux简介

    一.基础 1)访问模型 Linux原有访问模型:自主访问控制 DAC 安全隐患: 进程所能访问资源的范围 为用户所能访问的资源范围 后门: rootkit程序 进程被胁持: 基于进程作为跳板,就有了进 ...

  8. Ubuntu验证查看库的安装情况

    以下是ubuntu系统安装完成一些库后,验证查看各个库的安装情况. 1. CUDA8.0 yuanlibin@yuanlibin:~$ nvcc -V nvcc: NVIDIA (R) Cuda co ...

  9. Parameter 'list1' not found. Available parameters are [list] 解析

    在使用foreach语句时会经常报Parameter ‘ordersList’ not found. Available parameters are [list] 解析这个错误,造成这个错误的主要原 ...

  10. 第11组 Beta冲刺(5/5)

    第11组 Beta冲刺(5/5)   队名 不知道叫什么团队 组长博客 https://www.cnblogs.com/xxylac/p/12031050.html 作业博客 https://edu. ...