Новости 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 

Вышел релиз Joomla 5.3.0

Вышел релиз Joomla 5.3.0

Проект Joomla с радостью объявляет о выходе Joomla 5.3 — последней минорной версии в серии Joomla 5.

Этот релиз сосредоточен на продуманных улучшениях, которые совершенствуют работу с CMS. От лучшей организации файлов и журналирования задач до расширенной обработки электронной почты и улучшенной доступности — Joomla 5.3 помогает администраторам и разработчикам работать более эффективно, сохраняя ваш сайт современным, безопасным и готовым к будущему.

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

Друзья, выручайте!
Я редактор, первый день работаю с Joomla, еще никак не сориентируюсь, но понимаю, что что-то не так.
Мне нужно было убрать 2 баннера с сайта и одновременно поставить 1 новый.

Путь мой был таков. Медиа - каталог - папка "баннеры".

В этой папке пыталась удалить старые баннеры, но они остаются.
А когда загружаю туда файл с баннером, - загрузить файл - обзор - нахожу нужный файл у себя в компьютере - на этом этапе явно не хватает какой-то кнопки типа "сохранить". Мой файл не попадает в систему.

Кто может объяснить, что происходит? И что можно сделать? Может, у меня нет каких-то прав на добавление картинок?
Объясните, пожалуйста, как для блондинки.
Заранее благодарна:)
*

chtec

  • Захожу иногда
  • 230
  • 100 / 1
Вопрос в том, как выводятся эти баннеры.
Вариант 1 - записаны в код (что вряд ли, ибо это неразумно). Посмотреть можно в index.php шаблона.
Вариант 2 - выводятся модулем баннером, что скорее всего.

Допиши к адресу страницы ?tp=1
Так ты увидишь, где в твоем шаблоне размещены позиции для модулей и как они называются. Соответственно - в любую из их можно поместить баннер.

Теперь зайди в админку сайта, там в верхнем меню выбираешь пункт "компоненты" - "banners". Там два пункта - "клиенты" и собственно "баннеры" (как-то так).
Сначала нужно создать клиента (типа фирма, чей баннер ты крутишь), потом создать сами баннеры (каждому нужно будет указать "клиента").

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

Спасибо за ответ.
Баннеры вставляются модулем.

Но когда я попыталась сейчас приписать к адресу сайта ?tp=1, получилось, что те модули, которые мне нужно убрать, остались точно в таком виде, как размещены на сайте, а остальная информация - в виде схемы.
*

chtec

  • Захожу иногда
  • 230
  • 100 / 1
Значит, они в код прописаны. Ссылку можно?
Осень тоже хорошо.

До меня их добавляли именно как модули.
cableman.ru
*

chtec

  • Захожу иногда
  • 230
  • 100 / 1
Так, во-первых, лежат эти картинки физически в папке
сайт/images/banners/
А во-вторых, это, похоже, таки не модули...
То, что у div, в котором их вывели, класс "moduletablebanner" еще ни о чем не говорит. Index.php шаблона можно посмотреть?
Осень тоже хорошо.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

как убрать/скрыть меню с главной страницы

Автор seetro

Ответов: 2
Просмотров: 2585
Последний ответ 24.03.2011, 16:29:27
от alex2011
Как убрать заголовок на главной?

Автор URARTU

Ответов: 6
Просмотров: 3292
Последний ответ 30.10.2010, 12:34:26
от URARTU
Как убрать надпись в материалах? "Написал Administrator "

Автор prostoy

Ответов: 2
Просмотров: 2594
Последний ответ 24.01.2010, 11:28:44
от prostoy
как убрать из title главной страницы слово" Главная"?

Автор vovchikku

Ответов: 2
Просмотров: 5721
Последний ответ 14.11.2009, 22:24:27
от smart
Как убрать контент с главной страницы

Автор Fotpod

Ответов: 4
Просмотров: 2859
Последний ответ 09.11.2009, 00:09:05
от smart