Новвовведение: начиная с 10 января 2017 года все расширения, публикуемые на JED, должны использовать Систему Обновлений Joomla (Joomla Update System). Это поможет владельцам сайтов получать оповещения о выходе новых версий расширений, используемых на сайте. Наличие свежих версий расширений поможет улучшить безопасность вашего сайта.
Из соображений тактичности, расширения, уже размещённые в JED и не соответствующие новым требованиям, не будут сняты с публикации. Вместо при клике в кнопку Download, появится pop up окошко с предупреждением о том, что данное расширение не поддерживает систему обновлений и должно обновляться в ручном режиме.
Ниже мы расскажем, как внедрить Систему Обновлений Joomla (Joomla Update System) в ваше расширение.
Что такое Система Обновлений Joomla? (Joomla Update System)
Начиная с версии 1.6, в Joomla была внедрена система обновлений для актуализации расширений. Пользователи могут видеть оповещения о новых версиях расширений и обновлять их прямо из панели администрирования. Joomla Update System управляется Менеджером Расширений. Подробнее об этом можно прочитать здесь.
Уведомления об обновлениях
Система Обновлений Joomla предоставляет удобный способ для обновления установленных расширений, кроме того, она внедряет систему оповещений от разработчика расширения, информирующий пользователя о доступности новых версий. Таким образом, администраторы будут оповещены и смогут обновить расширение из админки несколькими кликами.
Новое требование JED
После 10 января 2017 года все расширения, загружаемые в JED, должны использовать Систему Обновлений Joomla. Это поможет владельцам сайтов получать оповещения о доступности обновлений установленных расширений. Это поможет использовать на сайте актуальные версии расширений и, тем самым, улучшить безопасность сайта.
В данном руководстве будут изложены общие детали, связанные с внедрением Системы Обновлений Joomla как в бесплатные, так и в платные продукты. Всем разработчикам расширений рекомендуется изучить подробную документацию или посмортеть изнутри сторонние расширения, в которых уже реализована подобная интеграция с системой обновлений.
Интеграция Системы Обновлений Joomla в бесплатные расширения
Для обеспечения подобной интеграции Системе Обновлений Joomla потребуется специальный тег в манифесте расширения, который устанавливает URI для публикации доступных обновлений:
Определение сервера обновлений
Для использования данного функционала сервер обновлений должен быть установлен в манифесте расширения.
<extension>
<...>
<updateservers>
<server type="collection">http://example.com/list.xml</server>
<server type="extension" priority="2" name="My Extension's Updates">http://example.com/extension.xml</server>
</updateservers>
</extension>
Обновления XML файла
Тип сервера расширений даёт разработчикам возможность объявлять манифест расширения для получения обновлений из манифеста одиночного расширения.
<update>
<name>Joomla! 1.7</name>
<description>Joomla! 1.7 CMS</description>
<element>joomla</element>
<type>file</type>
<version>1.7.0</version>
<infourl title="Joomla!">http://www.joomla.org/</infourl>
<downloads>
<downloadurl type="full" format="zip">http://joomlacode.org/gf/download/frsrelease/15279/66552/Joomla_1.6.5_to_1.7.0_Package.zip</downloadurl>
</downloads>
<tags>
<tag>stable</tag>
</tags>
<maintainer>Sam Moffatt</maintainer>
<maintainerurl>http://sammoffatt.com.au</maintainerurl>
<section>Testing</section>
<targetplatform name="joomla" version="1.6"/>
</update>
Пример использования: компонент Joomla weblinks
Как известно, бывший ранее составной частью Joomla компонент ссылок (com_weblinks) на данный момент распространяется как стороннее расширение и обновляется по принципу стороннего расширения. Данный компонент - отличный пример внедрения системы обновлений: joomla-extensions/weblinks
weblinks/src/pkg_weblinks.xml
..
<updateservers>
<!-- Note: No spaces or linebreaks allowed between the server tags -->
<server type="extension" name="Web Links Update Site"><a href="https://raw.githubusercontent.com/joomla-extensions/weblinks/master/manifest.xml</server>">https://raw.githubusercontent.com/joomla-extensions/weblinks/master/manifest.xml</server></a>
</updateservers>
</extension>
Как показано на примере манифеста выше, обновлеения расширения распространяются из XML файла, который настраивается вручную. Если вы планируете создать потоки с XML обновлениями из компонента-файлового репозитория, то ряд альтернативных решений можно найти на JED.
Ссылка:
Интеграция Системы Обновлений Joomla в коммерческие расширения
Даный способ схож с тем, что мы рассмотрели в случае с бесплатным расширением, однако теперь требуется дополнительная валидация для проверки, уполномочен ли пользователь получать обновления. Валидация осуществляется в онлайн режиме и должна поддерживаться разработчиком на уровне своего расширения.
Для идентификации обновил ли пользователь свою систему, у Joomla есть дополнительный параметр extra_query
в #__update_sites
. Данный параметр должен быть добавлен в объявленном URL для скачивания, предоставляя пользователю возможность принять или отказаться от скачивания обновления.
Вы можете управлять extra_query
в соответствии со своими требованиями и Joomla не накладывает никаких ограничений в области информации. Поле должно быть валидным как параметр URL.
Пример реализации: Akeeba Release System и Akeeba Subscriptions
Разработчик компонентов Akeeba Release System и Akeeba Subscriptions использует данные продукты для продажи своих расширений. Оба продукта являются бесплатными альтернативами для создания собственной системы релизов.
В данном контексте Download ID (dlid) должен быть определён в расширении, информация о котором обновляется и хранится в поле extra_query
. Например: dlid=1234567890123456789012.
Когда Менеджер Обновлений Joomla обращается к вашему сайту с целью обновления, он включает в себя Download ID. Компоненты Akeeba Release System и Akeeba Subscriptions работают совместно и осуществляют проверку валидности подписки пользователя и возвращают правильный ответ.
Несколько слов относительно сторонних Систем Обновлений
Сторонние системы обновлений, созданные для обеспечения безопасного и удобного способа обновлений, схожи с Системой Обновлений Joomla и выполняют те же требования. Однако, поскольку нашей целью является централизация информации об обновлениях в расширениях, Область обновлений (Update area), а затем и сторонняя система обновлений должны предоставлять Менеджеру Обновлений Joomla инфорацию о доступности версии. Пользователям необязательно посещать сайт каждого расширения для того, чтобы проверить статус расширения.
Примеры скриншотов:
Как лучше всего выполнять требования по добавлению НДС в случае продажи электронных товаров и услуг?
В некоторых случаях необходимо добавлять НДС при продаже цифрового товара или услуги, однако подобные аспекты лежат за пределами полномочий JED. Этот вопрос лежит целиком на плечах разработчика.
Вы можете внедрить Систему Обновление Серверов в похожем ключе, как это реализовано в платных расширениях - данная система информирует пользователей о доступных обновлениях расширений и отображает сообщение, информирующее о доступности обновления через ваш сайт. Ключевым моментом является информирование пользователя об обновлениях, решение о том, стоит ли обновлять расширение или нет лежит целиком на пользователе.
К слову говоря, существует несколько менеджеров загрузок, которые решают задачу по управлению обновлениями, также существуют компоненты для организации подписок, которые помогут вам с учетом НДС. В противном случае вы можете использовать платформы электронной коммерции для организации продаж.
Полезные ссылки по теме:
- Tim's Joomla! News - How to add Joomler Updater to commercial component
- Akeeba Release System - A software dissemination / download repository component for Joomla!
- Akeeba Subscriptions
- Allow commercial (for a fee) components to use the Joomla! extensions update feature [Tracker 32684] #2508
В статье использовано изображение с сайта Freepik