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

gefestus

  • Осваиваюсь на форуме
  • 29
  • 0 / 0
Здравствуйте!

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

gefestus

  • Осваиваюсь на форуме
  • 29
  • 0 / 0
Re: не отображает заголовки страниц
« Ответ #1 : 30.05.2010, 09:17:10 »
1. Сохранить файлы шаблона в кодировке utf-8 без BOM.
2. Проверить кодировку БД.

index.php шаблона так и сохранен..
БД в utf8

воть.. _ttp://lep-decor.ru/index.php?option=com_content&view=article&id=49&Itemid=79
« Последнее редактирование: 30.05.2010, 09:22:09 от gefestus »
*

gefestus

  • Осваиваюсь на форуме
  • 29
  • 0 / 0
Re: не отображает заголовки страниц
« Ответ #2 : 30.05.2010, 10:06:12 »
О! Вот если бы ссылочку сразу дали))
Посмотрите через FireBug CSS этого блока. И посмотрите как у вас в шаблоне формируется заголовок.

Можете подсказать, что в итоге делать?...
*

gefestus

  • Осваиваюсь на форуме
  • 29
  • 0 / 0
Re: не отображает заголовки страниц
« Ответ #3 : 30.05.2010, 10:28:01 »
я так понял, что за вывод заголовка отвечает article-title-text, но как сделать человеческий вывод...

по нему в цсс:

Код
.wrapper-box .boxTitle h3, .article-title-text{ color:#dddddd; font-size:22px; line-height:24px; font-weight:normal;}


.wrapper-box .boxTitle h3{ padding:0 0 0 34px;}
.wrapper-box .boxIndent{ padding:21px 27px 35px 34px;}
*

gefestus

  • Осваиваюсь на форуме
  • 29
  • 0 / 0
Re: не отображает заголовки страниц
« Ответ #4 : 30.05.2010, 10:38:56 »
да, я обратил внимание...


в индекс пхп:

Код
             <!--content-->
             <div class="content-indent">
              <div class="box">
                    <div class="border-top png"></div>
                    <div class="border-left png">
                        <div class="border-right png">
                            <div class="xcontent png">
                                <div class="wrapper">
                                    <div id="content">
                                        <div class="clear">

он просто тянет класс из цсс и все, а как мне сделать, чтобы элемент заголовка выводился по-человечески...
*

gefestus

  • Осваиваюсь на форуме
  • 29
  • 0 / 0
Re: не отображает заголовки страниц
« Ответ #5 : 30.05.2010, 10:46:39 »
Порылся в папке шаблона... нашёл в модулях шаблона com_content, есть такое ощущение, что где-тут косяк.. (<div class="article-title-text"> во всяком случае тут)

Код
<?php // no direct access
defined('_JEXEC') or die('Restricted access');

$canEdit = ($this->user->authorize('com_content', 'edit', 'content', 'all') || $this->user->authorize('com_content', 'edit', 'content', 'own'));
?>
<?php if ($this->params->get('show_page_title', 1) && $this->params->get('page_title')!= $this->article->title) : ?>

<div class="componentheading<?php echo $this->escape($this->params->get('pageclass_sfx')); ?>"> <?php echo $this->escape($this->params->get('page_title')); ?> </div>
<?php endif; ?>
<?php if ($canEdit || $this->params->get('show_title') || $this->params->get('show_pdf_icon') || $this->params->get('show_print_icon') || $this->params->get('show_email_icon')) : ?>
<div class="article-title">
    <table class="contentpaneopen<?php echo $this->escape($this->params->get('pageclass_sfx')); ?>">
        <tr>
            <?php if ($this->params->get('show_title')) : ?>
            <td class="contentheading<?php echo $this->escape($this->params->get('pageclass_sfx')); ?>" width="100%">
                <div class="article-title-text"><?php if ($this->params->get('link_titles') && $this->article->readmore_link != '') : ?>
                <a href="<?php echo $this->article->readmore_link; ?>" class="contentpagetitle<?php echo $this->escape($this->params->get('pageclass_sfx')); ?>"> <?php echo $this->escape($this->article->title); ?></a>
                <?php else : ?>
                <?php echo $this->escape($this->article->title); ?>
                <?php endif; ?></div>
                <div class="article-indent"><?php if (($this->params->get('show_author')) && ($this->article->author != "")) : ?>
                <span class="small">
                <?php JText::printf( 'Written by', ($this->escape($this->article->created_by_alias)? $this->escape($this->article->created_by_alias) : $this->escape($this->article->author)) ); ?>
                </span>
                <?php endif; ?>
                <?php if ($this->params->get('show_create_date')) : ?>
                <div class="createdate"><?php echo JHTML::_('date', $this->article->created, JText::_('DATE_FORMAT_LC2'))?></div>
                <?php endif; ?></div>
            </td>
            <?php endif; ?>
            <?php if (($this->params->get('show_pdf_icon')) or ( $this->params->get( 'show_print_icon' )) or ($this->params->get('show_email_icon')) or ($canEdit) ): ?>
            <td width="100%"><div class="icon-indent">
                    <table>
                        <tr>
                            <?php if (!$this->print) : ?>
                            <?php if ($this->params->get('show_pdf_icon')) : ?>
                            <td align="right" width="100%" class="buttonheading"><?php echo JHTML::_('icon.pdf',  $this->article, $this->params, $this->access); ?> </td>
                            <?php endif; ?>
                            <?php if ( $this->params->get( 'show_print_icon' )) : ?>
                            <td align="right" width="100%" class="buttonheading"><?php echo JHTML::_('icon.print_popup',  $this->article, $this->params, $this->access); ?> </td>
                            <?php endif; ?>
                            <?php if ($this->params->get('show_email_icon')) : ?>
                            <td align="right" width="100%" class="buttonheading"><?php echo JHTML::_('icon.email',  $this->article, $this->params, $this->access); ?> </td>
                            <?php endif; ?>
                            <?php if ($canEdit) : ?>
                            <td align="right" width="100%" class="buttonheading"><?php echo JHTML::_('icon.edit', $this->article, $this->params, $this->access); ?> </td>
                            <?php endif; ?>
                            <?php else : ?>
                            <td align="right" width="100%" class="buttonheading"><?php echo JHTML::_('icon.print_screen',  $this->article, $this->params, $this->access); ?> </td>
                            <?php endif; ?>
                        </tr>
                    </table>
                </div></td>
            <?php endif; ?>
        </tr>
    </table>
</div>
<?php endif; ?>
<?php  if (!$this->params->get('show_intro')) :
echo $this->article->event->afterDisplayTitle;
endif; ?>
<?php echo $this->article->event->beforeDisplayContent; ?>
<div class="article-text-indent">
    <div class="clear">
        <table class="contentpaneopen<?php echo $this->escape($this->params->get('pageclass_sfx')); ?>">
            <?php if (($this->params->get('show_section') && $this->article->sectionid) || ($this->params->get('show_category') && $this->article->catid)) : ?>
            <tr>
                <td><?php if ($this->params->get('show_section') && $this->article->sectionid && isset($this->article->section)) : ?>
                    <span>
                    <?php if ($this->params->get('link_section')) : ?>
                    <?php echo '<a href="'.JRoute::_(ContentHelperRoute::getSectionRoute($this->article->sectionid)).'">'; ?>
                    <?php endif; ?>
                    <?php echo $this->escape($this->article->section); ?>
                    <?php if ($this->params->get('link_section')) : ?>
                    <?php echo '</a>'; ?>
                    <?php endif; ?>
                    <?php if ($this->params->get('show_category')) : ?>
                    <?php echo ' - '; ?>
                    <?php endif; ?>
                    </span>
                    <?php endif; ?>
                    <?php if ($this->params->get('show_category') && $this->article->catid) : ?>
                    <span>
                    <?php if ($this->params->get('link_category')) : ?>
                    <?php echo '<a href="'.JRoute::_(ContentHelperRoute::getCategoryRoute($this->article->catslug, $this->article->sectionid)).'">'; ?>
                    <?php endif; ?>
                    <?php echo $this->escape($this->article->category); ?>
                    <?php if ($this->params->get('link_category')) : ?>
                    <?php echo '</a>'; ?>
                    <?php endif; ?>
                    </span>
                    <?php endif; ?>
                </td>
            </tr>
            <?php endif; ?>
            <?php if ($this->params->get('show_url') && $this->article->urls) : ?>
            <tr>
                <td valign="top"><a href="http://<?php echo $this->article->urls ; ?>" target="_blank"> <?php echo $this->escape($this->article->urls); ?></a> </td>
            </tr>
            <?php endif; ?>
            <tr>
                <td valign="top"><?php if (isset ($this->article->toc)) : ?>
                    <?php echo $this->article->toc; ?>
                    <?php endif; ?>
                    <?php echo $this->article->text; ?> </td>
            </tr>
            <?php if ( intval($this->article->modified)!=0 && $this->params->get('show_modify_date')) : ?>
            <tr>
                <td class="modifydate"><?php echo JText::sprintf('LAST_UPDATED2', JHTML::_('date', $this->article->modified, JText::_('DATE_FORMAT_LC2'))); ?> </td>
            </tr>
            <?php endif; ?>
        </table>
    </div>
</div>
<div class="article-separator-indent"><span class="article_separator">&nbsp;</span></div>
<?php echo $this->article->event->afterDisplayContent; ?>
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Расширенные описания страниц в Joomla (микроданные, микроформаты, RDFa, schema.org)

Автор ELLE

Ответов: 151
Просмотров: 112662
Последний ответ 20.11.2021, 18:15:42
от Byzi
Решение - Редирект со страниц AMP на обычные

Автор draff

Ответов: 2
Просмотров: 1261
Последний ответ 20.11.2021, 17:03:03
от draff
Google отображает не все URL

Автор Игарь

Ответов: 3
Просмотров: 1424
Последний ответ 18.08.2020, 06:14:22
от Cedars
Принудительный переобход всего сайта, удаление всех старых страниц

Автор AzMandius

Ответов: 4
Просмотров: 1364
Последний ответ 09.02.2020, 22:23:09
от AzMandius
Есть ли в Joomla 3.9 проблема с дублями страниц?

Автор shop-user

Ответов: 13
Просмотров: 2453
Последний ответ 08.01.2019, 14:30:39
от zikkuratvk