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

Очередной вебмастер

  • Давно я тут
  • 768
  • 55 / 0
  • лысый умный дядя
Работаю с системным плагином - который переписывает view для формы редактирования материала.
Столкнулся с глюком - включаю плагин, меняется шаблон вывода формы редактирования материала, создаю материал - присваиваю категорию B - сохраняю.
Выхожу - захожу снова на редактирования - категория сбрасывается на uncategorized. При отключенном плагине - com_content при редактировании существующего материала, категорию сохраняет, не сбрасывает.
Вопрос - где хранится инфа о присвоенной материалу категории? (Сессия, база данных, JS)
Буду признателен, если опытные разработчики пояснят.
Сайты на Joomla, разработка и поддержка
----------
Помог ответ - жми плюс!
*

b2z

  • Глобальный модератор
  • 7287
  • 778 / 0
  • Разраблю понемногу
в бд естественно! в таблице #__content в поле catid записуется id выбранной категории!
Уху, именно так.

Цитировать
категория сбрасывается на uncategorized
Видимо где-то потеряли catid и при сохранении он не учитывается. По дефу ставит Uncategorized.
*

Очередной вебмастер

  • Давно я тут
  • 768
  • 55 / 0
  • лысый умный дядя
Я просто копаюсь с плагином по переписыванию вида и вот он "собака злая" ну ни в какую не сохраняет категории...
Может от того что ему уже 8 месяцев...
Господа, кто нибудь может глянуть код и сказать в чем косяк?
Вещь так то достаточно интересная...
Сайты на Joomla, разработка и поддержка
----------
Помог ответ - жми плюс!
*

b2z

  • Глобальный модератор
  • 7287
  • 778 / 0
  • Разраблю понемногу
Хмм, вроде как вывод категории есть.

Код: php
<li><?php echo $this->form->getLabel('catid'); ?>
<?php echo $this->form->getInput('catid'); ?></li>

Вообще код шаблона один в один с тем, что в оригинале. Значит при сохранении что-то не так. Надо устанавливать плагин и расследовать.

UPDATE:
Поставил плагин. Проблема не в том, что категория не сохраняется (она как раз таки сохраняется), а в том, что список категорий не подхватывает нужную (нет selected) и она всегда первая в списке. Буду копать дальше.
*

b2z

  • Глобальный модератор
  • 7287
  • 778 / 0
  • Разраблю понемногу
А не расскажете что пытаетесь сделать?
Сделать так, чтобы плагин работал как полагается  ^-^

Мое расследование дампом:

Код
echo '<pre>';
print_r($this->form);
echo '</pre>';

выявило, что в самой форме catid пустое!
Код
[catid] => 

Вот поэтому selected и не срабатывает. Но почему catid не подхватывается - вот в чем вопрос ::)
*

b2z

  • Глобальный модератор
  • 7287
  • 778 / 0
  • Разраблю понемногу
ну это логично ) но код плагина интересный ) мне больше интересно что автор пытается соорудить и для чего! может есть способ попроще!
В том то и дело, что код очень любопытный и почти работает. Автор попытался переопределить файлы шаблона в админке, а насколько нам известно такое возможно только для фронтенда.
*

Очередной вебмастер

  • Давно я тут
  • 768
  • 55 / 0
  • лысый умный дядя
В том то и дело, что код очень любопытный и почти работает. Автор попытался переопределить файлы шаблона в админке, а насколько нам известно такое возможно только для фронтенда.
Вот и я о том же. Дмитрий. очень меня тема зацепила...
Вот только не понятно для чего это )
Чтобы изменить форму редактирования материала, так как нужно мне или любому другому разработчику, БЕЗ хака системных файлов!

очень надеюсь, что Дима сможет найти причину отсутствия catid... а то я как бы новичок в PHP :(
Сайты на Joomla, разработка и поддержка
----------
Помог ответ - жми плюс!
*

b2z

  • Глобальный модератор
  • 7287
  • 778 / 0
  • Разраблю понемногу
Тем не менее решение вашей проблемы это чуть допилить модель:
Код: php
class ContentModelArticle2 extends ContentModelArticle
{
public function getItem()
{
$item = parent::getItem();
$this->setState( 'article.id', $item->id );
return $item;
}
}


и да метод onAfterInitialise лучше переделать так:
Код: php
function onAfterInitialise()
{
$input = JFactory::getApplication()->input;
/** Set criteria for the View you want to override */
if ( JFactory::getApplication()->getClientId() // если в админке вернет 1 если на сайте вернет 0 ( 1 и true синоним, как и 0 и false ( Конечно если для сравнения не использовать === ))
&& $input->get( 'option', '', 'cmd' ) == 'com_content'
&& $input->get( 'view', '', 'cmd' ) == 'article'
&& $input->get( 'layout', '', 'cmd' ) == 'edit'
) {

/** Override JRequest View and Layout - register the view (example in the layout/com_content folder) */
$input->set( 'view', 'article2' ); // устанавливаем значения через тот же JFactory::getApplication()->input класс JRequest считается устаревшим
$input->set( 'layout', 'edit2' );
JLoader::register( 'ContentViewArticle2', __DIR__ . '/com_content/views/article/ContentViewArticle2.php' );
}
}
Опередил ;) Я как раз вчера вечером раскопал, что теряется article.id :) Правда не понял, почему он теряется...

Это тоже системный плагин! И дело в принципе не в этом, а в том, что код сам по себе интересен и показывает возможности движка.

Вообщем внес изменения, чуть подправил метод getItem(), так как ругался на strict стандарты - вызов метода должен быть такой же, как у родителя.  Все работает - плагин приложил.

[вложение удалено Администратором]
*

b2z

  • Глобальный модератор
  • 7287
  • 778 / 0
  • Разраблю понемногу
ну я так.. на скорую руку.. а то как бы на часах было уже без 2 часа ночи с копейками ;D
Ну я тоже, раскопал и не стал делать - поздно было уже. Кстати, есть идеи, почему article.id теряется? Мы же вроде как не в новой статье находимся...
*

Очередной вебмастер

  • Давно я тут
  • 768
  • 55 / 0
  • лысый умный дядя
Блин ну вы и шарите :o
Спасибо, мужики, подсобили.
Дима отдельное спасибо за готовое рабочее решение. *DRINK*
Сайты на Joomla, разработка и поддержка
----------
Помог ответ - жми плюс!
*

b2z

  • Глобальный модератор
  • 7287
  • 778 / 0
  • Разраблю понемногу
Re: Категория материала - где хранится?
« Ответ #10 : 16.11.2012, 13:18:29 »
Блин ну вы и шарите :o
Спасибо, мужики, подсобили.
Дима отдельное спасибо за готовое рабочее решение. *DRINK*
Пожалуйста ;)

Я кстати нашел, почему article.id теряется. Проблема в populateState():
https://github.com/joomla/joomla-cms/blob/2.5.x/libraries/joomla/application/component/modeladmin.php#L805

$this->getName() возвращает article2, что логично - класс модели в плагине назван ContentModelArticle2.

Отсюда вывод, можно переделать плагин и использовать такой код:

Код: php
/**
 * Extend the real model.
 */
/**
 * Extend the real model.
 */
class ContentModelArticle2 extends ContentModelArticle
{
/**
* Method to get a correct name for the model. This will ensure,
* that the model state will work properly.
*
* @return  string  Model name.
*/
public function getName()
{
return 'article';
}
}

Я у себя проверил - работает  ^-^
*

Очередной вебмастер

  • Давно я тут
  • 768
  • 55 / 0
  • лысый умный дядя
Re: Категория материала - где хранится?
« Ответ #11 : 16.11.2012, 13:46:39 »
Спасибо, Дим.
Надеюсь часть этого обсуждения поможет Фей найти выход.
И кстати, если что первоначально авторство плагина принадлежит AmyStephen  http://github.com/AmyStephen/Layout-Override-Plugin
Сайты на Joomla, разработка и поддержка
----------
Помог ответ - жми плюс!
*

b2z

  • Глобальный модератор
  • 7287
  • 778 / 0
  • Разраблю понемногу
Re: Категория материала - где хранится?
« Ответ #12 : 16.11.2012, 13:53:46 »
И кстати, если что первоначально авторство плагина принадлежит AmyStephen  http://github.com/AmyStephen/Layout-Override-Plugin
Да, конечно. Её копирайт я не тер.

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

Очередной вебмастер

  • Давно я тут
  • 768
  • 55 / 0
  • лысый умный дядя
Re: Категория материала - где хранится?
« Ответ #13 : 16.11.2012, 15:00:47 »
с возможностью выбора переопределения и т.п.
ВОТ, ВОТ... Я об этом и мечтал когда его увидел.. Хотелось чтоб можно было для каждой категории например свою форму переопределять.
Сайты на Joomla, разработка и поддержка
----------
Помог ответ - жми плюс!
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться