Используйте программу обновления Joomlaː Добавление автоматического обновления - Часть 5

  1. Требования к разработке модуля Joomla
  2. Средство обновления Joomla
  3. Структура файлов модуля Joomla
  4. Редактирование файла mod_foo.xml
    1. Итоговый файл mod_foo.xml
  5. Создание файла foo_update.xml
    1. Итоговый файл foo_update.xml
  6. Протестируйте обновление вашего модуля Joomla 4
  7. Коммерческие Модули для Joomla 4
  8. Заключение


Требования к разработке модуля Joomla.

Вам нужна Joomla! 4.x для этого урока (на момент написания этой статьи в настоящее время версия Joomla! 4.0.0-alpha6-dev)

Средство обновления Joomla.

Первое, что нужно сделать, это прочитать Руководство по управлению обновлениями компонентов с помощью Joomla 2.5 - Часть 1, чтобы получить представление о том, как работает процесс обновления в Joomla. Несмотря на то, что он написан для Joomla 2.5, процесс не изменился. Также прочитайте о Развертывании сервера обновлений - это то, что мы будем реализовывать в этом руководстве.

Структура файлов модуля Joomla.

Мы создадим/изменим следующие файлы:

  • mod_foo.xml
    • Единственный способ обновить существующий модуль - это добавить сервер обновлений, например http://www.example.com/foo_update.xml - в XML-файл.
  • foo_update.xml
    • Когда нам нужно создать XML-файл для сервера обновлений, например, http://www.example.com/foo_update.xml, чтобы сообщить Joomla о наличии обновления.

Редактирование файла mod_foo.xml.

Чтобы добавить наш сервер обновлений, нам нужно вставить следующие строки в ваш XML-файлː

<updateservers>
    <server type="extension" priority="1" name="[PROJECT_NAME]">https://www.example.com/mod_foo.xml</server>
</updateservers>

Итоговый файл mod_foo.xml.

Полный файл mod_foo.xml выглядит следующим образом:

<?xml version="1.0" encoding="utf-8"?>
<extension type="module" version="4.0" client="site" method="upgrade">
    <name>MOD_FOO</name>
    <creationDate>[DATE]</creationDate>
    <author>[AUTHOR]</author>
    <authorEmail>[AUTHOR_EMAIL]</authorEmail>
    <authorUrl>[AUTHOR_URL]</authorUrl>
    <copyright>[COPYRIGHT]</copyright>
    <license>GNU General Public License version 2 or later; see LICENSE.txt</license>
    <version>1.0</version>
    <description>MOD_FOO_XML_DESCRIPTION</description>
    <namespace>Joomla\Module\Foo</namespace>
    <files>
        <filename module="mod_foo">mod_foo.php</filename>
        <folder>tmpl</folder>
        <folder>Helper</folder>
        <folder>language</folder>
        <filename>mod_foo.xml</filename>
    </files>
    <updateservers>
        <server type="extension" priority="1" name="[PROJECT_NAME]">https://www.example.com/mod_foo.xml</server>
    </updateservers>
    <config>
        <fields name="params">
            <fieldset name="basic">
                <field
                    name="domain"
                    type="url"
                    label="MOD_FOO_FIELD_URL_LABEL"
                    filter="url"
                />
            </fieldset>
            <fieldset name="advanced">
                <field
                    name="layout"
                    type="modulelayout"
                    label="JFIELD_ALT_LAYOUT_LABEL"
                    class="custom-select"
                />
                <field
                    name="moduleclass_sfx"
                    type="textarea"
                    label="COM_MODULES_FIELD_MODULECLASS_SFX_LABEL"
                    rows="3"
                />
                <field
                    name="cache"
                    type="list"
                    label="COM_MODULES_FIELD_CACHING_LABEL"
                    default="0"
                >
                    <option value="1">JGLOBAL_USE_GLOBAL</option>
                    <option value="0">COM_MODULES_FIELD_VALUE_NOCACHING</option>
                </field>
                <field
                    name="cache_time"
                    type="number"
                    label="COM_MODULES_FIELD_CACHE_TIME_LABEL"
                    default="0"
                />
                <field
                    name="cachemode"
                    type="hidden"
                    default="itemid"
                >
                    <option value="itemid"></option>
                </field>
            </fieldset>
        </fields>
    </config>
</extension>

Итак, теперь, когда Joomla знает, где искать обновления для нашего расширения, давайте создадим специальный файл, чтобы протестировать наш процесс. Но сначала нам нужно создать файл foo_update.xml. До сих пор мы описывали только сервер обновлений. Мы пока не знаем, есть ли обновление. В файле foo_update.xml мы указываем, когда будет опубликована новая версия и откуда ее можно загрузить.

Создание файла foo_update.xml.

Теперь нам нужно создать XML-файл по адресу http://www.example.com/foo_update.xml чтобы сообщить Joomla о наличии обновления.

Итоговый файл foo_update.xml.

Полный файл foo_update.xml выглядит следующим образом:

<?xml version="1.0" ?>
<updates>
    <update>
        <name>Foo</name>
        <description>This is mod_foo 1.0.1</description>
        <element>mod_foo</element>
        <type>module</type>
        <version>1.0.1</version>
        <downloads>
            <downloadurl type="full" format="zip">http://www.example.com/mod_foo_101.zip</downloadurl>
        </downloads>
        <maintainer>Joomla</maintainer>
        <maintainerurl>http://www.example.com</maintainerurl>
        <targetplatform name="joomla" version="4.0"/>
        <client>site</client>
    </update>
</updates>

После загрузки этого файла по адресу https://www.example.com/mod_foo.xml обновление будет отображаться в админке Joomla.

Протестируйте обновление вашего модуля Joomla 4.

Создайте копию модуля в том виде, в каком он есть сейчас. И давайте обновим номер версии до 1.0.1. Теперь вы можете заархивировать все файлы. После этого вы должны загрузить свой новый установочный пакет на URL-адрес http://www.example.com/mod_foo_101.zip . Теперь вы можете обновить свой модуль с помощью стандартного функционала обновления Joomla.

Коммерческие Модули для Joomla 4.

Обратите внимание, что в наших файлах мы ссылаемся на XML-файл обновлений расширений. И из этого xml-файла у нас есть место расположение для zip-файла модуля. Это означает, что если бы кто-то отследил это в обратном направлении, он мог бы найти физический источник zip-файла ваших модулей. Если вам это не нравится, вы можете найти решение по этой ссылкеː  https://github.com/joomla/joomla-cms/pull/15185 .

Заключение.

С помощью встроенной функции обновления Joomla вы можете легко связаться со всеми пользователями и сообщить им, что появилась новая версия. И само обновление производится в админке Joomla легко и просто для пользователей.

Каждое расширение должно использовать сервер обновлений. Особенно по соображениям безопасности.

Вы можете найти шаблоны здесьː

Примеры файлов для этого руководства можно найти здесьː


Вы читаете статью из небольшого цикла:
«Создание простого модуля для Joomla 4.x»

  1. «Вступление»
  2. «Разработка базового модуля для CMS Joomla 4 - Часть 1»
    1. «Тестирование и Отладка первой части написанного модуля для Joomla 4»
  3. «Разработка базового модуля для CMS Joomla 4 - Часть 2. Добавление вспомогательного класса, использование пространства имён.»
    1. «Тестирование и Отладка второй части написанного модуля для Joomla 4»
  4. «Разработка базового модуля для CMS Joomla 4 - Часть 3. Настройкаː Добавление параметров с помощью полей формы»
    1. «Тестирование и Отладка третьей части написанного модуля для Joomla 4»
  5. «Разработка базового модуля для CMS Joomla 4 - Часть 4. Использование сценария установки, обновления и удаления.»
  6. «Разработка базового модуля для CMS Joomla 4 - Часть 5. Добавление автоматического обновления расширения Joomla.»

Перевод с английского официальной документации Joomla 4:
https://docs.joomla.org/J4.x:Creating_a_Simple_Module

Заберите ссылку на статью к себе, чтобы потом легко её найти!
Раз уж досюда дочитали, то может может есть желание рассказать об этом месте своим друзьям, знакомым и просто мимо проходящим?
Не надо себя сдерживать! ;)

Старт! Горячий старт на просторы интернета
Старт! Горячий старт на просторы интернета
Старт! Меню