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

npoxop

  • Осваиваюсь на форуме
  • 19
  • 1 / 0
Приветствую , никак не могу найти плагин для К2 чтобы в категории отобразить кнопочку из Вконтакте "Мне нравится" , желательно еще чтобы была такаяже фейсбушгай и твитерская .., обыскался уже везде , неужели такой нет? помогите плз
+надо чтобы отображалась кнопочка именно мне нравится а не сохранить
+надо чтобы она отображалась в виде категории к2 и в полной новости
+ желательно чтобы были вместе с ней твиттер и фэйсбук


- сам пробовал поправить неккоторые плагины , переделать хотя бы кнопку сохранить , но что то работает криво (кнопка выскакивает в 1 месте в 1 статье столько раз сколько она должна отображаться в нескольких местах во всех статьях)
заранее спасибо
« Последнее редактирование: 21.03.2011, 03:02:36 от npoxop »
*

mamay

  • Осваиваюсь на форуме
  • 17
  • 0 / 0
В настройках К2 в разделе соц.закладок вставляешь код кнопки.
*

npoxop

  • Осваиваюсь на форуме
  • 19
  • 1 / 0
Ога, и она отображается только в самом материале. А мне нужно, чтобы отображалась еще и в "отображение материала в категории" !
*

StarMag

  • Moderator
  • 228
  • 25 / 0
  • после ночи разбора РНР кода
Ога, и она отображается только в самом материале. А мне нужно, чтобы отображалась еще и в "отображение материала в категории" !
Перенести блок кода для социальных кнопок из файла шаблона материала статьи в файл шаблона категории
Ну почему никто никогда не читает справочные материалы?...
*

npoxop

  • Осваиваюсь на форуме
  • 19
  • 1 / 0
Получается так что кнопка отображается только в первой статье столько раз сколько материалов с ней выведено в категории.. >:(
*

StarMag

  • Moderator
  • 228
  • 25 / 0
  • после ночи разбора РНР кода
Получается так что кнопка отображается только в первой статье столько раз сколько материалов с ней выведено в категории.. >:(
Вам нужно кнопочку в категории получить или в материалах, которые в краткой форме выводятся в категории?
Ну почему никто никогда не читает справочные материалы?...
*

Ainur

  • Новичок
  • 4
  • 0 / 0
Вот в этом файле попробуйте вставить ваш код: \components\com_k2\templates\default\category.php
*

npoxop

  • Осваиваюсь на форуме
  • 19
  • 1 / 0
StarMag в материалах , которые в краткой форме выводятся в категории ;)
*

StarMag

  • Moderator
  • 228
  • 25 / 0
  • после ночи разбора РНР кода
StarMag в материалах , которые в краткой форме выводятся в категории ;)
Тогда нужно редактировать файл category_item.php, вставить в него код социалок(в требуемое место)
Ну почему никто никогда не читает справочные материалы?...
*

npoxop

  • Осваиваюсь на форуме
  • 19
  • 1 / 0
так и делаю...
проблема таже
*

KislyVV

  • Новичок
  • 5
  • 0 / 0
ну как у тебя получилось? я тоже с такой-же проблемкой мучаюсь
*

npoxop

  • Осваиваюсь на форуме
  • 19
  • 1 / 0
нет пока( все тихо(
*

butle

  • Новичок
  • 4
  • 0 / 0
Попробуй вот этот плагин. У меня стоит на сайте.
http://myblogpost.ru/blog/item/35-vkshare-dlya-statey-joomla-i-komponenta-k2.html
*

npoxop

  • Осваиваюсь на форуме
  • 19
  • 1 / 0
Нужно "Мне нравится" а не сохранить , у них функционал разный
*

drserg

  • Осваиваюсь на форуме
  • 38
  • 1 / 0
заходите в com_k2/templates/{Имя шаблона}/category_item.php
под этой строкой
K2HelperUtilities::setDefaultImage($this->item, 'itemlist', $this->item->params);
вписываете это
$document = &JFactory::getDocument();
$document->addScript( '/папка/папка/js/vk.js' );
$document->addScript( 'http://userapi.com/js/api/openapi.js?25' );
в папка/папка/js/ создаете файл vk.js и туда всовываете код который берете здесь
http://vkontakte.ru/developers.php?o=-1&p=Like
НО ! только ту часть которая джава скрипт!
Тоесть это:
VK.init({apiId: 2308979, onlyWidgets: true});

дальше там, где тебе надо, вставляешь


<div id="vk_like"></div>
<script type="text/javascript">
VK.Widgets.Like("vk_like", {type: "button"});
</script>

Такие манипуляции делаешь в каждом тебе нужном файле
С фейс буком почти также и с твитером тож
« Последнее редактирование: 29.04.2011, 16:29:55 от drserg »
*

maxshaman

  • Осваиваюсь на форуме
  • 35
  • 2 / 2
В настройках К2 в разделе соц.закладок вставляешь код кнопки.
добавляю код
<a target="_blank" class="mrc__plugin_uber_like_button" href="http://connect.mail.ru/share" data-mrc-config="{'cm' : '2', 'ck' : '2', 'sz' : '20', 'st' : '1', 'tp' : 'combo'}">Нравится</a>
<script src="http://cdn.connect.mail.ru/js/loader.js" type="text/javascript" charset="UTF-8"></script>
взятый со страницы http://api.mail.ru/sites/plugins/share/
и ничего не происходит... в материале никаких кнопок не появляется если ставлю Шаблон материалов категории по умолчанию все работает...
так понимаю надо в шаблоне чтото менять чтоб в нем социальные кнопки показывались
« Последнее редактирование: 28.01.2013, 20:41:03 от maxshaman »
*

Stall

  • Захожу иногда
  • 93
  • 0 / 1
Вам нужно кнопочку в категории получить или в материалах, которые в краткой форме выводятся в категории?
А куда вставить плагин соц закладок SocButtons, чтоб выводился в материалах краткой формы? при открытии самого материала решил задачу со вставкой закладок а вот с их выводом в краткой форме увы...
*

gogleon

  • Новичок
  • 9
  • 0 / 0
Дело в том что установить кнопки в материал в списке категорий (category_item.php) это не сложно, но возникает другая проблема. Кнопки появляются под каждым материалом на главной странице, но вот при попытке поделиться какой либо статьей в соц. сети с главной страницы (не переходя в саму статью) то кнопки цепляют ссылку главной страницы где все статьи а не именно той статьи которую хочется отправить.
Вот эту проблему не могу решить уже неделю, ни кто не знает как это реализовать в K2...
p.s. пробовал и вписывать в category_item.php и выводить при помощи дополнительных полей, все равно не цепляет ссылку статьи, а выводит ссылку страрницы на которой все статьи.
*

jurassik

  • Давно я тут
  • 692
  • 52 / 1
Дело в том что установить кнопки в материал в списке категорий (category_item.php) это не сложно, но возникает другая проблема. Кнопки появляются под каждым материалом на главной странице, но вот при попытке поделиться какой либо статьей в соц. сети с главной страницы (не переходя в саму статью) то кнопки цепляют ссылку главной страницы где все статьи а не именно той статьи которую хочется отправить.
Вот эту проблему не могу решить уже неделю, ни кто не знает как это реализовать в K2...
p.s. пробовал и вписывать в category_item.php и выводить при помощи дополнительных полей, все равно не цепляет ссылку статьи, а выводит ссылку страрницы на которой все статьи.
кнопки привязаны к странице на которой находятся, а не к материалу.
где-то видели по другому?
сам шучу - сам смеюсь
*

gogleon

  • Новичок
  • 9
  • 0 / 0
кнопки привязаны к странице на которой находятся, а не к материалу.
где-то видели по другому?
Вот демо шаблона на котором под каждым материалом соц. кнопки и при нажатии на них, выдает ссылку именно этого материала а не страницы в общем. http://demo.icetheme.com/it_healthcare2/
*

paternoster

  • Давно я тут
  • 506
  • 24 / 1
Там не компонент К2, а стандартный com_content
Почитайте вот это.Может быть пригодится.http://nauca.com.ua/zametki/komponent-k2-i-knopki-socialnyx-setej-socbuttons/
*

gogleon

  • Новичок
  • 9
  • 0 / 0
Там не компонент К2, а стандартный com_content
Почитайте вот это.Может быть пригодится.http://nauca.com.ua/zametki/komponent-k2-i-knopki-socialnyx-setej-socbuttons/
Да, там не К2, я привел наглядный пример того что я пытаюсь реализовать в К2. Именно чтоб соц. кнопки были не в самой статье, а выводились на главной странице сайта под статьями и при кликании на них в соц. сеть отправлялась ссылка именно этой статьи под которой они расположены, чтоб можно было делиться в соц. сети без перехода в саму статью.
А по ссылке которую посоветовали с компонентом: SocButtons - это не реализовать, потому что опять же соц. кнопки можно вывести в самой статье (item.php) что можно сделать и без компонента.
*

paternoster

  • Давно я тут
  • 506
  • 24 / 1
Стандартными средствами такого не предусмотрено.Вне зависимости от того, главная это или категория.Можно было бы попробовать поэскпериментировать.Взять скрипт Одна кнопка и разместить его в шаблоне материала.Но сразу после itemimage к примеру.И вполне возможно, что тогда у вас появится требуемая опция.
*

gogleon

  • Новичок
  • 9
  • 0 / 0
Стандартными средствами такого не предусмотрено.Вне зависимости от того, главная это или категория.Можно было бы попробовать поэскпериментировать.Взять скрипт Одна кнопка и разместить его в шаблоне материала.Но сразу после itemimage к примеру.И вполне возможно, что тогда у вас появится требуемая опция.
И такой вариант пробовал ))
Пробовал прописывать скрипт соц. кнопок в category_item.php и вместо выводимых функций, тегов там, счетчик просмотра, или выводимой картинки материала. Но в итоге все равно ссылка идет со страницы на которой выводятся все материалы. Пробовал так же выводить скрипт при помощи дополнительных полей в К2, вроде как скрипт в статье, но все равно та же история.
Вот что получается - сайт на котором тестирую: http://gogleon.com
*

gogleon

  • Новичок
  • 9
  • 0 / 0
А вот что нашел более приближенное к теме: http://blogengine.ru/help/social-buttons/
Но к сожалению это не для Joomla и K2 и я не знаю как это прикрутить в К2. Может кто подскажет?
*

rustam0007

  • Новичок
  • 1
  • 0 / 0
РЕШЕНИЕ ЕСТЬ (почти)) Столкнулся с такой же проблемой, решение нашел в компоненте JFBConnect. Оно позволяет добавлять лайк на список материалов категории К2, и лайк идет на нужную страницу а не на страницу категории. Но вот столкнулся с проблемой, никак не могу добавить кнопку ВК в этот компонент
*

jurassik

  • Давно я тут
  • 692
  • 52 / 1
Код
<div id="vk_like<?php echo $this->item->id; ?>"></div>
<script type="text/javascript">
VK.Widgets.Like("vk_like<?php echo $this->item->id; ?>", {pageTitle: '<?php echo $this->item->title; ?>'}, <?php echo $this->item->id; ?>);
</script>
это кусок код виджета вконтакте(это что надо изменить, остальное не изменяем), размещаем его в шаблоне вывода материала списка материалов категории

смотрим пример кода, что в итоге получаем:
Новость "Шашлык в СВАО" - материал в списке категории
Новость "Шашлык в СВАО" - материал через стандартный модуль К2
Новость "Шашлык в СВАО" - материал категории
везде общая кнопка для этого материала
« Последнее редактирование: 13.10.2013, 02:01:53 от jurassik »
сам шучу - сам смеюсь
*

Parashutt

  • Осваиваюсь на форуме
  • 12
  • 0 / 0
Кто нибудь нашел решение проблемы?
*

Parashutt

  • Осваиваюсь на форуме
  • 12
  • 0 / 0
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Наполняя категорию K2 копированием материалов, пропадает навигация в статьях

Автор Slava77

Ответов: 4
Просмотров: 3028
Последний ответ 24.12.2021, 22:30:56
от Slava77
Модуль или плагин для переноса материала K2 в другую категорию

Автор grizlik

Ответов: 4
Просмотров: 1080
Последний ответ 15.06.2019, 04:44:36
от grizlik
Ошибка при переходе на категорию k2

Автор Guram

Ответов: 0
Просмотров: 1222
Последний ответ 16.05.2017, 12:52:51
от Guram
Где в Joomla 3.6.2 находится кнопка «Сменить тип»?

Автор Briz1

Ответов: 2
Просмотров: 1070
Последний ответ 08.10.2016, 08:32:38
от draff
Не работает кнопка выход в модуле К2 User

Автор Igoritaly

Ответов: 1
Просмотров: 1585
Последний ответ 14.06.2016, 10:49:50
от Vipnatalia