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

SoFuWa

  • Захожу иногда
  • 61
  • 0 / 0
Сделать таблицу-каталог
« : 02.09.2011, 21:33:09 »
Приветствую, такая проблема, есть сайт, там нужно оформить каталог таблицей, то есть 1 строка - это один товар, и каждая ячейка его параметр.  И я вот не могу найти в Zoo 2.4.14 место, чтоб окружить нужные данные элемента в ячейки таблицы, везде есть вывод целиком типа
Код
<?php if ($this->checkPosition('specification')) : ?>
<ul class="pos-specification">
<?php echo $this->renderPosition('specification', array('style' => 'list')); ?>
</ul>
<?php endif; ?>

Но тут выводятся сразу всё из спецефикации сразу.
« Последнее редактирование: 02.09.2011, 21:48:35 от SoFuWa »
*

SoFuWa

  • Захожу иногда
  • 61
  • 0 / 0
Re: Сделать таблицу-каталог
« Ответ #1 : 02.09.2011, 21:48:55 »
Уже не актуально сам нашёл, это в рендеренге эелементов.
« Последнее редактирование: 02.09.2011, 23:46:50 от SoFuWa »
*

SoFuWa

  • Захожу иногда
  • 61
  • 0 / 0
Re: Сделать таблицу-каталог
« Ответ #2 : 02.09.2011, 23:49:27 »
Ещё есть такой вопрос, в Zoo есть такая штука Related Products, но его нужно для каждого элемента выбирать. А можно сделать стандартными средствами так чтоб было как в интернет магазинах,  при выборе товара показывались похожии? (ну из той же категории)
*

MetaSpirit

  • Завсегдатай
  • 1370
  • 106 / 0
  • R.A.S.Lab[.org]
Re: Сделать таблицу-каталог
« Ответ #3 : 03.09.2011, 00:05:53 »
Можно автоматически завязать на теги, т.е. если не выбран похожий продукт вручную, отображается похожие по тегам. Решение - http://joomlaforum.ru/index.php/topic,159618.msg872149.html#msg872149
R.A.S.Lab[.org]: ZOOvirtue - корзина для ZOO, Яндекс.Карты для ZOO, ItemPanes - табы для ZOO, ZOOlendar - календарь для ZOO  и др.
Создание расширений для YOOtheme ZOO на заказ. Становитесь в очередь.
*

SoFuWa

  • Захожу иногда
  • 61
  • 0 / 0
Re: Сделать таблицу-каталог
« Ответ #4 : 03.09.2011, 00:32:13 »
Можно автоматически завязать на теги, т.е. если не выбран похожий продукт вручную, отображается похожие по тегам. Решение - http://joomlaforum.ru/index.php/topic,159618.msg872149.html#msg872149
Благодарю
*

SemiLex

  • Захожу иногда
  • 85
  • 5 / 0
Re: Сделать таблицу-каталог
« Ответ #5 : 03.09.2011, 05:34:22 »
а мне лично не хватает такого в продакт-каталоге Зуу:
чтобы можно было сравнить один итем с другим. завязать это дело на отдельную страницу (отдельный пункт меню в Joomla 1.7), на которой можно было бы сравнить два итема. два - достаточно. просто две колонки, отображающие шаблон "фулл" двух итемов. выбрать, с чем сравнивать, мог сам пользователь из того же фулл-вью любого итема.

имхо, популярный был бы плагинчек. готов даже купить такой плагин.
*

MetaSpirit

  • Завсегдатай
  • 1370
  • 106 / 0
  • R.A.S.Lab[.org]
Re: Сделать таблицу-каталог
« Ответ #6 : 05.09.2011, 19:51:08 »
По ходу дела понадобилось. Итак, вариант табличной верстки элементов в столбец:
Создаем файл "table.php", следующего содержания:

Код: php
<?php
/**
* @package   ZOO Component
* @file      table.php
* @version   2.4.1 September 2011
* @author    Attavus M.D.
* @copyright Copyright (C) 2011 Attavus M.D.
* @license   http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
*/

/******************************************************************

* Помещаем в папку: components/com_zoo/renderer/element/ или media/zoo/applications/{application}/templates/{template}/renderer/element/

*******************************************************************/

// no direct access

defined('_JEXEC') or die('Restricted access');

// create label

$label = '';

if (isset($params['showlabel']) && $params['showlabel']) {
$label .= '<strong>';
$label .= ($params['altlabel'])? $params['altlabel'] : $element->getConfig()->get('name');
$label .= '</strong>';
}

// create class attribute

$class = 'element element-'.$element->getElementType().' '.($params['first'] ? ' first' : '').($params['last'] ? ' last' : '');

?>

<td class="<?php echo $class; ?>" style="vertical-align:top">
<div><?php echo $label; ?></div>
<div><?php echo $element->render($params); ?></div>
</td>

И помещаем данный файл в папку: components/com_zoo/renderer/element/ или media/zoo/applications/{application}/templates/{template}/renderer/element/

Далее редактируем файл - media/zoo/applications/{application}/templates/{template}/renderer/item/full.php. Обрамляем функцию рендеринга необходимой позиции
 <table><tr>... </tr></table> и ставим стиль - 'table'

 т.е. должно получится (на примере каталога продуктов):

Код: php
 <?php if ($this->checkPosition('specification')) : ?>
<div class="pos-specification">
<h3><?php echo JText::_('Specifications'); ?></h3>
<table>
  <tr>
<?php echo $this->renderPosition('specification', array('style' => 'table')); ?>
</tr>
  </table>
</div>
 <?php endif; ?>

В итоге получится вот такой вывод (каждый элемент в отдельном столбце):
R.A.S.Lab[.org]: ZOOvirtue - корзина для ZOO, Яндекс.Карты для ZOO, ItemPanes - табы для ZOO, ZOOlendar - календарь для ZOO  и др.
Создание расширений для YOOtheme ZOO на заказ. Становитесь в очередь.
*

Daser

  • Осваиваюсь на форуме
  • 19
  • 0 / 0
Re: Сделать таблицу-каталог
« Ответ #7 : 19.11.2011, 17:24:55 »
В итоге получится вот такой вывод (каждый элемент в отдельном столбце):

прекрасно, подскажите, а как сделать тоже самое но построчно?
*

MetaSpirit

  • Завсегдатай
  • 1370
  • 106 / 0
  • R.A.S.Lab[.org]
Re: Сделать таблицу-каталог
« Ответ #8 : 19.11.2011, 23:46:14 »
прекрасно, подскажите, а как сделать тоже самое но построчно?
построчно - это как?
R.A.S.Lab[.org]: ZOOvirtue - корзина для ZOO, Яндекс.Карты для ZOO, ItemPanes - табы для ZOO, ZOOlendar - календарь для ZOO  и др.
Создание расширений для YOOtheme ZOO на заказ. Становитесь в очередь.
*

diks13

  • Захожу иногда
  • 257
  • 10 / 0
Re: Сделать таблицу-каталог
« Ответ #9 : 03.04.2013, 02:12:28 »
Помогите сделать такую таблицу.


если можно, то разделить ее на на 3 части
----------------------------------------------------
-                       -                       -                      -
-                       -                       -                      -
- изображение    - количество      -      2               -
-                       -  длинна           -      10 см         -
-                       -  цвет              -      синий         -
-----------------------------------------------------
« Последнее редактирование: 03.04.2013, 02:16:11 от diks13 »
*

Beer

  • Завсегдатай
  • 1103
  • 43 / 1
  • БИРУ - БИР!
Re: Сделать таблицу-каталог
« Ответ #10 : 28.06.2014, 12:50:56 »
 В спецификации, которая выводится списком, после названия поля стоит двоеточие :
 Где оно находится или откуда берется - ну никак не найду...
 Подскажите пожалуйста, кто в теме!
*

likrion

  • Давно я тут
  • 750
  • 129 / 2
Re: Сделать таблицу-каталог
« Ответ #11 : 28.06.2014, 21:58:03 »
components/com_zoo/renderer/element/list.php стр.17

Код: php
	$label .= ': </strong>';
R331474010295
*

Beer

  • Завсегдатай
  • 1103
  • 43 / 1
  • БИРУ - БИР!
Re: Сделать таблицу-каталог
« Ответ #12 : 28.06.2014, 23:24:39 »
 Спасибо! Втайне надеялся на твою помощь.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

JBZoo - Каталог для Zoo c корзиной, фильтрами, сравнением товаров и новыми элементами от JBZoo.ru

Автор sm_denis

Ответов: 929
Просмотров: 138232
Последний ответ 15.02.2019, 22:11:33
от san_san
Модуль ZOO Category - как сделать выпадающим списком?

Автор tsg

Ответов: 33
Просмотров: 12951
Последний ответ 05.02.2017, 15:41:38
от newvideo
ZOO как сделать автоматическое добавление Item в Frontpage?

Автор d91me

Ответов: 33
Просмотров: 9190
Последний ответ 29.12.2014, 11:44:46
от dmi_alex
Как сделать нумерацию элементов в zoo?

Автор M@xim

Ответов: 6
Просмотров: 1591
Последний ответ 17.02.2014, 16:26:30
от M@xim
Можно ли сделать так.чтобы новинки отображались на главной старничке?

Автор ag

Ответов: 0
Просмотров: 1115
Последний ответ 31.12.2013, 12:37:04
от ag