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

passer

  • Завсегдатай
  • 1013
  • 75 / 3
Плитка на bootstrap
« : 30.12.2015, 16:02:25 »
Господа верстальщики. Кто-то делал плитку на bootstrap. Чтобы в цикле вывести:
Код: php
<div class="row">
<?php foreach($items as $item) : ?>  
<div class="col-xs-4"><?php echo $item->text; /*Разная длинна текста и получается бардак*/ ?></div>
<?php endforeach; ?>
</div>
Т.е.
Код: php
<div class="col-xs-4"><?php echo $item->text; /*Разная длинна текста и получается бардак*/ ?></div>
повторяется много-много раз и с разной длиной текста.
В чистом bootstrap блоки смещаются, появляются пропуски, пустые места и пр.
Плотную плитку кто-то делал? Поделитесь стилями.
*

fbr

  • Завсегдатай
  • 1672
  • 206 / 7
Re: Плитка на bootstrap
« Ответ #1 : 30.12.2015, 16:35:44 »
Стандартно - никак.
В UiKit это делается js-скриптом, прописываются каждому блоку абсолютные позиции

Теоретически думал на эту тему:
Решать на уровне php. Из исходного массива создать 3, по количеству колонок, и в 3 цикла набивать их вертикально.
Тогда они ровно лягут стопкой каждый в своей колонке.

Не проверял, может есть более изящный способ))
*

al-teen

  • Глобальный модератор
  • 2385
  • 224 / 10
  • im
Re: Плитка на bootstrap
« Ответ #2 : 30.12.2015, 16:44:19 »
Сетка буцсрака - полный отстой именно по этой самой причине. Нужно каждый ряд оборачивать в div.row. 960grid этим не страдает например.
Если совсем все плохо и сетку уже не заменить, то можно использовать вот эту штуку
*

Shustry

  • Moderator
  • 6434
  • 745 / 3
Re: Плитка на bootstrap
« Ответ #3 : 30.12.2015, 16:45:47 »
На UIkit сделай. Там намного проще и удобнее.
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
Re: Плитка на bootstrap
« Ответ #4 : 30.12.2015, 16:47:47 »
Я много раз пытался сделать чистую плитку на bs2 и bs3 - штатными средствами фреймворка так и не получилось, всегда допил js.
На uikit блоки не позиционируются абсолютом, им просто устанавливается фиксированный размер скриптом, встроенным во фреймворк, причем скриптом - только высота, ширина - стилями.
*

fbr

  • Завсегдатай
  • 1672
  • 206 / 7
Re: Плитка на bootstrap
« Ответ #5 : 30.12.2015, 16:53:07 »
..
На uikit блоки не позиционируются абсолютом, им просто устанавливается фиксированный размер скриптом, встроенным во фреймворк, причем скриптом - только высота, ширина - стилями.
Нет. Именно абсолютно.
Посмотрите исходный код плитки -  http://getuikit.com/docs/grid-js.html

Или может мы про разную плитку говорим?
Если речь о блоках одинаковой высоты - то да, js-ом делается просто.
*

al-teen

  • Глобальный модератор
  • 2385
  • 224 / 10
  • im
Re: Плитка на bootstrap
« Ответ #6 : 30.12.2015, 16:59:17 »
Если имеется в виду такая плитка, как на grid.js, то лучше использовать Masonry.js или прочие аналоги. И там нафиг никакой бутстрап или кит не нужен.
*

passer

  • Завсегдатай
  • 1013
  • 75 / 3
Re: Плитка на bootstrap
« Ответ #7 : 30.12.2015, 17:01:13 »
 ^-^ Оказывается не только у меня мысль появилась. Через array_chunk или js решается. Через сss нет. Но не верстальщик ни разу, поэтому и вопрос. Может туплю.
Ок. Прикручу что нибудь стороннее. Uikit или Javascript-Equal-Height-Responsive-Rows. Спасибо за наводки. Просто bootstrap уже прикручен из коробки и не хотелось заморачиваться перед праздниками.
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
Re: Плитка на bootstrap
« Ответ #8 : 30.12.2015, 17:03:48 »
Нет. Именно абсолютно.
Посмотрите исходный код плитки -  http://getuikit.com/docs/grid-js.html
Вы приводите пример динамического грида, это, имхо, немного другое. Я имел ввиду действие data-uk-grid-match
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
Re: Плитка на bootstrap
« Ответ #9 : 30.12.2015, 17:04:56 »
Ок. Прикручу что нибудь стороннее. Uikit или ...
С гридом помогу, я их много уже понаделал :)
*

passer

  • Завсегдатай
  • 1013
  • 75 / 3
Re: Плитка на bootstrap
« Ответ #10 : 30.12.2015, 17:07:53 »
 ^-^ Пасиб. Сам прикручу. Не долго.
P.S. А может array_chunk оставлю.
*

fbr

  • Завсегдатай
  • 1672
  • 206 / 7
Re: Плитка на bootstrap
« Ответ #11 : 30.12.2015, 17:35:32 »
P.S. А может array_chunk оставлю.
В принципе, я это и имел ввиду, когда говорил о php варианте
Только есть подводный камень - если важна последовательность вывода, то при адаптивной верстке, когда колонки сложатся, последовательность измениться ..
*

passer

  • Завсегдатай
  • 1013
  • 75 / 3
Re: Плитка на bootstrap
« Ответ #12 : 30.12.2015, 17:58:56 »
Ну да. Последовательность пока не важна. Будет важна отсортируем массивы. Или еще что придумаем.
*

Sven

  • Захожу иногда
  • 107
  • 6 / 5
Re: Плитка на bootstrap
« Ответ #13 : 30.12.2015, 23:48:30 »
В bootstrap4 ввели новый компонент "card". Его по разному можно компоновать, если правильно понял вот это вроде вам нужно:
http://v4-alpha.getbootstrap.com/components/card/#columns

Сам пока не вникал в принцип работы этих карточек, может там flex используется не знаю. Поддержка flex в браузерах вроде в районе 80% пока что.
*

al-teen

  • Глобальный модератор
  • 2385
  • 224 / 10
  • im
Re: Плитка на bootstrap
« Ответ #14 : 30.12.2015, 23:56:02 »
Принцип основан на display: table-cell, а другой на display: inline-block
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Bootstrap 4 карусель листает постер видео

Автор intcorp

Ответов: 4
Просмотров: 2006
Последний ответ 25.03.2018, 17:07:38
от intcorp
Вопрос по разметке Bootstrap 3

Автор Xzizz

Ответов: 3
Просмотров: 1466
Последний ответ 05.01.2017, 13:43:59
от dmitry_stas
Отключение Bootstrap

Автор Guram

Ответов: 3
Просмотров: 1184
Последний ответ 23.07.2015, 10:17:37
от darkghost
Bootstrap шрифт

Автор a.tarasenko

Ответов: 0
Просмотров: 1312
Последний ответ 12.03.2014, 01:09:38
от a.tarasenko
Bootstrap 3 и IE8 отображается как в мобилке

Автор wfedin

Ответов: 1
Просмотров: 2090
Последний ответ 09.03.2014, 22:04:59
от wfedin