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

platonische

  • Давно я тут
  • 523
  • 2 / 1
  • Парусные экспедиции vk.com/tc670
Скрипт для CRONa
« : 25.10.2017, 17:15:31 »
Возникла необходимость регулярно делать определенные проверки и по результатам проводить те или иные манипуляции с БД и сторонней БД.

Создал файл в компоненте в папке CRON, след. содержания:
Код
<?php
define( '_JEXEC', 1 );
define('JPATH_BASE', $_SERVER['DOCUMENT_ROOT'] );
define( 'DS', DIRECTORY_SEPARATOR );
require_once ( JPATH_BASE .DS.'includes'.DS.'defines.php' );
require_once ( JPATH_BASE .DS.'includes'.DS.'framework.php' );
$mainframe =& JFactory::getApplication('site');

// Параметры компонента
$params = & JComponentHelper::getParams('com_paymentsbrf');
$login = $params->get('merchant', '');
$pass = $params->get('password', '');
$test = $params->get('test', '');

$db = & JFactory::getDBO();
$query = $db->getQuery( true );
$query->select( '*' );
$query->from( '#__paymentsbrf_payment' );
$query->where( 'status=0' );
$query->where( 'created > DATE_ADD(NOW(), INTERVAL -1 DAY)' );
$items = $db->setQuery( $query )->loadObjectList();

$model = & JModelLegacy::getInstance( 'pay' , 'PaymentsbrfModel'); //Обращаемся к модели PAY

foreach ($items as $item) {
echo $item->id.", ".$item->account_no.", ". $item->date.", ". $item->sbrf_id.", ". $item->base_id."<br />";
$result = getOrderStatus($item->sbrf_id, $login, $pass, $test);
...
$item->status = 1;

if ($model->save($item) )
{
//Вот тут чего-то

}
...
}
...

Собстенно все работает кроме $model = & JModelLegacy::getInstance( 'pay' , 'PaymentsbrfModel'); //Обращаемся к модели PAY
Что не так?
*

NewUsers

  • Живу я здесь
  • 2310
  • 216 / 0
  • +375 (25) 627-16-99 (WhatsApp, Telegram)
Re: Скрипт для CRONa
« Ответ #1 : 25.10.2017, 17:31:51 »
Собстенно все работает кроме $model = & JModelLegacy::getInstance( 'pay' , 'PaymentsbrfModel'); //Обращаемся к модели PAY
Что не так?
Какая ошибка?
Занимаюсь создание расширений для Joomla 4.2.x | Доработка и настройка сайтов. Занимаюсь создание Интернет магазинов с нуля на собственном компоненте + оптимизация загрузки страницы (после предоставляю техподдержку).
*

platonische

  • Давно я тут
  • 523
  • 2 / 1
  • Парусные экспедиции vk.com/tc670
Re: Скрипт для CRONa
« Ответ #2 : 25.10.2017, 17:46:00 »
Какая ошибка?
функции модели не отрабатывают
$model->get('Item');
$model->save($item);
*

NewUsers

  • Живу я здесь
  • 2310
  • 216 / 0
  • +375 (25) 627-16-99 (WhatsApp, Telegram)
Re: Скрипт для CRONa
« Ответ #3 : 25.10.2017, 17:56:01 »
функции модели не отрабатывают
$model->get('Item');
$model->save($item);

модификатор доступа к функции стоит public ?
Занимаюсь создание расширений для Joomla 4.2.x | Доработка и настройка сайтов. Занимаюсь создание Интернет магазинов с нуля на собственном компоненте + оптимизация загрузки страницы (после предоставляю техподдержку).
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Re: Скрипт для CRONa
« Ответ #4 : 25.10.2017, 18:10:40 »
Код
JModelLegacy::addIncludePath('путь_к_папке_models');
$model = JModelLegacy::getInstance( 'pay' , 'PaymentsbrfModel');
И уберите ссылки "&" к классам.
Не будь паразитом, сделай что-нибудь самостоятельно!
*

platonische

  • Давно я тут
  • 523
  • 2 / 1
  • Парусные экспедиции vk.com/tc670
Re: Скрипт для CRONa
« Ответ #5 : 26.10.2017, 11:59:08 »
Спасибо! Есть продвижения. Модель подцепляется и например getItem2 работает а вот get('Item') и save($data) не работают.

В чем может быть загвостка. Возможно из-за getState или в input чего не хватает?
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Re: Скрипт для CRONa
« Ответ #6 : 26.10.2017, 15:00:04 »
get('Item') и save($data) не работают
И не должны - нет таких методов у модели, точнее есть унаследованный get(), который делает совсем не то, что вы хотели.
Может быть, уже пора уметь код читать, а не задавать такие вопросы?
Не будь паразитом, сделай что-нибудь самостоятельно!
*

platonische

  • Давно я тут
  • 523
  • 2 / 1
  • Парусные экспедиции vk.com/tc670
Re: Скрипт для CRONa
« Ответ #7 : 26.10.2017, 15:29:58 »
И не должны - нет таких методов у модели, точнее есть унаследованный get(), который делает совсем не то, что вы хотели.
Может быть, уже пора уметь код читать, а не задавать такие вопросы?
Спасибо!
Может и пора, только вот не всегда вижу. По парент поясните - не понимаю. Родительских функций нет получается в моем вызове ?
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Как заставить плагин выводить скрипт перед закрывающим тэгом body?

Автор Solvedor

Ответов: 30
Просмотров: 2906
Последний ответ 03.09.2017, 22:37:25
от Филипп Сорокин
Скрипт установки секция - scriptfile

Автор Hol1killer

Ответов: 3
Просмотров: 1688
Последний ответ 12.01.2015, 22:29:34
от SmokerMan