joomla 3.6 component开发教程之二 component外部网站(site)

新建一个简单的component前台(site)页面

joomla中component的安装方式主要分为三种:

  • 1–上传zip包
    uploda-zip
  • 2–指定服务器本地目录(目录结构需与zip包中的结构一致)
    com_publish/  
    ├── admin  
    ├── publish.xml 
    └── site 
        ├── publish.php  
        └── views  
            └── publish  
                ├── tmpl  
                │   └── default.php  
                └── view.html.php            
  • 3–通过管理后台自动发现
    dir-install
    对照controller中d对照controller中display方法涉及的5个关键步骤,isplay方法涉及的5个关键步骤,
    如果一切顺利,安装完毕后直接输入你的域名/index.php?option=com_publish,应该就能看到Hello World了。

component部分的目录结构概览(即zip包中的目录结构)

大家大概已经注意到,插件安装完成后,不同的目录和文件都安装到joomla项目下不同的地方去了,相对位置和在zip包内的相比发生了变化,现在我们一个个把他们找出来:

publish.xml文件

此文件为component配置文件,每个component都有自己的配置文件,其中包含了该component的基本信息(如:作者联系方式、使用条款等)以及相关文件在zip包中的相对位置;

关于此文件的内容,请登录博主github主页获取

该文件在安装之后会被复制到/opt/joomla-tutorial/administrator/components/com_publish/目录下(见下文)

admin目录

admin/
└── controllers

目前我们还没有涉及到admin后台,因此就放了一个controller目录,这个目录很明显是放controller相关代码的,后面admin相关章节会讲到,这里只是一个空壳,为了演示用。

如教程一所说,一个component安装完成后,admin部分的路径为 joomla根目录/administrator/com_XXX/,因此除了publish.xml文件之外,zip包中admin目录下的所有内容都会被复制到这个目录。

插件安装好之后,博主服务器上的目录结构如下: controller>execute( input->getCmd(‘task’));

/opt/joomla-tutorial/administrator/components/com_publish/
├── controllers
└── publish.xml

site目录

site部分的路径为 joomla根目录/components/com_XXX/,即:zip包中site目录下的所有内容都会被复制到这个目录。

/opt/joomla-tutorial/components/com_publish
├── controller.php
├── controllers
├── index.html
├── models
├── publish.php
└── views
    └── publish
        ├── tmpl
        │   └── default.php
        └── view.html.php

site目录初探

从上文中的目录概览中我们可以看出,除了配置文件之外,一个component包含两大部分(见教程一)。

component入口:publish.php

每个component都有且只有一个入口,在本教程中,这个文件的名字就是publish.php,要注意的是:名字不能错,不然joomla程序就找不到该component的位置了,我们为它写的所有逻辑都无法得到体现。

我们来看下这个入口文件的内容:


<?php>
/**
 *@author diphuaji
 */
// 检查全局常量 _JEXEC是否存在,不存在则退出
defined('_JEXEC') or die('Restricted access');
// 获取一个 controller,如上节所说,Controller算是MVC的入口
$controller = JControllerLegacy::getInstance('Publish'); 
// 获取input,所谓input就是将get请求或post请求中所传的参数封装成一个Input对象,
$input = JFactory::getApplication()->input;
// 从input中获取task参数所对应的值并执行后续逻辑,这个下文紧接着会有介绍
$controller->execute($input->getCmd('task'));
// 下面这句,博主本来想直接略去,但是考虑到joomla官网教程有,就放这儿了,它的作用是:如果在这个过程中controller被要求要重定向到其他页面,则在前面逻辑执行完之后会进行跳转,这个留给大家自己去实验
$controller->redirect();

除了上段代码中的注释部分外,博主还想说几句:

  • 检查_JEXEC的存在实际上是为了防止直接执行这个文件,实际上这个变量只在joomla的总入口中(即:joomla根目录/index.php)有定义,其作用不言自明
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值