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

mainet

  • Захожу иногда
  • 148
  • 1 / 0
Как сделать чтобы при установки модуля создавалась таблица в базе данных ? При удалении модуля удалялась. Спасибо.
*

shprota

  • Давно я тут
  • 770
  • 53 / 1
  • Тружусь, не покладая рук
К сожалению, несмотря на многочисленные обращения разработчиков, разработчики Joomla так и не включили возможность выполнять действия при установке модулей и плагинов.
Таким образом, варианта два:
1. Создавать таблицу при первом обращении к модулю
2. Создать пустой компонент, сделать ему установочные файлы, которые будут делать таблицу и ставить модуль, а потом сам компонент сносить

Возможно, есть еще способы, но мне они сейчас неизвестны.
*

danik.html

  • Живу я здесь
  • 2650
  • 353 / 4
А разве в манифест-файле нет возможности подключать install.php и uninstall.php ?
【Мегапак Virtuemart:
 • метатеги (description,keywords)
 • заголовки (title)
 • красивые алиасы (чпу) без тормозов и дублей!
*

shprota

  • Давно я тут
  • 770
  • 53 / 1
  • Тружусь, не покладая рук
А разве в манифест-файле нет возможности подключать install.php и uninstall.php ?

Только для компонента
*

danik.html

  • Живу я здесь
  • 2650
  • 353 / 4
Только для компонента
Ну вот здесь видно, что scriptfile также работает и в модуле. К сожалению документацию по scriptfile для модуля не нашел. Видимо она совпадает с аналогичной для компонента.
【Мегапак Virtuemart:
 • метатеги (description,keywords)
 • заголовки (title)
 • красивые алиасы (чпу) без тормозов и дублей!
*

shprota

  • Давно я тут
  • 770
  • 53 / 1
  • Тружусь, не покладая рук
Ну вот здесь видно, что scriptfile также работает и в модуле. К сожалению документацию по scriptfile для модуля не нашел. Видимо она совпадает с аналогичной для компонента.

О! Ура, свершилось! Я их года четыре уговаривал - с момента выхода 1.5.
Тогда беру все слова назад - делать установочный скрипт и из него таблицы и все, что угодно :)
*

mainet

  • Захожу иногда
  • 148
  • 1 / 0
Можно по подробнее, как это реализуется. Спасибо.
*

danik.html

  • Живу я здесь
  • 2650
  • 353 / 4
http://docs.joomla.org/Developing_a_Model-View-Controller_(MVC)_Component_for_Joomla!2.5_-_Part_15#Creating_the_extension_script_file
Хотя там в helloworld.xml сделана пометка, что
Код: xml
<!-- Runs on install/uninstall/update; New in 2.5 -->
<scriptfile>script.php</scriptfile>
Хотя scriptfile вроде как в 1.7 появился...
【Мегапак Virtuemart:
 • метатеги (description,keywords)
 • заголовки (title)
 • красивые алиасы (чпу) без тормозов и дублей!
*

mainet

  • Захожу иногда
  • 148
  • 1 / 0
А в Joomla 1.5 тоже можно я так поняла
http://docs.joomla.org/Creating_a_simple_module   В самом конце
Я еще в каком то расширении видела, что прям в XML таблицу создают.
*

danik.html

  • Живу я здесь
  • 2650
  • 353 / 4
А в Joomla 1.5 тоже можно я так поняла
http://docs.joomla.org/Creating_a_simple_module   В самом конце
Так ведь вам shprota писал об этом способе:
...Создавать таблицу при первом обращении к модулю ...
В XML файле можно указать sql-файлы с запросами, выполняющимися при инсталляции/деинсталляции - можно воспользоваться и этой возможностью
【Мегапак Virtuemart:
 • метатеги (description,keywords)
 • заголовки (title)
 • красивые алиасы (чпу) без тормозов и дублей!
*

mainet

  • Захожу иногда
  • 148
  • 1 / 0
Модуль сделала получился не универсальный. При публиковании дважды его. Второй раз он естественно выдает тоже самое что и в первом. Можно добавить в таблицу еще один столбец и фильтровать по нему. Например столбец group. По нему будет происходить выборка из базы данных. И следовательно при публиковании 2 или последующих раз модуля надо заносить информацию в group.
Но как в XML сделать выборку из существующих значений group? И как сделать возможность в это столбец добавлять новые значения для фильтра?
*

SDKiller

  • Живу я здесь
  • 2705
  • 329 / 5
  • ...ergo sum
Если речь идёт о повторном создании таблицы при втором обращении - то можно же использовать IF NOT EXISTS в sql запросе
*

danik.html

  • Живу я здесь
  • 2650
  • 353 / 4
И вы все это хотите от модуля? Тут похоже что требуется компонент.
【Мегапак Virtuemart:
 • метатеги (description,keywords)
 • заголовки (title)
 • красивые алиасы (чпу) без тормозов и дублей!
*

danik.html

  • Живу я здесь
  • 2650
  • 353 / 4
А в Joomla 1.5 тоже можно я так поняла
http://docs.joomla.org/Creating_a_simple_module   В самом конце
Ага. Веселый способ. И как разработчики догадались такой способ в документации опубликовать... А при деинсталляции модуля я должен лезть в phpMyAdmin и вручную подчищать таблицу за модулем?
【Мегапак Virtuemart:
 • метатеги (description,keywords)
 • заголовки (title)
 • красивые алиасы (чпу) без тормозов и дублей!
*

SDKiller

  • Живу я здесь
  • 2705
  • 329 / 5
  • ...ergo sum
И следовательно при публиковании 2 или последующих раз модуля надо заносить информацию в group.

Вообще задача поставлена слишком расплывчато.
Если объём информации для каждого нового модуля небольшой - почему бы не обойтись штатными params ?
*

mainet

  • Захожу иногда
  • 148
  • 1 / 0
Задача такая создать 3 модуля однотипных. В каждый модуль добавляется по 10 картинок с HTML кодом по вверх изображения. Решила тащить все из базы данных.
Сначала пробовала через XML, но XML слишком огромный. Как укоротить записи в нем я не знаю. Гуглила не нашла решения вообще.

Такой код в XML повторяется 10 раз + еще 100 строчек параметров различных на эффекты.
Код
<field 
name="img1"
default=""
type="media"
label=""
description="" />

<field
name="alt1"
type="text"
default=""
label=""
description=""/>

<field
name="url1"
type="text"
default=""
label=""
description=""/>
                                <field
name="html_code1"
type="text"
default=""
label=""
description=""/>
<field
name="target1"
type="list"
default="_self"
label=""
description="">
<option value="_blank">_blank</option>
<option value="_self">_self</option>
<option value="_parent">_parent</option>
<option value="_top">_top</option>
</field>


Обработка через функцию.

Код
function getSlider ($param, $tag, $quantity='10'){
   $param = array();
   for($n=1; $n<=$quantity; $n++) {
        $param[$n]=$params->get($tag.$n);
   }
}

А можно чтобы в админки вместо XML подгружался php файл ? И в нем уже тогда можно сделать AJAX добавление. И тут же можно выборку по определенному значению сделать.
« Последнее редактирование: 02.06.2012, 10:38:31 от mainet »
*

SDKiller

  • Живу я здесь
  • 2705
  • 329 / 5
  • ...ergo sum
Делайте свой JFormField, в нём расписывайте свою логику админки модуля, параметры пойдут в params, а в xml-декларации у вас будет

<field name="myname" type="mytype"...
*

mainet

  • Захожу иногда
  • 148
  • 1 / 0
Делайте свой JFormField, в нём расписывайте свою логику админки модуля, параметры пойдут в params, а в xml-декларации у вас будет

<field name="myname" type="mytype"...

Как он понимает какой php файл из папки admin подгружать?
<fields name="modadmin" addfieldpath="/modules/mod_slider/admin">
*

danik.html

  • Живу я здесь
  • 2650
  • 353 / 4
Ищет файл mytype.php
Обычно под это дело выделяется папочка fields. admin - впервые вижу.
【Мегапак Virtuemart:
 • метатеги (description,keywords)
 • заголовки (title)
 • красивые алиасы (чпу) без тормозов и дублей!
*

mainet

  • Захожу иногда
  • 148
  • 1 / 0
Ищет файл mytype.php
Обычно под это дело выделяется папочка fields. admin - впервые вижу.
Спасибо. Ну я же первый раз модуль создаю таким способом. Поэтому и назвала папку по месту ее назначения :)
*

SDKiller

  • Живу я здесь
  • 2705
  • 329 / 5
  • ...ergo sum
В данном случае непринципиально - вы же addfieldpath задаёте - при таком варианте можно хоть из другого компонента или модуля позаимствовать поля.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

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

Автор b2z

Ответов: 1
Просмотров: 2284
Последний ответ 29.07.2015, 09:40:30
от b2z
Создание компонента MVC

Автор borodatych

Ответов: 36
Просмотров: 4475
Последний ответ 13.04.2015, 08:17:30
от flyingspook
Как использовать облачные хранилища при создание пакета расширений?

Автор Aspik

Ответов: 4
Просмотров: 1695
Последний ответ 12.09.2014, 16:57:59
от Aspik
Создание категорий для записей в компоненте

Автор popoff17

Ответов: 3
Просмотров: 1520
Последний ответ 03.04.2014, 21:13:18
от popoff17
Как в XML Manifest files модуля вытащить категории и далее использовать в запросе для вывода?

Автор mainet

Ответов: 6
Просмотров: 2195
Последний ответ 19.02.2014, 23:23:59
от mainet