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

code.secret

  • Захожу иногда
  • 58
  • 3 / 0
Поставил бесплатный шаблон http://nevigen.com/ru/shop/templates/shablon-dlya-joomshopping-on-div.html#description
Возник вопрос: как на div'aх реализовать вывод атрибутов таблицей, как на рисунке:

*

nevigen

  • Moderator
  • 10451
  • 863 / 25
  • http://n*****n.com
Re: Шаблон на div'aх, атрибуты таблицей
« Ответ #1 : 07.04.2013, 16:27:31 »
ищите блок jshop_prod_attributes в ДИВном шаблоне и в Дефолтном.
и копируете из  дефолтного (там таблица) в ДИВный.
Профессиональные / Бесплатные решения для JoomShopping
Не лечи бесплатно, ибо тот, кто лечится бесплатно, рано или поздно перестает ценить свое здоровье,
а тот, кто лечит бесплатно, рано или поздно перестает ценить результаты своего труда/ (с) Гиппократ?
Не ищите ответов, ищите решение !
*

code.secret

  • Захожу иногда
  • 58
  • 3 / 0
Re: Шаблон на div'aх, атрибуты таблицей
« Ответ #2 : 07.04.2013, 16:32:59 »
Я получил ответ на свой вопрос: нужно пилить и допиливать. В этой теме буду подробно писать, что я применял и что у меня получилось.
Первым делом я залез в docs/components/com_jshopping/templates/default_div/product/product_default.php, нашел строки, которые отвечают за вывод атрибутов:
Код
 <?php if (count($this->attributes)){?>
    <div class="jshop_prod_attributes">
        <div class="jshop attributes">
        <?php foreach($this->attributes as $attribut){?>
<div class="attributes_<?php print $attribut->attr_id?>">
            <label class="attributes_title">
                <span class="attributes_name"><?php print $attribut->attr_name?>:</span>
            </label>
            <span id='block_attr_sel_<?php print $attribut->attr_id?>'>
                <?php print $attribut->selects?>
            </span>
<?php if ($attribut->attr_description) {?>
<span id="attributes_<?php print $attribut->attr_id?>"></span>
<script type="text/javascript">
jQuery("#attributes_<?php print $attribut->attr_id?>").tooltip({
txt: '<span class="attributes_description"><?php print $attribut->attr_description; ?></span>'
});
</script>
<?php } ?>
        </div>
        <?php }?>
        </div>
    </div>
    <?php }?>

Меняю их на строки из стандартного табличного шаблона docs/components/com_jshopping/templates/default/product/product_default.php:
Код
<div class="jshop_prod_attributes">
        <table class="jshop">
        <?php foreach($this->attributes as $attribut){?>
        <tr>
            <td class="attributes_title">
                <span class="attributes_name"><?php print $attribut->attr_name?>:</span><span class="attributes_description"><?php print $attribut->attr_description;?></span>
            </td>
            <td>
                <span id='block_attr_sel_<?php print $attribut->attr_id?>'>
                <?php print $attribut->selects?>
                </span>
            </td>
        </tr>
        <?php }?>
        </table>
    </div>
    <?php }?>
Подскажите, как это сделать так, чтобы таблица была с видимыми полями и как увеличить размер столбцов?
*

nevigen

  • Moderator
  • 10451
  • 863 / 25
  • http://n*****n.com
Re: Шаблон на div'aх, атрибуты таблицей
« Ответ #3 : 07.04.2013, 16:38:26 »
ширина столбцов задается либо прямо в коде (не кашерно) либо через стили, так называемые классы.
посмотрите в коде. найдите класс. пропишите ему в CSS стиль.

а что значит с видимыми... вообще не понятно
Профессиональные / Бесплатные решения для JoomShopping
Не лечи бесплатно, ибо тот, кто лечится бесплатно, рано или поздно перестает ценить свое здоровье,
а тот, кто лечит бесплатно, рано или поздно перестает ценить результаты своего труда/ (с) Гиппократ?
Не ищите ответов, ищите решение !
*

code.secret

  • Захожу иногда
  • 58
  • 3 / 0
Re: Шаблон на div'aх, атрибуты таблицей
« Ответ #4 : 07.04.2013, 16:44:13 »
С видимыми... Я хочу сделать так, чтобы у таблицы была рамочка.
*

nevigen

  • Moderator
  • 10451
  • 863 / 25
  • http://n*****n.com
Профессиональные / Бесплатные решения для JoomShopping
Не лечи бесплатно, ибо тот, кто лечится бесплатно, рано или поздно перестает ценить свое здоровье,
а тот, кто лечит бесплатно, рано или поздно перестает ценить результаты своего труда/ (с) Гиппократ?
Не ищите ответов, ищите решение !
*

code.secret

  • Захожу иногда
  • 58
  • 3 / 0
Re: Шаблон на div'aх, атрибуты таблицей
« Ответ #6 : 07.04.2013, 19:56:17 »
nevigen, все делаю по этому учебнику. очень помогает. Но почему-то не даёт эффекта атрибут таблицы (rules="all") - все равно границы ячеек не обрисовываются:

Я хочу добиться отображение такой таблицы как по дефолту в экселе-каждая ячейка в отдельном прямоугольнике.
Где я глуплю?
*

nevigen

  • Moderator
  • 10451
  • 863 / 25
  • http://n*****n.com
Re: Шаблон на div'aх, атрибуты таблицей
« Ответ #7 : 07.04.2013, 20:07:11 »
сложно сказать
и не забывайте что стили не только таблице даются но и ячейкам :)
задайте border="1"

а так смотреть надо может что то перебивает стили.. не зря же CascadStyleSheet называетсо :)
Профессиональные / Бесплатные решения для JoomShopping
Не лечи бесплатно, ибо тот, кто лечится бесплатно, рано или поздно перестает ценить свое здоровье,
а тот, кто лечит бесплатно, рано или поздно перестает ценить результаты своего труда/ (с) Гиппократ?
Не ищите ответов, ищите решение !
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Шаблон Bootstrap5 для JoomShopping5

Автор nevigen

Ответов: 14
Просмотров: 3947
Последний ответ 02.10.2024, 19:57:32
от nichik
Шаблон фильтрации товаров

Автор Prevergenec

Ответов: 1
Просмотров: 2347
Последний ответ 23.01.2023, 18:13:43
от kit2m2
Где шаблон подкатегорий

Автор leha111

Ответов: 4
Просмотров: 1037
Последний ответ 23.01.2019, 09:25:57
от nevigen
Поле количество товара, шаблон vina fashion ii

Автор Chypik

Ответов: 15
Просмотров: 1057
Последний ответ 30.11.2018, 15:48:06
от lexxbry
Шаблон плиткой, как в Win10

Автор Raz0r

Ответов: 2
Просмотров: 1142
Последний ответ 15.03.2018, 15:56:56
от Raz0r