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

voron121

  • Захожу иногда
  • 220
  • 1 / 0
  • Метод тыка и мата помогает в кодинге
Доброго времени суток. Прошу помочь в решении моей задачи.
Имеется кастомный компонент объявлений. В объявлении есть опции, к примеру срок аренды. В админке срок аренды задается через список селект со значениями 1,2,3, так далее. Далее в субконтроллере вида view.html.php в цикле происходит обработка вывода этих значений и присвоение им текстовых параметров . То есть к примеру если срок аренды = 1 то ему присваиваем определенную языковую переменную из языкового файла. И далее уже в виде се красиво.

Теперь более подробно с чем я столкнулся и что я не могу понять как решить. На странице вывода объявлений  есть AJAX подгрузка объявлений. Из вьюхи в котроллер .  com_arenda/controllers/arenda.php  я передаю параметры для sql запроса на выборку объявлений. То есть сейчас в контроллере у меня и запрос на выборку из БД и предполагаемая пост обработка данных для формирования вывода их в вид. Но модель может усложняться и я хочу отделить при AJAX подгрузке контента модуль и контроллер.

Если отталкиваться от патерна MVC я должен передать из вида в контроллер параметры, далее их передать в модель, получить ответ от модели и его уже обработать и отдать в вид. Я понимаю что MVC это не 100% как надо делать но для меня сейчас это решение . Что бы не громоздить конструкцию из 100500 if else в контроллере и там же не обращаться к БД я хочу получить данные в контроллере, подгрузить метод выборки из модели в которую передам то что получил в контроллере, и уже далее в контроллере перебрать в цикле foreach то что мне вернет бд и оформить так как мне нужно.

То есть что мне нужно
: подскажите, как правильно написать конструкцию запроса обращения к методу модули из контроллера, что бы в контроллере получить результат работы БД
 
*

fsv

  • Живу я здесь
  • 2781
  • 411 / 2
Запрос на url:
'index.php?option=com_arenda&task=arenda.getData'
или на
'index.php?option=com_arenda&task=arenda.getData&format=json'

в com_arenda/controllers/arenda.php
или в
в com_arenda/controllers/arenda.json.php

Код
public function getData()
{
    JSession::checkToken() or jexit (JText::_('JINVALID_TOKEN'));
    $jinput = JFactory::getApplication()->input;
    ........

    try
    {
        $model = $this->getModel();  // или $model = $this->getModel('modelName');
        if( $model->blabla($any) )   // получить объявления из базы
        {
        // обработать и echo данные
Веб-разработка: заказ. Только новая разработка.
*

voron121

  • Захожу иногда
  • 220
  • 1 / 0
  • Метод тыка и мата помогает в кодинге
Спс, буду пробовать. :)

Можно еще вопрос? :) А вот такая ситуация : у меня в модели есть метод выборки записей

Код: php

$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query->select('*');
$query->from('#__zaim');
$query->where('`published` = 1');
$query->order('`top` DESC');
return($query);

получается он возвращает строку запроса sql в бд. И далее в view.html.php он уже перебирается. Сейчас я в моделе создал еще один метод, который возвращает объект с данными. По сути они будут идентичны. То есть выборка будет одинаковая но т.к в дальнейшем модель  будет обрастать условиями я думаю как сделать так что бы метод в моделе был один и для обычного вывода  на странице записей и для подгрузки аякса.

Если я в контроллере делаю вот так

Код: php
  			$db = JFactory::getDbo(); 
                        $model = $this->getModel();
$db->setQuery($model, $start, 1);
$list = $db->loadObjectList();

То в контроллере будет ошибка связанная с неверным запросом в БД. Причина ошибки ясна но я хотел уточнить : в целом такой подход может быть ? То есть у меня есть 1 метод в моделе для выборки записей и в контроллере я уже   обращаясь к нему же, возвращаю объект с данными и его обрабатываю ? Или е то что я написал некий БДСМ и есть методы и попроще ?
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Ваши контроллер и модель, скорее всего, являются "дочерьми" контроллера и модели API Joomla. Родительская модель в конечном счете возвращает массив объектов, просто она разбила скрипт на несколько методов для более удобного использования.
Метод, который формирует запрос, называется getListQuery(). Он передает запрос в функцию getItems(), которая, в свою очередь, делает выборку из БД.
Если в вашей модели нет getItems, это не значит, что она не может использовать тот же метод от своего родителя.
Как правило, вы пишете для своей модели свой метод getItems только в случае, когда вы хотите обрабатывать результат, полученный от родительского класса.
Не будь паразитом, сделай что-нибудь самостоятельно!
*

fsv

  • Живу я здесь
  • 2781
  • 411 / 2
я думаю как сделать так что бы метод в моделе был один и для обычного вывода  на странице записей и для подгрузки аякса.
Он и так один. Модель ничего не знает, какой будет вывод. Она просто вернет данные. Как вы их отразите, ее не волнует.

Если я в контроллере делаю вот так
не надо

То есть у меня есть 1 метод в моделе для выборки записей и в контроллере я уже   обращаясь к нему же, возвращаю объект с данными и его обрабатываю ?
Веб-разработка: заказ. Только новая разработка.
*

voron121

  • Захожу иногда
  • 220
  • 1 / 0
  • Метод тыка и мата помогает в кодинге
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Отправка файлов через ajax в модуль Joomla

Автор hemicide

Ответов: 19
Просмотров: 2107
Последний ответ 11.04.2022, 08:44:33
от sivers
Создание компонента для табеля рабочего времени

Автор sashahz

Ответов: 7
Просмотров: 775
Последний ответ 12.04.2021, 11:12:11
от sashahz
Вызов формы компонента в pop-up, при клике по ссылке из любого места

Автор SkyAn

Ответов: 1
Просмотров: 664
Последний ответ 01.03.2021, 04:08:48
от gartes
Документация по разработки компонента для Joomla 3.x

Автор Aspik

Ответов: 9
Просмотров: 3285
Последний ответ 23.01.2021, 07:55:56
от hmr
Сборка инсталятора компонента файлами из разных папок с привлечением github

Автор borro

Ответов: 1
Просмотров: 670
Последний ответ 25.12.2020, 21:21:30
от platonische