教程栏目

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章 页面构造器

第17章 joomla升级

第18章 其他系统迁移

第19章 流量翻倍计划