Новости Joomla

Рендер пользовательского поля внутри другого пользовательского поля. Joomla 5.3

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

<?php
$joomlaFieldContentPlugn->onContentPrepare('com_content.article', $fakeItem, $app->getParams());

Joomla постепенно переходит от простого указания аргументов для триггеров плагинов к собственным классам событий. Это позволяет не запоминать порядок передачи аргументов класса и использовать человекопонятные методы $event->getContext(), $event->getItem() и т.д. А то в одном месте в Joomla было $article, в другом - $item, в третьем ещё как-то... Порядку больше становится.

Сегодня обновил сайт клиентов до Joomla 5.3. В ней обновили контент-плагин fields и мой финт ушами с вызовом метода плагина отвалился потому, что я передавал в нём 3 аргумента, вместо одного. И для события onContentPrepare это должен быть объект класса ContentPrepareEvent. Как меняется фрагмент кода из предыдущего поста:

<?php
// мы находимся в файле макета поля

use Joomla\CMS\Event\Content\ContentPrepareEvent;
use Joomla\CMS\Factory;

$app = Factory::getApplication();
$fakeItem = new \stdClass();
// Получаем id текущего материала из объекта Input
$fakeItem->id = $app->getInput()->getInt('id');
// {field 29} - это шорт код вставки поля с id 29 - "ассортимент проекта"
// к содержимому поля конкатенируем шорт-код для обработки
$fakeItem->text = $field->value . '{field 29}';
// Получаем объект плагина
$joomlaFieldContentPlugn = $app->bootPLugin('fields', 'content');
// вызываем метод обработки напрямую
// вместо 3-х аргументов теперь указываем один
// это объект класса ContentPrepareEvent
$joomlaFieldContentPlugn->onContentPrepare(new ContentPrepareEvent('onContentPrepare', [
            'context' => 'com_content.article',
            'subject' => $fakeItem,
            'params'  => $app->getParams(),
            'page'    => 0,
        ]));
// выводим оба поля
echo $fakeItem->text;

@webtolkru 

0 Пользователей и 1 Гость просматривают эту тему.
  • 4 Ответов
  • 1829 Просмотров
*

Dimmix

  • Новичок
  • 8
  • 0 / 0
  • Осенило ! Воплотил !
Добрый день форумчане! Подскажите способ чтоб убрать дубли страниц! Если набрать в поиске Яндекса название материала, то появляется три ссылки ведущих на один и тот же материал. А ссылки эти получились из за переименовании материала т.е. было site.ru/2014/avto-s-probegom.html потом site.ru/2014/avto-bez-probega.html а сейчас site.ru/2014/avto-bez-probega-po-rf.html и проблема в том что они в выдаче яндекса.

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

voland

  • Легенда
  • 11028
  • 588 / 112
  • Эта строка съедает место на вашем мониторе
Делать 301.
Через менеджер перенаправлений в админке. (Хотя, для его работы надо вроде чтоб 404 отдавалось... Открывается что-тот же материал? Сторонний SEF есть?)
*

Dimmix

  • Новичок
  • 8
  • 0 / 0
  • Осенило ! Воплотил !
Делать 301.

А как? В этом вся проблема ... ! Читал здесь http://joomlaforum.ru/index.php?topic=223542.0 ни чего не помогает ...

Через менеджер перенаправлений в админке. (Хотя, для его работы надо вроде чтоб 404 отдавалось... Открывается что-тот же материал?

Да тот же.

Сторонний SEF есть?)

Нет! Вообще только один плагин, да и тот scroll to top 
*

voland

  • Легенда
  • 11028
  • 588 / 112
  • Эта строка съедает место на вашем мониторе
Если нет сторонних SEF - то плагин JL Nodoubles
Но что-то видимо всё таки есть, раз не 404 отдается.
*

Dimmix

  • Новичок
  • 8
  • 0 / 0
  • Осенило ! Воплотил !
Попробую поставить ! Авось поможет ...
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Как убрать дубли со слэшем с использованием мультиязычного сайта?

Автор polezniy

Ответов: 3
Просмотров: 1069
Последний ответ 14.06.2022, 21:06:42
от polezniy
Убрать дубли статьи в Joomla 3

Автор Benderalfa

Ответов: 0
Просмотров: 553
Последний ответ 13.04.2022, 18:45:36
от Benderalfa
Как корректно настроить редирект на без слеша?

Автор polezniy

Ответов: 0
Просмотров: 488
Последний ответ 28.03.2022, 15:36:38
от polezniy
Как сделать универсальный редирект в htaccess?

Автор Lemonez

Ответов: 3
Просмотров: 685
Последний ответ 16.02.2022, 00:38:09
от gartes
В материалах Joomla! 3.10.1 как убрать бейдж "Устарело"

Автор ipdj

Ответов: 1
Просмотров: 988
Последний ответ 02.09.2021, 23:41:59
от NewUsers