Сегодня обратились в поддержку, по поводу не корректного удаления пакета расширений Joomla. Я задался вопросом, а как собственно правильно должен выглядеть пакет установки расширения Joomla. Полез в документацию и хочу поделиться, на мой взгляд, ценной информацией.
Для чего нужен пакет установки Joomla?
Сейчас расширения Joomla обычно состоят из набора расширений: модули, плагины, компоненты, библиотеки. Устанавливать весь этот набор по отдельности не удобно, гораздо проще загрузить один архив в инсталлятор Joomla, а он уже все установит, так как надо. Собственно для этого и были придуманы пакеты. Обычно они обозначаются как pkg_ .
Теперь маленькая ремарка. Раньше я воспринимал, установочный пакет, только с точки зрения удобной установки расширений Joomla, с сегодняшнего дня я его еще и воспринимаю, как инструмент удобного удаления расширений Joomla.
Дальше будет немного официальной документации с моими комментариями.
Представим, что у нас есть директория с расширениями:
-- pkg_helloworld.xml -- packages <dir> |-- com_helloworld.zip |-- mod_helloworld.zip |-- lib_helloworld.zip |-- plg_sys_helloworld.zip |-- tpl_helloworld.zip
Над ней мы кладем фаил pkg_helloworld.xml -helloworld — это имя пакета, в котором и содержится вся информация по установке расширения.
<?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>
Вот так выглядит фаил pkg_helloworld.xml
Что в этом файле важно?
<extension type=«package» version=«1.6»> — это тип расширения пакет.
<packagename>helloworld</packagename> — собственно само название пакета оно должно совпадать с названием файла pkg_helloworld.xml, то есть правильное название helloworld.
Теперь перейдем к самому телу пакета установки:
<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>
На что тут стоит обратить внимание:
<files folder=«packages»> — если папка с расширениями называется «packages», если она называется по другом, то следовательно название надо изменить, если же ее нет, xml установки лежит в одном уровне с расширениями для установке то вся конструкция будет выглядеть вот так:
<files>
<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>
Теперь об самих расширениях:
<file type=«component» id=«helloworld» >com_helloworld.zip</file>
Обязательно надо указать тип расширения «type» — в данном примере этот тип это «component».
Так же следует указать id расширения, его вы можете найти в xml самого расширения, которое устанавливаете.
Специфические параметры для плагинов:
Для плагинов требуется указать группу расширения group=«system».
После того как вы все сделали правильно, вы можете как установить все расширения одной операцией, так и удалить все установленные расширения, удалив просто пакет установки расширения.
docs.joomla.org/J2.5:Managing_Component_Updates_(Script.php)
класс должен иметь имя pkg_ИмяПакетаInstallerScript