教程栏目

joomla中文网出品的官方教程

最近遇到这样的一个问题。开发了一个验证码插件,为了实现点击图片进行验证码切换,需要进行Ajax调用。在joomla中使用ajax最直接的方 法就是当做组件的task使用,为此又开发了一个组件。现在所有的代码都可以用了,但是我发现为了让用户使用这个验证码,必须同时安装两个扩展。也就是说 用户需要执行两次标准的安装操作。这非常的不友好,那么有没有办法一个安装包同时安装多个扩展呢?通过分析kunuea论坛的实现,自己尝试了很久都没有 成功。后在群里的朋友的推荐下找到了一篇文章。原文的地址是:http://jeffchannell.com/Joomla/install- multiple-joomla-extensions-in-a-single-package.html。依据这篇文章的,自己来尝试实现一下。

 通过阅读原文,大体理解了整个安装过程的安装原理了。

1,安装程序会在安装完成的时候执行一个文件,这个文件的名称为component.install.php(到底component.install.php还是componet_name.install.php这个还不确定)。可能是joomla版本的问题,两种方式都不能使用。在j25中可以使用<scriptfile>script.php</scriptfile>来指定一个安装时执行的脚本,这个已经测试成功。

2,我们可以调用系统的安装程序来进行一个自定义的安装。

为了实现这两个目标,我们首先得将需要安装的扩展的安装包放到组件的xml文件中,让他随着一起拷贝过去。然后就是new一个JInstaller对象,让他来执行安装。

大致的代码如下:

jimport('joomla.installer.helper');
	$installer = new JInstaller();
	
	
	$pk_path = JPATH_BASE.DS.'modules'.DS.'mod_login'.DS."extensions".DS;
	$pk_file = "zmcaptchav1.0.0-2014-09-12.zip";
	
	
	
	$package = JInstallerHelper::unpack($pk_path.$pk_file);
	
	
	if($installer->install( $package['dir']))
.......
JInstallerHelper::cleanupInstall($pk_path.$pk_file ,$package['dir']);
   

 先定位目标安装包,然后解压,最后安装,安装完成后进行清理。这就是基本的原理。在下一节中将就这个原理来制作一个安装包。

 

 

作者: 樱木花道

Joomla程序员,从J1.5到J4.x始终都在做Joomla相关开发定制工作,有超过10年行业经验,国内Joomla扩展开发商ZMAX团队的核心成员

作者网站:ZMAX程序人

评论 (0)

  • 最新在前
  • 最佳在前

第1章 Joomla入门教程

第3章 C计划

第5章 E计划

第6章 H计划

第7章 G计划

第9章 运行环境

第11章 主从与集群

第12章 模块开发

第13章 插件开发

第14章 j2.x组件开发教程

第15章 页面定制教程

第16章 页面构造器