joomla1.5前台组件开发过程分享(附中文开发教程两本)
上一次分享到一个后台组件开发,也许我讲的不是很明白,不过你们把源代码拿去以后应该可以看懂,我是完全按照MVC模式开发的。今天呢,就来分享一下前台组件开发,我这里的前台组件和后台组件都是单独开发,前台组件是没有后台管理的,仅仅是开发显示效果,因为默认的排版方式就是那么两种,如果客户需要个性化的,就必须自己开发,下来我们就开发了。说一下目的,我要开发的是显示文章的列表样式,和自带的博客样式,默认样式不同的,找到前台组件目录components在里面新建一个文件夹就叫做com_more吧,在里面新建文件more.xml这个是打包安装文件,models文件夹是模块文件夹,views是视图文件夹,controller.php是控制器,more.php是入口文件。开发过程中我们可以用index.php?option=com_more来查看效果,由于这个例子简单,没有更多控制器和视图,所以还是比较容易理解。最后我会分享给你们插件开发的教程两本。
现在一步一步来,more.xml是安装文件,不是必须的,如果要打包分享别人通过zip上传方式安装才需要,一般工作中没有必要去写那个文件,特别是当文件特多的时候,我们直接上传开发文件和手动配置数据库同样可以。先来看more.php入口文件吧,
defined('_JEXEC') or die; jimport('joomla.application.component.helper'); require_once( JPATH_COMPONENT.DS.'controller.php' ); $controller = new MoreController(); $controller->execute(JRequest::getVar('task',null,'default','cmd')); $controller->redirect();
里面的1-3行是每个组件必须,任何组件都这么写,分别是防止意外加载,载入助手函数,再入控制器文件,4行是创建一个控制器对象,5行是执行任务,最后跳转,MoreController()是采用组建名+controller来命名的,joomla随处可见这种命名方式。
接着来看controller.php控制器代码
defined('_JEXEC') or die( 'Restricted access' ); jimport('joomla.application.component.controller'); class MoreController extends JController { function display() { parent::display(); } }
很简单吧,就是继承了父类joomla的控制器而已,没啥好说的。复杂一点的事models里面,他是一个模型,就是处理数据的,他把处理的数据给了views文件夹里面的more下面的view.html.php,在这个文件里面,我们首先是获得模型,然后把处理数据的方法返回的数据复制给模版。$this->assignRef('category', $category);就是赋值给category,这里其实可以不需要模型,我们直接在这个文件里面写查询数据,然后把值赋给变量,不过就不是MVC模式了。
最后就是在views\more\tmpl里面default.php的显示文件了,这里就是控制显示效果了,把处理的数据结果都在这里显示,通过循环,可以取出数据值。这里也是可以写查询语句的,有时候为了开发方便就直接在这里写了,不过后期维护组件的人就不容易看懂了,怎么做自己看着办吧。在joomla里面查询数据用的最多,所以
$db=&JFactory::getDBO(); $query="SELECT * FROM #__content"; $db->setQuery($query); $list=$db->loadObjectList();
这几句用的最多,几乎开发插件、组件、模块都有可能用到的。最后用循环取出$list值。
好了一个组件基本就完成了,最后附上组件完整代码,以及两本开发教程都是中文版的,一本是API讲解,一本是插件组建模块开发。
(原创 by Yoby)