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

ProActOn

  • Новичок
  • 6
  • 0 / 0
  • just do it
Доброго времени суток!
может кто-то сталкивался..
есть сайт на Joomla 2.5 и есть группа подписчиков через сервис Джастклик. есть теоретическая возможность добавления подписчика в базу Джастклика посредством их API http://support.justclick.ru/index.php?/Knowledgebase/Article/View/36/5/dobvlenie-podpischik-v-gruppy-funkcija-api-servis-addleadtogroup
но вот как это конкретно сделать на Joomla...хотя бы какие файлы задействовать..
« Последнее редактирование: 12.04.2013, 10:46:26 от ProActOn »
*

ProActOn

  • Новичок
  • 6
  • 0 / 0
  • just do it
говорят в файле \components\com_users\controllers\registration.php надо делать..
но как передать в базу Джастклика именно тот имэйл, который вводит пользователь при регистрации не могу понять пока
*

01Kuzma

  • Захожу иногда
  • 171
  • 1 / 0
Добрый день!
Вопрос тоже актуален? Нашлось ли какое решение?
*

Aleks.Denezh

  • Живу я здесь
  • 3404
  • 428 / 4
говорят в файле \components\com_users\controllers\registration.php надо делать..
но как передать в базу Джастклика именно тот имэйл, который вводит пользователь при регистрации не могу понять пока
ничего в \components\com_users\controllers\registration.php  не надо делать! в таких случаях пишут плагины!
Не знаю что вам даже рассказывать если все примеры есть!
если не понимаете что там написано и как это использовать может стоит нанять программиста?
*

01Kuzma

  • Захожу иногда
  • 171
  • 1 / 0
Не было время заняться этим вопросом. Сейчас присел и сделал с помощью ChronoForms - проще пареной репы.
Всё по ссылке из первого сообщения
*

artliffe

  • Захожу иногда
  • 127
  • 6 / 0
  • ...акки пчела
Не было время заняться этим вопросом. Сейчас присел и сделал с помощью ChronoForms - проще пареной репы.
Всё по ссылке из первого сообщения
Если все так просто было, можно было описать данный процесс хоть в двух словах
*

01Kuzma

  • Захожу иногда
  • 171
  • 1 / 0
Берёшь код из ихнего help'а и вставляешь его в свой custom code element. Естественно подставляя свои значения.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

В Joomla 2.5 VirtueMart 2.0.26d не работает добавление в корзину под мобилку

Автор kvintovskiy

Ответов: 8
Просмотров: 1539
Последний ответ 15.04.2024, 17:29:25
от Vastriet
Модуль устанавливается, но Joomla его не видит

Автор ruppert

Ответов: 20
Просмотров: 17904
Последний ответ 01.08.2022, 05:30:50
от rezon777
Как добавить описание к пункту меню в Joomla 2.5? (Как у материалов)?

Автор nia

Ответов: 7
Просмотров: 5717
Последний ответ 29.03.2021, 12:10:26
от sivers
Конструктор страниц (Page Builder) для Joomla 2.5

Автор nia

Ответов: 4
Просмотров: 1707
Последний ответ 14.03.2021, 12:17:35
от nia
Допиливаем Умный поиск в Joomla 2.5 (русский парадигматический стеммер для Joomla)

Автор stt

Ответов: 25
Просмотров: 14602
Последний ответ 29.12.2020, 23:57:16
от slepoy