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

Mick_20

  • Завсегдатай
  • 1024
  • 3 / 0
  • Что тут писать?
Здравствуйте,

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

Как лучше реализовать такое?

Пока думаю просто дописать запросы в БД второго сайта.
*

AlexB

  • Завсегдатай
  • 1973
  • 54 / 2
Re: Регистрация на двух сайтах
« Ответ #1 : 10.11.2020, 07:40:53 »
Это  оптимально
*

Mick_20

  • Завсегдатай
  • 1024
  • 3 / 0
  • Что тут писать?
Re: Регистрация на двух сайтах
« Ответ #2 : 10.11.2020, 09:17:47 »
Данные о пользователе нужно добавить только в эти таблицы?

#_users
#_user_usergroup_map
*

AlexB

  • Завсегдатай
  • 1973
  • 54 / 2
Re: Регистрация на двух сайтах
« Ответ #3 : 10.11.2020, 09:23:43 »
да
*

Septdir

  • Живу я здесь
  • 3370
  • 168 / 4
Re: Регистрация на двух сайтах
« Ответ #4 : 10.11.2020, 13:44:20 »
Оба сайта на Joomla? сервер бд один или разные?
Не можете справиться с задачей сами пишите, решу ее за вас, не бесплатно*.
*Интересная задача, Деньги или Бартер. Натурой не беру!
CodersRank | Контакты | Мой GitHub | Workshop
*

Mick_20

  • Завсегдатай
  • 1024
  • 3 / 0
  • Что тут писать?
Re: Регистрация на двух сайтах
« Ответ #5 : 11.11.2020, 09:28:43 »
Оба сайта на Joomla? сервер бд один или разные?

Оба сайта на Joomla.
В phpMyAdmin у каждого сайта только его таблица.
Тоже самое и файлы.
Наверное для каждого свой хостинг создан на сервере.
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Re: Регистрация на двух сайтах
« Ответ #6 : 11.11.2020, 23:39:23 »
Если сайты аффилированы, то лучше держать 1 общую таблицу.
В противном случае - сделать API аля "Регистрация через Фейсбук".
Не будь паразитом, сделай что-нибудь самостоятельно!
*

Mick_20

  • Завсегдатай
  • 1024
  • 3 / 0
  • Что тут писать?
Re: Регистрация на двух сайтах
« Ответ #7 : 13.11.2020, 07:43:56 »
Задача сделать именно костыль, чтобы дублировалась регистрация.
*

AlexB

  • Завсегдатай
  • 1973
  • 54 / 2
Re: Регистрация на двух сайтах
« Ответ #8 : 13.11.2020, 08:26:48 »
Задача сделать именно костыль, чтобы дублировалась регистрация.
ну допиливайте модули регистрации, что бы и с одного и с другого отправляло в обе бд данные
*

sivers

  • Живу я здесь
  • 2571
  • 355 / 0
Re: Регистрация на двух сайтах
« Ответ #9 : 13.11.2020, 09:01:58 »
Как лучше реализовать такое?
Можно написать плагин группы user, который будет отслеживать добавление/удаление юзера и дублировать во вторую БД. Установить его желательно на оба сайта, чтоб синхронизация работала в обе стороны.
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

Mick_20

  • Завсегдатай
  • 1024
  • 3 / 0
  • Что тут писать?
Re: Регистрация на двух сайтах
« Ответ #10 : 19.11.2020, 12:16:04 »
Спасибо всем за помощь!
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Не работает регистрация и вход, пускает только админа!

Автор xaxa

Ответов: 2
Просмотров: 854
Последний ответ 27.09.2019, 14:15:10
от xaxa
Очень долгая авторизация в админ панель. При чем на всех сайтах

Автор Victor333

Ответов: 15
Просмотров: 1122
Последний ответ 13.11.2017, 14:58:53
от SeBun
Не работает регистрация на сайте.

Автор Sergunqa

Ответов: 6
Просмотров: 1672
Последний ответ 30.06.2017, 15:16:46
от SeBun
Проблема с переводом двух фраз в компоненте Контакты Joomla 3.6

Автор Olga113

Ответов: 20
Просмотров: 1449
Последний ответ 02.04.2017, 22:53:17
от robert
Один материал на разных сайтах

Автор KatyaNet

Ответов: 1
Просмотров: 1205
Последний ответ 29.03.2016, 13:54:00
от voland