Joomla 3.xx - 如何以编程方式卸载和安装组件或包

时间:2017-05-24 09:55:54

标签: joomla3.0 joomla-extensions

通常,当您要卸载或安装组件,软件包,插件或模块时,通常可以在Joomla管理界面中手动执行此操作。

在这种情况下,我正在寻找一种方法,可以直接从PHP(在Joomla框架内)以编程方式卸载和安装组件或软件包,可能来自系统插件。

所以基本上我想以编程方式启动软件包的卸载和安装过程,以便卸载和安装所有组件,模块,插件等,通常通过卸载和安装来卸载和安装所有组件,模块,插件等。从Joomla admin。手动打包。

有人可以给我一个暗示我将如何实现这一点,最好使用Joomla的核心类特定功能。

我试图通过搜索各种Joomla文档找到相关信息,但到目前为止还没有运气。

更新 我找到了从Joomla admin安装和卸载扩展时使用的核心模型文件。

我在这个类文件中找到了一个可以用来从插件中卸载扩展的函数: /administrator/components/com_installer/models/manage.php

该函数是:“remove($ eid = array())”作为类的一部分:“InstallerModelManage”,它扩展了“InstallerModel”

我还在这个类文件中找到了一个用于从插件安装扩展的函数: /administrator/components/com_installer/models/install.php

该函数是:“install()”作为类的一部分:“InstallerModelInstall”扩展“JModelLegacy”

现在我只需要找到最好的(正确的)方法将这些函数包含在我的插件文件中,这样我就可以执行remove($ eid = array())和install()

1 个答案:

答案 0 :(得分:1)

这就是你的称呼方式。

JModelLegacy::addIncludePath(JPATH_ROOT . '/administrator/components/com_installer/models');
$model = JModelLegacy::getInstance('Install', 'InstallerModel');
$model->install();

但它会从输入中获取一些数据。所以你必须在之前做好准备

$input = JFactory::getApplication()->input;
$input->set('installtype', 'url');
$input->set('install_url', 'path/to/instalation/asyou/would/enter/it/in/installation/interface');