Новости Joomla

SW JProjects v.2.5.0 - компонент каталога цифровых проектов на Joomla

SW JProjects v.2.5.0 - компонент каталога цифровых проектов на Joomla

👩‍💻 SW JProjects v.2.5.0 - компонент каталога цифровых проектов на Joomla.Компонент - менеджер цифровых проектов для Joomla! CMS. Компонент обеспечивает создание каталога цифровых проектов и предоставляет возможность скачивания, в том числе с использованием лицензионных ключей.👩‍💻 v.2.5.0. Что нового?Схемы структур данных для серверов обновлений. Теперь с SW JProjects вы может создавать сервер обновлений не только для расширений Joomla, но и свои собственные. Например, вам нужно, чтобы структура данных сервера обновлений была другая и формат должен быть, например, не XML, а JSON. Формирование структуры данных для сервера обновлений расширений Joomla вынесено в отдельный плагин. Вы можете создать свой собственный плагин и реализовать в нём нужную вам структуру данных, добавив или наоборот исключив отображаемые данные. Сервер обновлений в компоненте по-прежнему отображает информацию о списке проектов и их версиях, о конкретном проекте и его changelog.Можно выбрать схему данных сервера обновлений глобально для всего компонента, выбрать другую схему данных для категории проектов, а так же выбрать схему в каждом проекте.

Разработчикам в качестве образца можно посмотреть плагин схемы данных для Joomla в составе компонента или же плагин-образец JSON-схемы на GitHub.
Группа плагинов swjprojects. Для нужд компонента создана группа плагинов swjprojects. В частности, в этой группе находится плагин структуры данных Joomla расширений для сервера обновлений.Изменение языковых констант. Изменены некоторые языковые константы в панели администратора. Если вы делали переопределение констант - переопределите их снова.👩‍💻 Joomla 6. Внесены изменения для корректной установки и работы компонента на Joomla 6. Компонент успешно протестирован на Joomla 6-beta2.Минимальная версия Joomla - 5. Подняты минимальные системные требования: Joomla 5.0.0 и PHP 8.1.
- Страница расширения👉 Плагин-образец кастомной JSON-схемы данных для сервера обновлений на GitHub.- GitHub расширения- Документация на GitHub- Joomla Extensions Directory#joomla #расширения

Как триггерить события для плагинов на манер Joomla 5+?В Joomla 6 должны удалить метод...

Как триггерить события для плагинов на манер Joomla 5+?В Joomla 6 должны удалить метод...

👩‍💻 Как триггерить события для плагинов на манер Joomla 5+?В Joomla 6 должны удалить метод triggerEvent(), с помощью которого раньше вызывались события для плагинов. Теперь чтобы в своём коде вызвать событие для плагина и получить от него результаты нужно:- создать объект класса события- передать в него параметры

use Joomla\CMS\Event\AbstractEvent;use Joomla\CMS\Factory;use Joomla\CMS\Plugin\PluginHelper;// Грузим плагины нужных группPluginHelper::importPlugin('system');// Создаём объект события$event = AbstractEvent::create('onAfterInitUniverse', [    'subject' => $this,    'data'    => $data, // какие-то данные    'article' => $article, // ещё материал вдовесок    'product' => $product, // и товаров подвезли]);// Триггерим событиеFactory::getApplication()->getDispatcher()->dispatch(    $event->getName(), // Тут можно строку передать 'onAfterInitUniverse'    $event);// Получаем результаты// В случае с AbstractEvent это может быть не 'result',// а что-то ещё - куда сами отдадите данные.// 2-й аргумент - значение по умолчанию, // если не получены результаты$results = $event->getArgument('result', []);
Плюсы такого подхода - вам не нужно запоминать порядок аргументов и проверять их наличие. Если вы написали свой класс события, то в плагине можно получать аргументы с помощью методов $event->getArticle(), $event->getData(), $event->getProduct() и подобными - реализуете сами под свои нужды. Если такой класс события написали, то создаёте экземпляр своего класса события и укажите его явно в аргументе eventClass
use Joomla\Component\MyComponent\Administrator\Event\MyCoolEvent;$event = MyCoolEvent::create('onAfterInitUniverse', [    'subject'    => $this,    'eventClass' => MyCoolEvent::class, // ваш класс события    'data'       => $data, // какие-то данные    'article'    => $article, // ещё материал вдовесок    'product'    => $product, // и товаров подвезли]);
Ожидаемо, что класс вашего события будет расширять AbsractEvent или другие классы событий Joomla.🙁 Есть неприятный нюанс - нельзя просто так вызывать событие и ничего не передать в аргументы. Аргумент subject обязательный. Но если вы всё-таки не хотите туда ничего передавать - передайте туда пустой stdClass или объект Joomla\registry\Registry.
@joomlafeed#joomla #php #webdev

0 Пользователей и 1 Гость просматривают эту тему.
  • 10 Ответов
  • 2571 Просмотров
*

slogic

  • Осваиваюсь на форуме
  • 16
  • 0 / 0
Есть компонент. После его установки разворачиваются доп. таблицы в базе. При деинсталляции таблицы убиваются. Очевидно, обновление такого компоента через удаление/установку нового нельзя делать. Надо писать патч-компонент. Это мое видение. Может есть более толковый механизм? Например, при установке новой версии компонента в Joomla, где стоит старая версия, выполнять патчинг и обновление файлов. Был бы идеальный вариант.
*

era

  • Администратор
  • 1588
  • 392 / 5
  • В туалете лучше быть пользователем, чем админом.
В Joomla 1.5 можно добавить в XML-файл параметр method="upgrade":
Код
<?xml version="1.0" encoding="utf-8"?>
<install type="component" version="1.5.0" method="upgrade">
*

slogic

  • Осваиваюсь на форуме
  • 16
  • 0 / 0
А можно подробнее, на что влияет "upgrade"?
Здесь ( http://docs.joomla.org/Components:xml_installfile ) вообще атрибут method не упоминается.
*

era

  • Администратор
  • 1588
  • 392 / 5
  • В туалете лучше быть пользователем, чем админом.
*

smart

  • Администратор
  • 6478
  • 1318 / 15
  • Хочешь сделать хорошо — сделай!
Хм, а что, Google отменили? Странно, мне казалось имея название атрибута и его значение найти что он делает проще простого.

Если кратко - то позволяет устанавливать расширение поверх уже установленной копии. Т.е. в этом случае не будет ошибки, что расширение уже установлено, все файлы из устанавливаемого дистрибутива будут безусловно записаны поверх имеющихся. Но если в новом дистрибутиве какие-то файлы уже неактуальны - они не будут удаляться, а останутся на сервере.
*

slogic

  • Осваиваюсь на форуме
  • 16
  • 0 / 0
Посмотрел исходник фреймворка. "upgrade" влияет только на возможность перезаписи файлов. Не понятно, как влияет на исполнение <sql> блока. Как мне сделать, чтобы в upgrade режиме выполнились только определенные sql файлы? Ведь при обычной установке я предварительно удаляю существующие таблицы, а при обновлении мне надо только модфицировать структуру таблиц.
*

smart

  • Администратор
  • 6478
  • 1318 / 15
  • Хочешь сделать хорошо — сделай!
Ну я в компоненте JComments таблицы создаю только если их нет, в обработчике установщика делаю необходимые обновления структуры, а на тот случай, если вдруг пользователь удалит компонент - у меня при удалении таблицы не трогаются. Да, это оставляет их в базе на тот случай, если пользователь решил отказаться от использования данного компонента, но во всех остальных случаях - бережет время и нервы.
*

slogic

  • Осваиваюсь на форуме
  • 16
  • 0 / 0
Неприемлемый для меня вариант. В моем случае нервы бережет точное соотв. структуры таблиц. В общем, понятно как надо извращаться. А в вашем случае наверное при деинсталляции стоит спросить пользователя, оставлять таблицы или нет в файле uninstall.php. Это самый корректный вариант.
*

smart

  • Администратор
  • 6478
  • 1318 / 15
  • Хочешь сделать хорошо — сделай!
В моем случае нервы бережет точное соотв. структуры
таблиц.
ну за 3 года никаких проблем со структурой таблиц не было, а менял я ее раз 8 (и расширял, и менял индексы)...

В общем, понятно как надо извращаться. А в вашем случае наверное при деинсталляции стоит спросить пользователя, оставлять таблицы или нет в файле uninstall.php. Это самый корректный вариант.
Более правильно дать инструкции по удалению таблиц в ручном режиме, ибо я уверен, что 8 из 10 автоматом кликнут на удаление, а потом будут спрашивать на форуме как восстановить удаленное. Да и как показывает практика, компонент либо нравится сразу и надолго, либо не нравится и его удаляют в течении суток, и тогда в таблицах нет данных, а пустые таблицы есть не просят.
*

slogic

  • Осваиваюсь на форуме
  • 16
  • 0 / 0
... в обработчике установщика делаю необходимые обновления структуры
Кстати, я вначале пытался сделать изменение структуры с пом. тэга <sql>, полагая что ALTER TABLE IGNORE заткнет ошибки, в случае если поля уже есть, которые я хочу вставить. Оказывается, что IGNORE влияет на другое. И тоже пришлось перемещать код по изменению структуры в обработчик, потому что любая ошибка в <sql> прерывает установку. Жаль, что Джумловцы не поддержали атрибут у тэга "sql", например "silent=1", было бы очень элегантное решение.
*

smart

  • Администратор
  • 6478
  • 1318 / 15
  • Хочешь сделать хорошо — сделай!
Жаль, что Джумловцы не поддержали атрибут у тэга "sql", например "silent=1", было бы очень элегантное решение.
ну сделай реализацию такого функционала применимо к Joomla 1.6 и предложи разработчикам в виде патча - есть шанс, что включат. В 1.5 уже ничего нового добавлять не будут 100%...
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Автоматическое обновление модуля. Реально?

Автор mr.shusty

Ответов: 23
Просмотров: 3808
Последний ответ 25.06.2014, 00:27:24
от fsv
Требуется создание новых компонентов и модернизация существующих

Автор t-a-p

Ответов: 0
Просмотров: 1071
Последний ответ 25.05.2014, 12:56:22
от t-a-p
Обновления собственных компонентов

Автор Keanor

Ответов: 6
Просмотров: 1632
Последний ответ 09.01.2012, 15:42:17
от Keanor
Разработка компонентов для Joomla 1.5 (функциональность admin-панели)

Автор klubnichkaaa

Ответов: 13
Просмотров: 8580
Последний ответ 12.06.2011, 22:21:12
от max.mix
[how to] Как использовать группы пользователе CB в написании своих компонентов

Автор nonick

Ответов: 1
Просмотров: 2006
Последний ответ 15.07.2010, 02:33:48
от nonick