Новости 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 Ответов
  • 3643 Просмотров
*

Gelendrast

  • Осваиваюсь на форуме
  • 34
  • 0 / 0
Ребят,подскажите,контент выводится в таблице(можно ли сделать вывод на дивах или без знаний PHP не обойтись?) и как сделать бордер вокруг статьи,там блин один класс,что у заголовка,что у самого контента,если этому классу задать бордер,то нижний бордер заголовка наложится на верхний бордер статьи,сильно не пинайте,я новичок в этом деле  !

получается так(это если без нижнего бордера):


а нужно так:
« Последнее редактирование: 26.04.2010, 04:36:31 от Gelendrast »
*

effrit

  • Легенда
  • 10132
  • 1118 / 13
  • effrit.com
Re: как вывести контент на дивах
« Ответ #1 : 26.04.2010, 09:44:07 »
если новичок, то дивы тебе будут столь же полезны, как граната для мартышки :)
вообще, знания PHP тут особо не нужны. нужны - хтмл+css.
так то никто небе не мешает залезть в шаблон (в папке templates/имя_шаблона/index.php) и исправить вывод.
всё что от тебя требуется-не стирать вызовы чисто джумловских элементов (начинаются с <jdoc:  )
*

Gelendrast

  • Осваиваюсь на форуме
  • 34
  • 0 / 0
Re: как вывести контент на дивах
« Ответ #2 : 26.04.2010, 16:08:49 »
если новичок, то дивы тебе будут столь же полезны, как граната для мартышки :)
вообще, знания PHP тут особо не нужны. нужны - хтмл+css.
так то никто небе не мешает залезть в шаблон (в папке templates/имя_шаблона/index.php) и исправить вывод.
всё что от тебя требуется-не стирать вызовы чисто джумловских элементов (начинаются с <jdoc:  )


Код
<div id="content">
  <jdoc:include type="component" />
</div>
тут менять нечего,сам модуль контента выводится в таблицах,нельзя ли сделать его вывод в дивах,я так понял структура прописана по этому пути-components\com_content\views,т.е без знаний PHP ниче не получится?(
*

effrit

  • Легенда
  • 10132
  • 1118 / 13
  • effrit.com
Re: как вывести контент на дивах
« Ответ #3 : 26.04.2010, 16:58:53 »
вообще, мне кажется, что ты зря на дивы уповаешь.
но вот ссылка, если таки решил перелопатить вывод
http://joomlaforum.ru/index.php/topic,84140.new.html

к тому же ,для заголовка по умолчанию есть свой класс для вложенной таблицы
contentheading (если, конечно, в шаблоне нет перекрытия как по ссылке выше)
*

Gelendrast

  • Осваиваюсь на форуме
  • 34
  • 0 / 0
Re: как вывести контент на дивах
« Ответ #4 : 26.04.2010, 17:53:32 »
вообще, мне кажется, что ты зря на дивы уповаешь.
но вот ссылка, если таки решил перелопатить вывод
http://joomlaforum.ru/index.php/topic,84140.new.html
к тому же ,для заголовка по умолчанию есть свой класс для вложенной таблицы
contentheading (если, конечно, в шаблоне нет перекрытия как по ссылке выше)

хех,спасибо за ссылку,там слишком все сложно,для человека,начинающего осваивать css)не подскажите,какое есть решение,в моем случае,нужно сделать бородер вокруг каждой статьи,как на 2м скрине,в 1м посте или еще без нижнего бордера у заголовка

Код
<table class="blog" cellpadding="0" cellspacing="0">
<tbody>
<tr>
<td valign="top">
<div>
<table class="contentpaneopen">
<tbody>
<tr>
<td class="contentheading" width="100%">
</tr>
</tbody>
</table>
<table class="contentpaneopen">
<span class="article_separator">
</div>
<div>
</td>
</tr>
</tbody>
</table>

upd:
сделал так
Код
.contentpaneopen {
width:100%;
border-left: solid 1px;
border-bottom: solid 1px;
border-right: solid 1px;
border-color: #039;

}

.contentheading {
    border-top: solid 1px;

    width:100%;
font:14px "Verdana", "Tahoma", "Arial", sans-serif;
background:#f0f5fa;
color:#556564;
text-align:left;
padding:4px;
}
а вот как убрать у "заголовка нижний бордер" ума не приложу
« Последнее редактирование: 26.04.2010, 18:24:03 от Gelendrast »
*

Alldar

  • Завсегдатай
  • 1504
  • 195 / 1
Re: как вывести контент на дивах
« Ответ #5 : 26.04.2010, 18:35:27 »
Код
.contentheading {
    border-top: solid 1px;
  border-bottom: 0 !important;
    width:100%;
font:14px "Verdana", "Tahoma", "Arial", sans-serif;
background:#f0f5fa;
color:#556564;
text-align:left;
padding:4px;
}
*

Gelendrast

  • Осваиваюсь на форуме
  • 34
  • 0 / 0
Re: как вывести контент на дивах
« Ответ #6 : 26.04.2010, 18:53:24 »
Код
.contentheading {
    border-top: solid 1px;
  border-bottom: 0 !important;
    width:100%;
font:14px "Verdana", "Tahoma", "Arial", sans-serif;
background:#f0f5fa;
color:#556564;
text-align:left;
padding:4px;
}
тут как то иначе надо поступать,токо я в силу своего не незнания хз как,заголовок находится в таблице с классом таким же как у самой статьи,как быть,отказаться от бордера у каждой статьи?

зы возможно ли переименовать класс у таблицы,в которой находится заголовок или это я уже полный бред начал нести?)
*

Gelendrast

  • Осваиваюсь на форуме
  • 34
  • 0 / 0
Re: как вывести контент на дивах
« Ответ #7 : 29.04.2010, 22:28:09 »
Друзья,помогите,как обрамить каждую статью в бордер,вот как тут сделано?
« Последнее редактирование: 30.04.2010, 01:23:25 от Gelendrast »
*

Gelendrast

  • Осваиваюсь на форуме
  • 34
  • 0 / 0
Re: как вывести контент на дивах
« Ответ #8 : 30.04.2010, 01:23:03 »
Друзья,помогите,как обрамить каждую статью в бордер,вот как тут сделано?
Никто не знает?(

у меня не получается нефига,как по ссылке выше
*

Gelendrast

  • Осваиваюсь на форуме
  • 34
  • 0 / 0
Re: как вывести контент на дивах
« Ответ #9 : 30.04.2010, 02:38:05 »
В com_content добавь див, в который заключи и заголовок и саму статью и пропиши ему рамку.
Спасибо большое за ответ и наводку!
Не знаю правильно ли я сделал-в файл www\components\com_content\views\frontpage\tmpl\default_item.php добавил див,но бордер не появляется,а если сделать заливку фона этого дива,то фон меняется,помогите(

upd:кстати,токо ща заметил,заголовк,статья уже вложены в див,я ниче не добавлял в com_content(см.скрин),мб этому диву надо класс задать и с помощью него управлять бордерами в статье,токо где его найти,в каких файлах ковырять надо?

« Последнее редактирование: 30.04.2010, 02:58:42 от Gelendrast »
*

Gelendrast

  • Осваиваюсь на форуме
  • 34
  • 0 / 0
Re: как вывести контент на дивах
« Ответ #10 : 30.04.2010, 03:30:39 »
Для этого дива теперь добавь класс пропиши рамку.
дык не догоню,в каких файлах искать этот див,не подскажешь?

а если задать бордер тому див в файле(если конечно это тот див?)-www\components\com_content\views\frontpage\tmpl\default.php,я так понял,он отвечает за главную страницу,бордер не появляется,если задать фон,фон появляется
« Последнее редактирование: 30.04.2010, 03:41:28 от Gelendrast »
*

Gelendrast

  • Осваиваюсь на форуме
  • 34
  • 0 / 0
Re: как вывести контент на дивах
« Ответ #11 : 30.04.2010, 03:51:53 »
NightGuard
Спасибо тебе еще раз большое!Все получилось,а бордер не появлялся из-за того,что допустил ошибку при указании стиля бордера)

зы тему наверно можно закрывать,т.к название темы не соответствует дальнейшему обсуждению,вопрос про вывод контента блоками уже не актуален,если что новую тему создам с вопросами)
*

somick

  • Захожу иногда
  • 105
  • 8 / 0
Re: как вывести контент на дивах
« Ответ #12 : 30.04.2010, 09:25:43 »
NightGuard
Спасибо тебе еще раз большое!Все получилось,а бордер не появлялся из-за того,что допустил ошибку при указании стиля бордера)

зы тему наверно можно закрывать,т.к название темы не соответствует дальнейшему обсуждению,вопрос про вывод контента блоками уже не актуален,если что новую тему создам с вопросами)
Да, хотелось бы добавить: не обязательно править код в самом компоненте. Можно сделать так. Создай в папке шаблона еще одну папку с названием "html". Затем скопируй папку "com_content" из папки "components" в папку "html" своего шаблона, теперь ищи файлы, которые ты собираешься править в папке "/папка шаблона/html/com_content/../.../tmpl"  своего шаблона и перемещай их на один уровень выше, то есть в ту же папку, где находится папка "tmpl". Теперь можешь править.

Зачем такая морока? Все, что ты поправишь в папке "components" будет отображаться так же и при использовании других шаблонов, если же переместить изменяемый файл в папку шаблона, то изменения будут только при использовании этого шабона.

П.С. Надеюсь, понятно объяснил - по памяти пишу, без возможности уточнить детали.
« Последнее редактирование: 30.04.2010, 09:31:14 от somick »
*

Gelendrast

  • Осваиваюсь на форуме
  • 34
  • 0 / 0
Re: как вывести контент на дивах
« Ответ #13 : 30.04.2010, 09:47:23 »
теперь ищи файлы, которые ты собираешься править в папке "/папка шаблона/html/com_content/../.../tmpl"  своего шаблона и перемещай их на один уровень выше, то есть в ту же папку, где находится папка "tmpl". Теперь можешь править.
можно отсюда по подробнее?а то не совсем понял,что значит на один уровень выше
*

somick

  • Захожу иногда
  • 105
  • 8 / 0
Re: как вывести контент на дивах
« Ответ #14 : 30.04.2010, 11:53:09 »
можно отсюда по подробнее?а то не совсем понял,что значит на один уровень выше
Ну, лежал файл у тебя в папке:
 "/название_шаблона/html/xxx/yyy/zzz/tmpl/название_файла.php"
а должен оказаться в:
 "/название_шаблона/html/xxx/yyy/zzz/название_файла.php"

Я просто на помню как папка называется, где папка tmpl лежит и назвал ее условно "zzz". Может, сейчас кто-то подскажет, или я вечером дома погляжу.

Добавлено. Как и обещал.
Итак, для того, чтобы внести изменения в файл:
www\templates\название_шаблона\html\com_content\category\tmpl\blog.php
его надо перенести сюда:
www\templates\название_шаблона\html\com_content\category\blog.php
таким образом мы изменим код отображения категории. Для главной страницы этот путь будет таким:
Из
www\templates\название_шаблона\html\com_content\frontpage\tmpl\default.php
в
www\templates\название_шаблона\html\com_content\frontpage\default.php

и так далее. подробно о том какой файл вид чего определяет, как уже ниже написали, можно посмотреть по ссылке в 4 посте.
« Последнее редактирование: 30.04.2010, 13:53:42 от somick »
*

effrit

  • Легенда
  • 10132
  • 1118 / 13
  • effrit.com
Re: как вывести контент на дивах
« Ответ #15 : 30.04.2010, 11:59:58 »
вообще-то в четвёртом посте темы была ссылка на то, где и как перекрывать это в собственном шаблоне.
по ходу, никто по ней так и не сходил.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Как вывести путь до шаблона с помощью API Joomla?

Автор elche

Ответов: 13
Просмотров: 15812
Последний ответ 11.09.2018, 23:48:50
от DK-Scorp
Как вывести заголовок страницы вместе с сопутствующими товарами?

Автор praktik_man

Ответов: 0
Просмотров: 1486
Последний ответ 23.01.2014, 18:17:04
от praktik_man
Как вывести изображение категории

Автор lletol

Ответов: 11
Просмотров: 5565
Последний ответ 17.10.2012, 19:21:10
от beliyadm
Просто вывести в шаблоне файл через include

Автор pantela

Ответов: 8
Просмотров: 2654
Последний ответ 03.10.2012, 12:14:58
от pantela
Как сделать что бы контент отображался на определенных страницах во всю ширину без модулей.

Автор TsMax

Ответов: 2
Просмотров: 1639
Последний ответ 02.08.2012, 15:10:31
от TsMax