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

boomerang

  • Захожу иногда
  • 117
  • 4 / 1
Такой вопрос - куда попадают данные, введенные в поля на странице создания какой(го)-то ссылки, файла, материала ? (Зависит от компонента...)
Я, как пример, взял компонент weblinks - родной от Joomla. Сейчас более подробно объясню вопрос:

Переходим на главную страницу компонента Weblinks, видим что не добавлено ни одной записи... (Скрин 1)


Далее нажимаем кнопку New, чтоб создать запись(новую ссылку) и попадаем в окно с полями для ввода... (Скрин 2)


После того как мы заполним поля и нажмем кнопку Save, данные попадут (наверно xD ) в БД!
И вот мой вопрос - где прописан код, как эти данные будут записываться в БД, т.е в какой столбец, какой таблицы, какое поле ... ?

Надеюсь вопрос понятен...


« Последнее редактирование: 02.03.2013, 23:25:41 от boomerang »
*

b2z

  • Глобальный модератор
  • 7287
  • 778 / 0
  • Разраблю понемногу
Каждый компонент пишет в свою таблицу. В общем виде поток выглядит так: жмем Сохранить -> вызывается метод save контроллера -> метод save вызывает метод save модели -> метод save подключает таблицу -> таблица сохраняет данные.

Почитайте это и это.
*

boomerang

  • Захожу иногда
  • 117
  • 4 / 1
Все равно не полностью понятно...

Статьи я ваши читал (еще раньше), но многого не понял, хоть они и являются качественным переводом офф. документации Joomla по созданию компонентов... Такое чувство, что эту док-цию писали для тех разработчиков, которые уже имели опыт в создании компонентов, просто либо забыли что-то, либо перешли с ранних версий (1.0, 1.5 и т.д.), но эта док-ция точно не для новичков...

Так вот мой вопрос остается в силе...  Когда мы заполнили поля на странице создания ссылки, как и куда попадают данные?

В ваших статьях (статьях док-ции xD ) довольно понятно объяснено откуда выводятся данные! Т.е через views/helloworlds/tmpl/шаблон.php

выводятся данные, полученные из модели  models/helloworlds.php - где мы обращаемся к таблице (в БД) нашего компонента и выводим нужные столбцы. (Разумеется не без участия общего файла представления -  views/helloworlds/view.html.php )

Понятно также, когда мы создаем одиночную запись, откуда берутся поля для ввода:
(Говоря простым языком, опуская модели, виды и тд) поля берутся из файла models/forms/имя.xml

но после заполнения, куда и как сохраняются данные введенные в эти поля? это не понятно! (В модели это не прописывается вроде...) или ткните носом, что называется, плз, а то я что-то не вижу.

Спасибо!
« Последнее редактирование: 03.03.2013, 19:56:06 от boomerang »
*

b2z

  • Глобальный модератор
  • 7287
  • 778 / 0
  • Разраблю понемногу
Да, в модели не прописывается. Потому что все делается автоматом - в родительских классах. Главное создать файл таблицы и файл формы. Поток я описал выше.
*

boomerang

  • Захожу иногда
  • 117
  • 4 / 1
Цитировать
Да, в модели не прописывается. Потому что все делается автоматом - в родительских классах. Главное создать файл таблицы и файл формы. Поток я описал выше.

А про какую таблицу идет речь? =))

Да и странно, как оно так делается автоматически?! а если я поменяю поля местами (например, поле title сделаю вторым или третьим по счету), все пойдет наперекосяк тогда....
*

boomerang

  • Захожу иногда
  • 117
  • 4 / 1
Мне кажется, я наконец-то понял!

Когда мы создаем файл с полями - models/forms/файл_с_полями.xml

В св-во (или как его там) type мы указываем различный тип поля под наши нужды - это понятно, например type="list" , type="text" и тд
А вот св-во name - должно содержать название столбца из нашей таблицы в БД! Все верно я понял ?

Именно поэтому, когда, например, мы вводим что-то в поле title, результат сохраняется именно в столбец title а не в alias, id, или какой-нить любой другой столбец в нашей БД. (все так? или я что-то напутал)

Из всего того, что я смотрел, читал, изучал про разработку для Джулмы, об этом не говорится ни слова!... Такое чувство, что это само собой понятное дело! (Я в шоке)
« Последнее редактирование: 05.03.2013, 02:01:06 от boomerang »
*

b2z

  • Глобальный модератор
  • 7287
  • 778 / 0
  • Разраблю понемногу
Мне кажется, я наконец-то понял!

Когда мы создаем файл с полями - models/forms/файл_с_полями.xml

В св-во (или как его там) type мы указываем различный тип поля под наши нужды - это понятно, например type="list" , type="text" и тд
А вот св-во name - должно содержать название столбца из нашей таблицы в БД! Все верно я понял ?

Именно поэтому, когда, например, мы вводим что-то в поле title, результат сохраняется именно в столбец title а не в alias, id, или какой-нить любой другой столбец в нашей БД. (все так? или я что-то напутал)
Да, именно так. Для этого и есть XML с полями, которые превращаются в поля формы. Класс таблицы сопоставляет поля формы с таблицей.

Цитировать
Из всего того, что я смотрел, читал, изучал про разработку для Джулмы, об этом не говорится ни слова!... Такое чувство, что это само собой понятное дело! (Я в шоке)
Ну как бы понятно. Обработка форм - это же основы PHP. По крайней мере у меня не возникало вопроса, почему так происходит, когда я только начинал знакомится с механизмами Joomla.

Считаете, мне стоит упомянуть этот момент в документации?
*

boomerang

  • Захожу иногда
  • 117
  • 4 / 1
Цитировать
Ну как бы понятно. Обработка форм - это же основы PHP.

Ну если брать примитивную HTML-форму, то там это как раз не очень очевидно... Да и не все могут столкнуться столь тесно с формами изучая основы php, например Я =))

Цитировать
Считаете, мне стоит упомянуть этот момент в документации?

Считаю, что это в любом случае должно быть упомянуто! Не знаю почему, но мне показалось это настолько не очевидным, что я долгое время мучился и метался в поисках этого долб*нного куска кода, который бы обрабатывал форму и сохранял данные из полей, именно в конкретные столбцы таблицы в БД! (Сохранял данные как надо!) А по факту - все оказалось намного проще - просто нужно указать название столбца в name каждого поля...
*

b2z

  • Глобальный модератор
  • 7287
  • 778 / 0
  • Разраблю понемногу
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Компонента от j1.5 под j2.5

Автор limon142

Ответов: 4
Просмотров: 1610
Последний ответ 19.11.2014, 13:43:25
от limon142
Изменение представления по умолчанию

Автор NastyUser

Ответов: 5
Просмотров: 1521
Последний ответ 14.01.2014, 23:18:58
от b2z
Подключить свою таблицу CSS в редактор (на фор

Автор Aeliot

Ответов: 2
Просмотров: 1376
Последний ответ 11.12.2013, 18:28:13
от Aeliot
Переадресация на форму авторизации

Автор Aeliot

Ответов: 4
Просмотров: 1433
Последний ответ 07.12.2013, 14:21:55
от Aeliot
Разные методы, суть одна и таже?

Автор boomerang

Ответов: 3
Просмотров: 1536
Последний ответ 11.04.2013, 00:23:30
от Aleks.Denezh