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

Натали

  • Осваиваюсь на форуме
  • 10
  • 0 / 0
Здравствуйте!
Не могу отыскать подходящую тему...
Может быть, поскажете?

Проблема: шаблон Joomla отредактировала под себя, сменила цвета фонов, влезала в коды.
Но вот как встроенные в шаблон слайдеры сделать кликабельными - не знаю...(

В кодах не могу найти код, где прописан адрес картинок для показа, чтобы к ней адрес ссылки на другую страницу присоединить.
Сами картинки вставляла не в код, а в форму.

Скажите, пожалуйста, где можно найти куда вставить ссылку? Везде рассказывают о других ситуациях: когда скачивают дополнит.приложения к Joomla и там легко ссылка прикрепляется.

Я уже отчаялась искать. Уже думаю новый модуль слайдеров размещать в качестве расширения Joomla что ли.
Ну должен быть способ! Функция же востребованная!
*

Ilhom666

  • Завсегдатай
  • 1384
  • 184 / 0
что за шаблон то хоть?
*

Натали

  • Осваиваюсь на форуме
  • 10
  • 0 / 0
*

Ilhom666

  • Завсегдатай
  • 1384
  • 184 / 0
если имеется в виду этот шаблон (для Joomla 3.x) то в файле templates/jpeople/slideshow/slideshow.php для, к примеру,  первого слайда вместо
Код
<?php if ($slide1 != null ) : ?><li><img src="<?php echo $this->baseurl ?>/<?php echo htmlspecialchars($slide1); ?>" /><p class="caption"><?php echo ($slidedesc1); ?></p></li>
пропишите
Код
<?php if ($slide1 != null ) : ?><li><a href="https://www.hotmovies.com" target="_blank"><img src="<?php echo $this->baseurl ?>/<?php echo htmlspecialchars($slide1); ?>" /></a><p class="caption"><?php echo ($slidedesc1); ?></p></li>
Для остальных = по аналогии
*

Натали

  • Осваиваюсь на форуме
  • 10
  • 0 / 0
Спасибо большое! попробую!   ^-^
*

Натали

  • Осваиваюсь на форуме
  • 10
  • 0 / 0
ПОЛУЧИЛОСЬ!  ;) Спасибо Вам ПРЕОГРОМНЕЙШЕЕ!
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Как сделать что бы заголовки статей на сайте были в теге <h1>?

Автор MultiMatrix83

Ответов: 10
Просмотров: 2785
Последний ответ 27.04.2022, 15:56:45
от MultiMatrix83
Сделать отступ справа и слева для баннера

Автор MultiMatrix83

Ответов: 9
Просмотров: 1300
Последний ответ 19.08.2019, 16:55:43
от MultiMatrix83
Как сделать так чтобы данные о клике на кнопку переходили в Метрику?

Автор dan4ik

Ответов: 3
Просмотров: 2004
Последний ответ 30.11.2018, 09:38:33
от Geinado
Как сделать нормальные заголовки страниц (title)?

Автор alienshooter

Ответов: 42
Просмотров: 33610
Последний ответ 29.10.2018, 21:36:14
от Elena91
[Решено] Как сделать пустую главную страницу?

Автор akhalex38

Ответов: 7
Просмотров: 2373
Последний ответ 10.12.2016, 19:59:17
от Филипп Сорокин