Правильный пакет установки Joomla.

Сегодня обратились в поддержку, по поводу не корректного удаления пакета расширений 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».

После того как вы все сделали правильно, вы можете как установить все расширения одной операцией, так и удалить все установленные расширения, удалив просто пакет установки расширения.

2 комментария
Помимо прочего, если нужна дополнительная магия при  установке есть <scriptfile>install.php</scriptfile>
docs.joomla.org/J2.5:Managing_Component_Updates_(Script.php)
класс должен иметь имя pkg_ИмяПакетаInstallerScript 
Кстати да… с февраля будет разрешена только официальная магия :-) За не официальную будут больно карать исключением из JED.
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.