如何在一个包中安装组件和路由插件?

时间:2011-12-17 09:36:28

标签: joomla joomla1.5 joomla-extensions joomla-component

我为Joomla 1.5创建了自定义组件和路由插件,以便为我的组件提供SEO URL,以及不与菜单绑定的文章和类别。现在我必须单独安装我的组件和路由插件。有没有办法在一个包装中安装?

提前谢谢! Vojtech

2 个答案:

答案 0 :(得分:5)

有一种更简单的方法。

什么是套餐?

包是一种扩展,用于一次安装多个扩展。

如何创建包?

通过将扩展名的所有zip文件与xml清单文件一起压缩来创建包扩展。例如,如果您有一个由以下组成的包:

  • component helloworld
  • module helloworld
  • library helloworld
  • 系统插件helloworld
  • template helloworld

软件包在zipfile中应该包含以下树:

-- pkg_helloworld.xml
 -- packages <dir>
     |-- com_helloworld.zip
     |-- mod_helloworld.zip
     |-- lib_helloworld.zip
     |-- plg_sys_helloworld.zip
     |-- tpl_helloworld.zip

pkg_helloworld.xml可以包含以下内容:

 <?xml version="1.0" encoding="UTF-8" ?>
 <extension type="package" version="1.6">
 <name>Hello World Package</name>
 <author>Hello World Package Team</author>
 <creationDate>May 2012</creationDate>
 <packagename>helloworld</packagename>
 <version>1.0.0</version>
 <url>http://www.yoururl.com/</url>
 <packager>Hello World Package Team</packager>
 <packagerurl>http://www.yoururl.com/</packagerurl>
 <description>Example package to combine multiple extensions</description>
 <update>http://www.updateurl.com/update</update>
 <files folder="packages">
   <file type="component" id="helloworld" >com_helloworld.zip</file>
   <file type="module" id="helloworld" client="site">mod_helloworld.zip</file>
   <file type="library" id="helloworld">lib_helloworld.zip</file>
   <file type="plugin" id="helloworld" group="system">plg_sys_helloworld.zip</file>
   <file type="template" id="helloworld" client="site">tpl_helloworld.zip</file>
 </files>
 </extension>

答案 1 :(得分:4)

当任何扩展安装Joomla时,会在您的安装文件中触发一个事件'com_yourcomponent_install()',您已在xml文件中提到过。

编写一个函数com_yourcomponent_install,在其中获取插件文件夹的路径并安装它

$installer =  new JInstaller();
// Install the packages
$installer->install($pluginPath);

例如

    你在xml文件install.mycomponent.php 中的
  1. 并且在install.mycomponent.php中应该有一个函数com_mycomponent_install()
  2. 此函数将包含代码

    $ installer = new JInstaller(); //安装软件包 $ installer-&GT;安装($ pluginPath);