创建一个最基本的组件需要5个文件
site/hello.php 这个是组件的入口
site/controller.php 控制器
site/views/hello/view.html.php 视图,它将接受显示所需要的数据,并把数据传递给模板文件
site/views/hello/tmpl/default.php 模板文件
hello.xml 这个文件将告诉 Joomla! 如何安装这个组件
PS:site在这里是固定写法,在组建安装后,他会被自动替换为对应的组件名,比如:如果我们的组件叫hello,那么site在安装后就会被替换为com_hello。
我们总是通过一个入口访问Joomla!——在页面这边是index.php,在后台管理端是administrator/index.php。这里这个index.php是Joomla!的文件,而不是组件的一部分,我们通过这个文件来访问我们的组件,形如:
index.php?option=com_hello&view=hello
在地址栏里输入这个地址就会访问我们组件的入口components/com_hello/hello.php
下面是入口文件样例(代码来自Joomla!官方网站)
第一句是安全检查,如果不符合当前安全要求的,比如没有访问权限,页面不能访问
JPATH_COMPONENT 是当前组件的路径,在这个例子中是components/com_hello。如果是管理端,则用JPATH_COMPONENT_ADMINISTRATOR。
在controller创建文成后,就要使用它来执行任务了。可以通过在地址栏输入地址来制定要执行的任务,形如:URL: index.php?option=com_hello&task=sometask,如果并没有指定任务,那么将默认执行任务display。
注意:文件结束部分并没有使用标签 ?>来结束文件。从Joomla!1.5以后,所有的纯php文件都将如此。这样做的目的是为了避免生产不必要的空格(希望有一天能明白为啥会这样)
创建控制器 site/controller.php
由于这个例子要求的非常简单,所以只有一个任务——说hello
除非制定了别的任务,JController总是会在构造函数中注册display任务。display是JController的默认任务。
创建视图
视图的任务非常简单——获取到要被现实的数据,并把数据传送给显示模板。传送数据的方法是JView::assignRef。(注意:assignRef的第一个参数不能以下划线开头,例如:$this->assignRef('_greeting',$greeting),如果这样做了,那么assignRef将会返回false或者数据不能被传送到模板中去。)
示例代码:(site/views/hello/view.html.php)
创建模板
在Joomla!里,模板是把从试图传送过来的数据按照模板规定的样式显示出来。模板就是一个php文件。在模板里使用$this->{propertyname}来访问从视图传送过来的数据变量。
在本示例中,模板非常简单
site/views/hello/tmpl/default.php