简单深入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中插入两、三条数据,效果如下: