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

ELLE

  • Глобальный модератор
  • 4506
  • 893 / 0
Re: Кнопка купить в категории а не линк
« Ответ #30 : 03.04.2013, 13:12:46 »
Самый надежный вариант - это форма <form>
- нет ссылок
- если по какой-то причине javascript у посетителя отключен, он все равно сможет отправить товар в корзину
*

skyrec

  • Захожу иногда
  • 382
  • 10 / 0
  • Люблю я детей !!!
Re: Кнопка купить в категории а не линк
« Ответ #31 : 03.04.2013, 14:04:22 »
Продолжая разговор - Как скрыть лишние, хоть и внутренние, ссылки "Купить"
На днях попросили найти плагин для сокрытия внешних ссылок на сайте. нашел, хотя фактически он единственный с нужным мне функционалом, - NoExternalLinks. Работу плагина проверял = внешних ссылок не оставалось( роботы их не видели), хотя визуально, да и функционально они были обычными
В итоге, решил применить его функционал к ссылке "Купить" списка товаров.
слямзил скрипт:
Код: javascript
<script type="text/javascript">jQuery(document).ready(function(){jQuery('span.external-link').each(function(i, el){var data = jQuery(el).data(); jQuery(el).wrap(jQuery('<a/>').attr({'href' : data.href, 'title' : data.title, 'target' : data.target}))})})</script>

А ссылку "Купить" заменил следующим кодом:
Код: php
<span class="external-link" data-rel="nofollow" data-href="<?php print $product->buy_link?>" data-title="<?php print _JSHOP_BUY?> <?php print $product->name?>"><?php print _JSHOP_BUY?></span>

Еще неплохой плагин Marco's noFollow.
*

ViktorMah

  • Захожу иногда
  • 253
  • 30 / 0
Re: Кнопка купить в категории а не линк
« Ответ #32 : 03.04.2013, 14:22:23 »
Однако описанный выше метод имеет право на существование.
Ведь:
 Какова вероятность, что у пользователя будет отключена поддержка javascript? Такая вероятность стремится к НУЛЮ. И даже если такое случится, то пользователь сможет зайти на страницу товара и там Купить.
 Его можно применить и к остальным ссылкам, которые совсем не обязательны на странице.
например:
   Изображение товара = ссылка на страницу товара которая не имеет Анкора и находится в непосредственной близости от "Заголовка товара"
   Подробнее = ссылка на страницу товара плодящая дубли анкоров для разных ссылок(на другие товары)

Пока я не использую метод <form name = "product" method = "post" только потому, что
Цитировать
а вот в списке товаров сложнее. если используется AJAX корзина, то там как раз используется навешивание яваскриптом. если как вы говорите тоже вешать на click - возможны конфликты. а если использовать форму - то тоже не все гладко. опять таки из-за AJAX корзин и их навешивания на ссылку - в форме ее просто не будет. универсально наверное не получится уже...
« Последнее редактирование: 03.04.2013, 14:31:08 от ViktorMah »
*

ELLE

  • Глобальный модератор
  • 4506
  • 893 / 0
Re: Кнопка купить в категории а не линк
« Ответ #33 : 03.04.2013, 14:27:07 »
  Изображение товара = ссылка на страницу товара которая не имеет Анкора и находится в непосредственной близости от "Заголовка товара"
сомнительно. alt и есть по сути "анкор" для изображения
« Последнее редактирование: 03.04.2013, 15:56:29 от ELLE »
*

skyrec

  • Захожу иногда
  • 382
  • 10 / 0
  • Люблю я детей !!!
Re: Кнопка купить в категории а не линк
« Ответ #34 : 03.04.2013, 15:43:57 »

А ссылку "Купить" заменил следующим кодом:
Код: php
<span class="external-link" data-rel="nofollow" data-href="<?php print $product->buy_link?>" data-title="<?php print _JSHOP_BUY?> <?php print $product->name?>"><?php print _JSHOP_BUY?></span>


Поробовал ваш способ, кнопки заработали, только вот Seoquake все равно их видит... Можно на это не обращать внимание ?
*

ViktorMah

  • Захожу иногда
  • 253
  • 30 / 0
Re: Кнопка купить в категории а не линк
« Ответ #35 : 03.04.2013, 17:22:16 »
Я проверял через RDS бар и http://www.pr-cy.ru/analysis_content и еще LINKOSCOP 4.2
*

skyrec

  • Захожу иногда
  • 382
  • 10 / 0
  • Люблю я детей !!!
Re: Кнопка купить в категории а не линк
« Ответ #36 : 03.04.2013, 22:03:41 »
Я проверял через RDS бар и http://www.pr-cy.ru/analysis_content и еще LINKOSCOP 4.2
Да RDS не палит, ну а SeoQuake все равно видит ссылки... Кому верить ?:)
*

ViktorMah

  • Захожу иногда
  • 253
  • 30 / 0
Re: Кнопка купить в категории а не линк
« Ответ #37 : 04.04.2013, 12:01:31 »
верить РДСу и
своим глазам - если не верите коду <span class="external-link"......></span>, то отключите в браузере поддержку javascript, перезагрузите страницу и увидите, что вместо ссылок обычный текст.
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
Re: Кнопка купить в категории а не линк
« Ответ #38 : 04.04.2013, 15:40:02 »
уже говорил, еще раз скажу. поисковику абсолютно не нужна ссылка как таковая чтобы понять что это ссылка. Google обязательно проверит что же там есть такого по "<?php print $product->buy_link?>", независимо от того href это или data-href. тем более data-href="ссылка" с точки зрения машины вообще как то уж очень похоже на ссылку. вы вот например однозначно уверены, что поисковик ищет ссылки не по вхождению href=", а дальше до вторых " - ссылка? SeoQuake видимо так и ищет, поэтому и видит. в общем, если речь про конкретно распределение веса от внутренних ссылок, то я честно не знаю как будут поисковик учитывать data-href="". но то что он распознает в ней ссылку и по ней пройдет - это сто процентов. Elle права однозначно и безоговорочно. выход один - форма с action="index.php" и input hidden для определения option, task и прочего. даже если предположить что поисковик все таки учитывает адреса из форм, то по крайней мере эта ссылка ведет на главную страницу, а не куда то на непонятный и никому не нужный $product->buy_link
« Последнее редактирование: 04.04.2013, 15:44:01 от dmitry_stas »
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Как правильно сформировать ссылки в категории?

Автор art22

Ответов: 1
Просмотров: 2127
Последний ответ 05.05.2023, 16:17:22
от art22
Вывод краткого описания родительской категории

Автор Антончик

Ответов: 1
Просмотров: 2864
Последний ответ 11.08.2020, 13:57:39
от kit2m2
Вывод описания категории только на первой странице пагинации

Автор rmnk

Ответов: 10
Просмотров: 4976
Последний ответ 06.12.2018, 16:46:44
от effrit
Title главной страницы, когда производится вывод категории

Автор chehonte

Ответов: 6
Просмотров: 1291
Последний ответ 07.05.2018, 18:40:44
от chehonte
Ссылка кнопки купить в списке товаров категории

Автор orexov_m

Ответов: 5
Просмотров: 1347
Последний ответ 16.01.2017, 23:00:11
от dmitry_stas