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

e1f1k

  • Захожу иногда
  • 78
  • 4 / 0
easyblog + vkontakte
« : 17.10.2011, 04:33:43 »
Появилась такая надобность интегрировать в easyblog лайки с контакта и возможность поделиться. Перерыл все что мог, Joomla 1.7, easyblog 3.x все что получилось это добавить кнопки закладок от AddThis, а надо в каждый пост воткнуть "мне нравиться" от вконтакта. Спасайте :)
*

steelcat

  • Захожу иногда
  • 118
  • 13 / 0
Re: easyblog + vkontakte
« Ответ #1 : 18.10.2011, 16:33:09 »
А в чем сложности-то? Весь Инет засыпан уроками о том, как сделать кнопку Вконташечки.

Ну вот посмотрел, есть блок фейсбука, меняешь его html-код на код контакта и все. Если конечно фейсбук-лайк не особо нужен.

Второй метод сложнее - надо создать класс для контакта по примеру фейсбука, подцепить его и вывести рядом. Первый метод проще.  ;)
« Последнее редактирование: 18.10.2011, 17:31:26 от steelcat »
*

e1f1k

  • Захожу иногда
  • 78
  • 4 / 0
Re: easyblog + vkontakte
« Ответ #2 : 19.10.2011, 15:36:12 »
Если блоками менять, получается хрень... Выходит так, что около одного поста сразу много кнопок, а у остальных - 0. )
*

steelcat

  • Захожу иногда
  • 118
  • 13 / 0
Re: easyblog + vkontakte
« Ответ #3 : 19.10.2011, 20:13:14 »
Если блоками менять, получается хрень... Выходит так, что около одного поста сразу много кнопок, а у остальных - 0. )

Не пойму о чем ты, просто кнопка фейсбука заменяется на кнопку контакта и все. На всех страницах будет одно и тоже. Менять надо в файле facebook.php html-код кнопки. А кнопки AddThis и так по-умолчанию включены были.
*

e1f1k

  • Захожу иногда
  • 78
  • 4 / 0
Re: easyblog + vkontakte
« Ответ #4 : 19.10.2011, 23:12:55 »
Да ты меня не понимаешь) У меня есть подряд несколько записей блога и у каждой надо поставить свою кнопку... Так вот если вставлять кнопку от вконтакта, их вставляется столько, сколько статей блога и все вместе сразу. Вот в чем проблема) В общем дам пару баксов на пиво за решение)
*

steelcat

  • Захожу иногда
  • 118
  • 13 / 0
Re: easyblog + vkontakte
« Ответ #5 : 19.10.2011, 23:17:04 »
Да ты меня не понимаешь) У меня есть подряд несколько записей блога и у каждой надо поставить свою кнопку... Так вот если вставлять кнопку от вконтакта, их вставляется столько, сколько статей блога и все вместе сразу. Вот в чем проблема) В общем дам пару баксов на пиво за решение)

Ну выложи скрин что-ли, как ты хочешь.
*

steelcat

  • Захожу иногда
  • 118
  • 13 / 0
Re: easyblog + vkontakte
« Ответ #6 : 19.10.2011, 23:29:12 »
Кажись понял, но тут будут траблы, надо каждой кнопке делать свое id.
http://otvety.google.ru/otvety/thread?tid=737b2234759d3d01

Вот так например:

Код
$html = '
<!-- Put this div tag to the place, where the Like block will be -->
<div id="'.$row->id.'"></div><script type="text/javascript">
VK.Widgets.Like("'.$row->id.'", {type: "mini"}, '.$row->id.');
</script>';

Но у меня лично при этом все кнопки виснут на загрузке. Вроде как пишут нельзя сделать.

Апдейт. Все работает, просто данные другого сайта вводил.  ;D

В код надо еще добавить url странички, ее описание и будет все в шоколаде. Все документации Вконтакта описано.
Завтра доведу до ума и с тебя пиво.  ;)
« Последнее редактирование: 20.10.2011, 00:30:37 от steelcat »
*

e1f1k

  • Захожу иногда
  • 78
  • 4 / 0
Re: easyblog + vkontakte
« Ответ #7 : 20.10.2011, 21:19:00 »
Вот смотри, вот тут статусы, надо чтобы вместо кнопок от AddThis были лайки фейсбука и контакта
http://вся-любовь.рф/сtаtuсi/categories/listings/statusy?limit=20
*

steelcat

  • Захожу иногда
  • 118
  • 13 / 0
Re: easyblog + vkontakte
« Ответ #8 : 21.10.2011, 11:54:09 »
Вот смотри, вот тут статусы, надо чтобы вместо кнопок от AddThis были лайки фейсбука и контакта
http://вся-любовь.рф/сtаtuсi/categories/listings/statusy?limit=20

А код в предыдущем посте для кого выложен? Он меняет фейсбук-лайк на вконтакте-лайк во всех местах, гдеон встречается.


« Последнее редактирование: 21.10.2011, 12:17:54 от steelcat »
*

e1f1k

  • Захожу иногда
  • 78
  • 4 / 0
Re: easyblog + vkontakte
« Ответ #9 : 22.10.2011, 03:03:13 »
Осталось мелочь, чтобы она при нажатии на кнопку передавала текст записи вместе с сылкой:)
*

steelcat

  • Захожу иногда
  • 118
  • 13 / 0
Re: easyblog + vkontakte
« Ответ #10 : 22.10.2011, 19:06:23 »
Здесь тоже проблем нет, в классе для фейсбука все данные уже подготовлены, у меня даже получилось фейсбук с вконтакте поставить рядом, только кривовато встали, надо CSS править. Сейчас занят, доделаю - выложу.
*

Downwhite

  • Осваиваюсь на форуме
  • 19
  • 0 / 0
Re: easyblog + vkontakte
« Ответ #11 : 14.09.2012, 15:36:44 »
после всего вышесказанного не понятно как же интегрировать сайт vkontakte с компонентом EasyBlog. Кто-то может подробно рассказать об этом?
*

hostodont

  • Осваиваюсь на форуме
  • 14
  • 2 / 0
Re: easyblog + vkontakte
« Ответ #12 : 01.01.2013, 17:59:14 »
после всего вышесказанного не понятно как же интегрировать сайт vkontakte с компонентом EasyBlog. Кто-то может подробно рассказать об этом?
Я сделал так: чтобы не убирать возможность кнопок, которые уже есть, я просто добавил контактную кнопочку под конец. Код, который получаешь на сайте http://vk.com/developers.php?oid=-1&p=Like  разбит условно на две части:
<!-- Put this script tag to the <head> of your page -->
КОД (это вставляешь в шаблоне, около </head>

вторая часть: <!-- Put this div tag to the place, where the Like block will be --> КОД, вставляешь туда, где кнопка.
В общем сами кнопки удалять мне не хотелось, мало ли, отключить, или поменять порядок захочется. по этому я просто добавил "контактную" в конец.
добавляешь вторую часть кода указанного выше, в файле helper.php строка 3407 (у меня в версии 3.6)  или этот же файл, строка 3554 для версии 3.7
Было:
{
            $html = '<div id="socialbutton" class="align' . $pos . $extraStyling . '">' . $html . '</div>';
         }

Стало:
{
            $html = '<div id="socialbutton" class="align' . $pos . $extraStyling . '">' . $html .'<div class="socialbutton-vertical alignleft">
            
            <div id="vk_like"></div>
         </div>
<script type="text/javascript">
VK.Widgets.Like("vk_like", {type: "button", verb: 1, height: 18});
</script> </div>';
         
         }

Класс зависит где у тебя кнопки будут . :)
*

petrovich_1

  • Осваиваюсь на форуме
  • 12
  • 0 / 0
Re: easyblog + vkontakte
« Ответ #13 : 17.02.2013, 21:09:11 »
Благодарю за решение) Все работает  ^-^
*

fagtr

  • Осваиваюсь на форуме
  • 47
  • 2 / 0
Re: easyblog + vkontakte
« Ответ #14 : 11.05.2014, 08:27:29 »
Тема старая, новую создавать не стал...
Проблема таже что и тут обсуждалась.

выше код
Код
{
            $html = '<div id="socialbutton" class="align' . $pos . $extraStyling . '">' . $html .'<div class="socialbutton-vertical alignleft">
            
            <div id="vk_like"></div>
         </div>
<script type="text/javascript">
VK.Widgets.Like("vk_like", {type: "button", verb: 1, height: 18});
</script> </div>';
        
}
вставляет кучу кнопок в одном месте...
подскажите пожалуйста как мне подружить easy blog и Vk.
*

Sonio

  • Захожу иногда
  • 52
  • 0 / 0
Re: easyblog + vkontakte
« Ответ #15 : 11.02.2015, 01:45:48 »
Тема старая, новую создавать не стал...
Проблема таже что и тут обсуждалась.

выше код

Код
{
            $html = '<div id="socialbutton" class="align' . $pos . $extraStyling . '">' . $html .'<div class="socialbutton-vertical alignleft">
            
            <div id="vk_like"></div>
         </div>
<script type="text/javascript">
VK.Widgets.Like("vk_like", {type: "button", verb: 1, height: 18});
</script> </div>';
        
}
вставляет кучу кнопок в одном месте...
подскажите пожалуйста как мне подружить easy blog и Vk.


тоже самое, в самом блоге новости все нормально, а вот в категории блогов в одном месте дублирует 4 раза кнопку "Мне нравится."
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Комментарии Вконтакте для Easyblog

Автор matishinets

Ответов: 0
Просмотров: 2973
Последний ответ 01.10.2019, 08:42:54
от matishinets
Микро блоги (Twitter) EasyBlog

Автор den4ikvdv

Ответов: 4
Просмотров: 4853
Последний ответ 26.07.2019, 20:40:36
от zegamind
Как настроить планировщик задач в EasyBlog?

Автор Tikhon

Ответов: 0
Просмотров: 3944
Последний ответ 01.05.2017, 23:20:33
от Tikhon
Название категории и автор при публикации в EasyBlog

Автор Sobol993

Ответов: 4
Просмотров: 5334
Последний ответ 27.03.2016, 23:49:43
от Sobol993
Отслеживатели в EasyBlog

Автор jeka odesskiy

Ответов: 2
Просмотров: 5073
Последний ответ 26.02.2016, 20:09:05
от 34kids