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

kontrast

  • Захожу иногда
  • 122
  • 2 / 0
хочу чтоб зарегистрированые юзеры могли создавать материалы
сделал линк, дал доступ на создание
но материалы создаються со статусом "неопубликован"
тогда я прописал в темплейте формы
<input type="hidden" name="jform[state]" value="1" />
<input type="hidden" name="jform[published]" value="1" />
результата неполучил
тогда доступ к изменению статуса в настройках категории куда должны создавать материалы
но при нажимании на кнопку создать всеравно материал был неопубликован

тогда я дал в настройках материалов доступ для изменения статуса
после чего материалы уже создаються опубликоваными как и хотел
но тут проблема вылезла другая
теперь для зарегистрированых людей видны материалы ДАЖЕ со статусом НЕОПУБЛИКОВАН

помогите розобраться в чем проблема и исправить либо вывод либо сохранение материала
« Последнее редактирование: 19.02.2013, 22:28:02 от kontrast »
*

kontrast

  • Захожу иногда
  • 122
  • 2 / 0
Re: Проблема с статусом материалов
« Ответ #1 : 21.02.2013, 01:57:33 »
что никто с таким несталкивался?
может кто сможет сформулировать это на англ я тогда спрошу у разработчиков Joomla
мб баг какой :)
*

kontrast

  • Захожу иногда
  • 122
  • 2 / 0
Re: Проблема с статусом материалов
« Ответ #2 : 25.02.2013, 12:36:50 »
ну помогите понять как исправить
*

arma

  • Завсегдатай
  • 1753
  • 81 / 3
Re: Проблема с статусом материалов
« Ответ #3 : 25.02.2013, 13:44:40 »
Исправить просто - поставить галочку "Publisher" в правах зарегистрированных
*

kontrast

  • Захожу иногда
  • 122
  • 2 / 0
Re: Проблема с статусом материалов
« Ответ #4 : 25.02.2013, 15:01:58 »
проблема не исчезла
либо статьи будут создаваться со статусом неопубликовано и их никто не увидит
либо (если поставить причку в настройках менеджера статей) залогиненые юзеры будут видить и неопубликованые статьи
« Последнее редактирование: 25.02.2013, 15:19:05 от kontrast »
*

kontrast

  • Захожу иногда
  • 122
  • 2 / 0
Re: Проблема с статусом материалов
« Ответ #5 : 25.02.2013, 15:35:37 »
на даный момент просто убрал вывод неопубликованых материалов из блога
дописав код
Код
	<?php foreach ($this->intro_items as $key => &$item) : ?>

<?if ($item->state == 1):?>
.....
<? endif;?>

<?php endforeach; ?>

но это дало вывод меньшего количества материалов на странице
а мне бы хотелось чтоб они убирались из масива даных
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Вывести поле изображение материала в модуле "Список материалов категории"

Автор aleksandrozz

Ответов: 12
Просмотров: 12809
Последний ответ 14.10.2022, 05:12:04
от denxio
[Решено] title материалов и категорий без пунктов меню

Автор pharaoh

Ответов: 269
Просмотров: 62047
Последний ответ 03.02.2022, 02:45:26
от globus812
Как добавить описание к пункту меню в Joomla 2.5? (Как у материалов)?

Автор nia

Ответов: 7
Просмотров: 5717
Последний ответ 29.03.2021, 12:10:26
от sivers
Проблема из chosen.php генерит js ошибку

Автор platonische

Ответов: 0
Просмотров: 1450
Последний ответ 20.05.2020, 11:11:03
от platonische
Проблема с кешем?

Автор bandanu

Ответов: 5
Просмотров: 1950
Последний ответ 29.11.2019, 00:57:10
от gartes