Новости 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 Гость просматривают эту тему.
  • 17 Ответов
  • 3544 Просмотров
*

smart

  • Администратор
  • 6478
  • 1318 / 15
  • Хочешь сделать хорошо — сделай!
Сижу переписываю JComments под 3.0 (без каких-либо там поддержек 1.0 или 1.5). Но, выкидывать из поддерживаемых версий 2.5 не желаю (нравится она мне). В большинстве своем получается без проблем написать код, одинаково работающий и в 2.5 и в 3.0. Конечно, за исключением небольшого кол-ва условных блоков - например в 2.5 нет никаких sidebar'ов, да и ordering реализован по-старинке.

И вот добрался я до табов. Используются они у меня часто. Мало того, что в 3.0 убрали всякие JPane, так они и JHtmlTabs можно сказать вообще не используют. Все табы в 3.0 реализованы прямо во view, без каких-либо хелперов. По сути к ним у меня претензий нет. Но в 2.5 они работать-то не будут. Попробовал я использовать JHtmlTabs в Joomla 3.0 - такое ощущение что стилей не хватает (может быть конечно я что-то упустил).

Посему вопрос - у кого какие есть идеи? В принципе меня целиком и полностью устраивает реализация табов в 3.0 (тем более, что мне нужны и вертикальные и горизонтальные). Нет ли у кого-нибудь костылей, чтобы запустить их под 2.5?

А если идей нет, то может кто-то подскажет как малой кровью повернуть набок JHtmlTabs? Т.е. мне нужны 2 вида закладок - сверху и слева сбоку.
*

SDKiller

  • Живу я здесь
  • 2705
  • 329 / 5
  • ...ergo sum
... Нет ли у кого-нибудь костылей, чтобы запустить их под 2.5?

version_compare(JVERSION...

 - и вперёд ;)

Объективно всё равно не достичь 100% идентичности в интерфейсе:

Спойлер
[свернуть]

Спойлер
[свернуть]


Подключать в J 2.5 бутстрап только ради табов - смысла нет.

Хотя если взять ту же акибу - Николас подключает бутстрап с некоторого времени и для 2.5
« Последнее редактирование: 11.06.2013, 23:19:54 от SDKiller »
*

smart

  • Администратор
  • 6478
  • 1318 / 15
  • Хочешь сделать хорошо — сделай!
Да, но в этом случае придется делать разные layout'ы для 2.5 и 3.0 и тем самым дублировать много кода. Я думал вдруг у кого-нибудь есть изолированное решение.

В принципе, если содержимое, которое надо расположить на табах  вынести в отдельные блоки (и вызывать их через loadTemplate), то дублирование серьезно сократится. Но в идеале-то хотелось бы чего-то универсального.
*

SDKiller

  • Живу я здесь
  • 2705
  • 329 / 5
  • ...ergo sum
Да, но в этом случае придется делать разные layout'ы для 2.5 и 3.0

Да не обязательно разные layout

Грубо говоря что-то вроде

Код
        if (version_compare(JVERSION, '3.0.0', '>=')) {
            echo '<div id="tab-'.$i.'" class="tab-pane">';
        } else {
            echo JHtml::_('tabs.panel', JText::_($tab_name), 'tab-'.$i);
        }

А можно  и через loadTemplate - соответственно только в зависимости от версии загружать каркас.
Ну и JavaScript соответственно в зависимости от версии.
*

Aleks.Denezh

  • Живу я здесь
  • 3401
  • 428 / 4
Да я бы тоже задумался о разных Layouts для разных версий либо о sub_layouts ($echo $this->loadTemplate('sub_layout') )..
но как по мне лучше думать о разных слоях для разных версий!
я бы вообще писал для разных версий отдельные компоненты, но учитывая объемы JComments может быть затратно все это поддерживать для разных типов системы!

вариант №2 это тянуть какой нить левый скрипт для организации табов в админку, тогда во всех версиях будет одинаково ) но без понятия как с бутстапом подружится!
или например организовать табы как в тройке, и притянуть бутстаповский скрипт и стили для табов в админку, тогда в двойке табы будут как в тройке ^^
« Последнее редактирование: 11.06.2013, 23:45:53 от Istaan »
*

SDKiller

  • Живу я здесь
  • 2705
  • 329 / 5
  • ...ergo sum
Поправочка - если делать разные каркасы, а содержимое табов отдельно - то загружать его не через loadTemplate()
*

smart

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

я бы вообще писал для разных версий отдельные компоненты, но учитывая объемы JComments может быть затратно все это поддерживать для разных типов системы!
я помру поддерживать несколько версий...

или например организовать табы как в тройке, и притянуть бутстаповский скрипт и стили для табов в админку, тогда в двойке табы будут как в тройке ^^
Я посмотрел как это реализовали в Akeeba - я не готов на подобный подвиг ;) Лучше уже условный блок в layout'e...

Поправочка - если делать разные каркасы, а содержимое табов отдельно - то загружать его не через loadTemplate()
почему? я вот сделал примерно так:

Спойлер
[свернуть]
*

SDKiller

  • Живу я здесь
  • 2705
  • 329 / 5
  • ...ergo sum
почему? я вот сделал примерно так:

Я не это имел в виду.

Предположим у нас а содержимое табов - в отдельных файлах и 2 layout - default25 и default30, где только каркас табов.

Тогда по loadTemplate('tab1') JView будет искать либо default25_tab1 либо default30_tab1.
А мы как раз хотели сами файлы с содержимым табов не размножать.
*

Aleks.Denezh

  • Живу я здесь
  • 3401
  • 428 / 4
я думаю уж лучше Layouts для разных версий брать будет и проще и понятнее)
хотя всетаки лучше бы на разные версии разделить! не думаю что поддержка будет сложнее, по сути модели, контроллеры и виды будут абсолютно одинаковыми! менять нужно будет только шаблоны видов!
*

smart

  • Администратор
  • 6478
  • 1318 / 15
  • Хочешь сделать хорошо — сделай!
Ну так в приведенном примере у меня в edit.php один условный блок и подключение дочерних layout'ов. А дочерние - едины для 2.5 и 3.0, это ведь уже содержимое табов. А уж иметь один edit.php или дробить его на 2, мне кажется не принципиально.

В принципе можно вообще, во второй ветке сделать loadTemplate('legacy') и уже в нем JHtmlTabs вызывать.. Но это не принципиально - все равно линейка 2.5 будет жить в сердцах людей на сайтах еще года полтора и я не скоро соберусь убирать ее поддержку из JComments.
*

Aleks.Denezh

  • Живу я здесь
  • 3401
  • 428 / 4
Ну так в приведенном примере у меня в edit.php один условный блок и подключение дочерних layout'ов. А дочерние - едины для 2.5 и 3.0. А уж иметь один edit.php или дробить его на 2, мне кажется не принципиально.
принципиально )
если будем делать разные layout для разных версий, и будем делать sub_layouts то для каждого слоя придется делать отдельные sub_layout, а если делать один edit.php и подгружать только табы через loadTemplate то будет меньше по идее и файлов и кода!
*

smart

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

а если делать один edit.php и подгружать только табы через loadTemplate то будет меньше по идее и файлов и кода!
я это и сделал в приведенном ниже примере...
*

Aleks.Denezh

  • Живу я здесь
  • 3401
  • 428 / 4
я это и сделал в приведенном ниже примере...
ну думаю это будет наиболее оптимальный вариант )
*

Aleks.Denezh

  • Живу я здесь
  • 3401
  • 428 / 4
очень хотелось бы заменить ее на что-то более приличное (тем более, что я полностью переписываю административную панель).
притянуть для j25 скрипт который реализует табы для бутстапа и стили для табов взять
*

voland

  • Легенда
  • 11026
  • 588 / 112
  • Эта строка съедает место на вашем мониторе
А по мне - не надо ничего тянуть, а ориентироваться на гайды для конкретной платформы (на негласные гайдлайны, если официальных нет).
*

smart

  • Администратор
  • 6478
  • 1318 / 15
  • Хочешь сделать хорошо — сделай!
Хм, а может быть действительно, взять из bootstrap только bootstrap-tab.js и стили для него? И подключать в 2.5... По сути-то нужно-то jQuery, bootstrap-tab.js и небольшой файл стилей. Подключать условно, и тогда и не нужно ни условных блоков, ни морочить голову с вертикальными табами.
*

Aleks.Denezh

  • Живу я здесь
  • 3401
  • 428 / 4
Хм, а может быть действительно, взять из bootstrap только bootstrap-tab.js и стили для него? И подключать в 2.5... По сути-то нужно-то jQuery, bootstrap-tab.js и небольшой файл стилей. Подключать условно, и тогда и не нужно ни условных блоков, ни морочить голову с вертикальными табами.
я бы так и сделал  ;) тем более это адмика, и тут реально не надо заморачиваться о быстродействии )))
« Последнее редактирование: 12.06.2013, 01:28:53 от Istaan »
*

smart

  • Администратор
  • 6478
  • 1318 / 15
  • Хочешь сделать хорошо — сделай!
Так, все получилось. Что я сделал:

1. Взял стили из bootstrap для табов и вынес их в bootstrap-tab.css и подключил его.
2. Взял и подключил jQuery
3. Взял объявление табов из bootstrap.js, вынес в bootstrap-tab.js и подключил его
4. Оставил разметку для табов из Joomla 3.0

p.s. Чуть почистил тему, оставив самое интересное ;)
« Последнее редактирование: 12.06.2013, 03:16:36 от smart »
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Документация по созданию модуля для Joomla 2.5 и Joomla 3.x

Автор b2z

Ответов: 1
Просмотров: 2284
Последний ответ 29.07.2015, 09:40:30
от b2z
JPluginHelper::importPlugin('content') в Joomla 1.7

Автор Dutch

Ответов: 2
Просмотров: 4750
Последний ответ 30.03.2015, 14:22:51
от twins717
Документация по созданию компонента для Joomla 2.5

Автор Sulpher

Ответов: 74
Просмотров: 57240
Последний ответ 17.11.2014, 13:43:07
от limon142
Документация по созданию плагина для Joomla 2.5 и Joomla 3.x

Автор b2z

Ответов: 8
Просмотров: 14284
Последний ответ 27.08.2014, 09:52:02
от skinny
Как составить запрос по правилам Joomla ?

Автор mainet

Ответов: 7
Просмотров: 1741
Последний ответ 03.02.2014, 22:56:05
от Aleks.Denezh