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

TIGRA

  • Захожу иногда
  • 72
  • 0 / 0
Здравствуйте.
Я очень плохо знаю php, но все же полез в файл itemform.php и методом научного тыка поудалял все лишнее, как мне кажется. Убрал боковую панель (где метаданные), удалил алиасы, выбор избранного, опубликованного, убрал обзор картинок на сервере... Файл можно скачать отсюда, кому надо, пользуйтесь.

Но появилась проблемка - при добавлении материала с фронта, он не публикуется, а остается в неопубликованных. И единственный способ его опубликовать - из админпанели. Отсюда вопрос: как сделать, чтобы по умолчанию материал сразу публиковался на сайте?

И еще вопрос: как из формы редактирования убрать кнопки "Разрыв страницы", "Подробнее", "Toggle editor"?

Ну и совсем обнаглею, и задам такой вопрос: я создал пункт меню, для создания материала с фронта. При создании пункта меню, там только два варианта: в новом окне с навигацией, и в новом окне без навигации... Если же пользователь с фронта открывает свой материал для редактирования, то форма открывается в красивом всплывающем окне, вызванным через какой-то скрипт (извините, возможно, за неправильную формулировку, я не программист). Ну собственно вопрос: как, сделать так, чтобы и при создании материала, форма выскакивала через этот скрипт, а не в новом окне. Ну или хотя бы в новой вкладке, а не в новом окне.

Буду очень благодарен за любую помощь.
*

Makc

  • Захожу иногда
  • 55
  • 11 / 0
Re: Добавление материалов с фронта
« Ответ #1 : 19.01.2012, 15:15:32 »
Ну я бы вернул код радиобатонов про публикацию и просто дал группе пользователей права на публикацию. Т.е. они сами могут выбрать и ты сможешьпубликацию с сайта снять через фронтенд.

А из формы редактирования скорее всего можно выключив соответствующие плагины в менедже плагинов.
Всё, что пишу, проверено или работатет на J 1.7 + К 2.5.4
*

Makc

  • Захожу иногда
  • 55
  • 11 / 0
Re: Добавление материалов с фронта
« Ответ #2 : 19.01.2012, 15:31:18 »
Про форму редактирования. Для такого я использовал модуль K2 Login, там и ссылка на добавление есть нормально работающая и свои данные, но всё зависит какие пользователи должны размещать материалы.
Всё, что пишу, проверено или работатет на J 1.7 + К 2.5.4
*

TIGRA

  • Захожу иногда
  • 72
  • 0 / 0
Re: Добавление материалов с фронта
« Ответ #3 : 19.01.2012, 15:36:56 »
Про публикацию - я так и думал сделать, если другого решения никто не знает...
А вот про плагины - точно! Только я сделал себе в админпанели редактор TinyMSE 2.0, а всем остальным по умолчанию NO EDITOR.
Стало еще лучше, вообще все теги пользователям закрылись.
Но все-таки кнопки "Изображение", "Разрыв стр." и "Подробнее" остались... Как их побороть?
*

Makc

  • Захожу иногда
  • 55
  • 11 / 0
Re: Добавление материалов с фронта
« Ответ #4 : 19.01.2012, 15:43:42 »
У меня в менеджере плагинов есть такие плагины:
Кнопка - Материал
Кнопка - Изображение          
Кнопка - Разрыв страницы          
Кнопка - Подробнее

Я их просто выключил. Не помогает?
Всё, что пишу, проверено или работатет на J 1.7 + К 2.5.4
*

TIGRA

  • Захожу иногда
  • 72
  • 0 / 0
Re: Добавление материалов с фронта
« Ответ #5 : 19.01.2012, 15:53:50 »
K2 Login все решил, спасибо)
Итак, осталось только побороть кнопки "Изображение", "Разрыв стр." и "Подробнее"
При отключении соответствующих плагинов, они пропадают у всех. Но я их не отключил, а выставил права специальные права доступа. Теперь ни у кого их нет, а у админа есть - ура, то, что надо))
--
Макс, спасибо большое!
--
Последний вопрос: не очень, но важно, как сделать, чтобы при добавлении с фронта по умолчанию материал сразу публиковался на сайте? И при этом не использовать радиобатоны про публикацию (я их удалил).
*

Makc

  • Захожу иногда
  • 55
  • 11 / 0
Re: Добавление материалов с фронта
« Ответ #6 : 19.01.2012, 16:17:41 »
Попробуй для группы по умолчанию просто разрешить публикацию в Группах пользователей К2.

Если не помогло, можно ещё попробовать куда-нибудь на страницу itemform.php добавить

Код
<input type="hidden" class="inputbox" value="1" id="published1" name="published">

но права на публикацию у группы всеравно должны быть
« Последнее редактирование: 19.01.2012, 16:28:57 от Makc »
Всё, что пишу, проверено или работатет на J 1.7 + К 2.5.4
*

Makc

  • Захожу иногда
  • 55
  • 11 / 0
Re: Добавление материалов с фронта
« Ответ #7 : 19.01.2012, 22:40:37 »
Кстати, как удаляли алиасы из формы? Если поле просто удалить, то может получится, что при редактировании заголовка материала будет меняться и алиас. Это значит что ссылка на материал изменится, а в индексе поисковика будет старая. Думаю стоит проверить этот момент.
Всё, что пишу, проверено или работатет на J 1.7 + К 2.5.4
*

permstyle

  • Захожу иногда
  • 148
  • 2 / 0
Re: Добавление материалов с фронта
« Ответ #8 : 28.01.2012, 22:06:34 »
как сделать ссылку на форму ввода материала?
не нахожу это при создании пункта меню в разделе к2
*

SDKiller

  • Moderator
  • 2705
  • 329 / 5
  • ...ergo sum
Re: Добавление материалов с фронта
« Ответ #9 : 29.01.2012, 04:11:04 »
как сделать ссылку на форму ввода материала?
не нахожу это при создании пункта меню в разделе к2

Зависит от того, какую версию К2 вы используете.
*

permstyle

  • Захожу иногда
  • 148
  • 2 / 0
Re: Добавление материалов с фронта
« Ответ #10 : 29.01.2012, 08:34:22 »
Зависит от того, какую версию К2 вы используете.
K2 v2.3
*

TIGRA

  • Захожу иногда
  • 72
  • 0 / 0
Re: Добавление материалов с фронта
« Ответ #11 : 03.02.2012, 16:18:29 »
Цитировать
Кстати, как удаляли алиасы из формы? Если поле просто удалить, то может получится, что при редактировании заголовка материала будет меняться и алиас. Это значит что ссылка на материал изменится, а в индексе поисковика будет старая. Думаю стоит проверить этот момент.
Алиас меняется, ничего с этим поделать не могу. В идеале это надо как-то исправить, хотя не думаю, что пользователи будут часто изменять названия материала.
Цитировать
Попробуй для группы по умолчанию просто разрешить публикацию в Группах пользователей К2.

Если не помогло, можно ещё попробовать куда-нибудь на страницу itemform.php добавить

Код:

<input type="hidden" class="inputbox" value="1" id="published1" name="published">


но права на публикацию у группы всеравно должны быть

Это не помогло. Я добавил коду радиобатонов "hidden" и все заработало))
*

TIGRA

  • Захожу иногда
  • 72
  • 0 / 0
Re: Добавление материалов с фронта
« Ответ #12 : 03.02.2012, 16:24:54 »
Цитировать
как сделать ссылку на форму ввода материала?
не нахожу это при создании пункта меню в разделе к2
Можно опубликовать K2 Login, там должна быть.

А вот еще вопрос на засыпку.
Если в К2 выбрать, чтобы теги вырезались при вводе материала, то они вырезаются у ВСЕХ, включая и админа, а это не удобно. Никто случайно не знает, как  сделать так, чтобы вырезание тегов не распространялось на админа или какого-нибудь конкретного пользователя (группу).
*

Makc

  • Захожу иногда
  • 55
  • 11 / 0
Re: Добавление материалов с фронта
« Ответ #13 : 03.02.2012, 22:36:27 »
Поставьте JCE редактор, в нем есть настройки под группы и отдельно пользователей, для форм из админки и с фронта, очень удобно и гибко
Всё, что пишу, проверено или работатет на J 1.7 + К 2.5.4
*

Mutaborizm

  • Осваиваюсь на форуме
  • 21
  • 1 / 0
Re: Добавление материалов с фронта
« Ответ #14 : 20.02.2012, 19:29:16 »
че то я не могу найти этот itemform.php..
все перерыл..самое интересное, что в root/components и Administrator/components К2 вообще нет..
*

staticlight

  • Moderator
  • 1086
  • 65 / 0
  • Staticlight
Re: Добавление материалов с фронта
« Ответ #15 : 20.02.2012, 21:38:20 »
Лежит в /components/com_k2/templates/default
Руководитель отдела сервисного обслуживания систем безопасности.
Устали от com_content - поставьте com_k2.
TRIPLE "F" POWER: Firefox+FireShot+Firebug. Chrome + Ctrl+Shift+I
*

xard

  • Новичок
  • 9
  • 0 / 0
Re: Добавление материалов с фронта
« Ответ #16 : 25.05.2012, 19:25:19 »
Можно опубликовать K2 Login, там должна быть.

Где именно? Подскажите, пожалуйста. Не могу понять как добавить материал с главной в К2. Вроде создал группу, дал права, в настройках к2 включил с фронта публиковать, к2_логин врубил - но вот как его настроить - не пойму, чтобы ссылка на "добавить статью с главной" была.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Перенос материалов из Joomla3 + K2 в Joomla4

Автор Magnum79

Ответов: 0
Просмотров: 1472
Последний ответ 24.05.2024, 21:49:14
от Magnum79
Как добавить свой класс для страниц вывода материалов по тегу k2?

Автор Slava77

Ответов: 0
Просмотров: 4081
Последний ответ 16.02.2023, 23:29:34
от Slava77
Наполняя категорию K2 копированием материалов, пропадает навигация в статьях

Автор Slava77

Ответов: 4
Просмотров: 3026
Последний ответ 24.12.2021, 22:30:56
от Slava77
Перестала работать опция оценки материалов/рейтинг в компоненте K2

Автор Yonakano

Ответов: 4
Просмотров: 1766
Последний ответ 07.02.2021, 00:30:57
от Yonakano
Не работает мультиязычность для материалов К2

Автор Kokshetau

Ответов: 5
Просмотров: 1137
Последний ответ 21.11.2020, 23:36:12
от Kokshetau