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

Joseph

  • Новичок
  • 6
  • 0 / 0
Продолжаю старую тему.

Как сказал, Marques,
... 2.5.4 выйдет (по информации из группы Joomla на Google) уже 2 апреля и это будет не релиз безопасности, а полноценное обновление включающее исправление многих найденных багов.

Можно ли использовать метод изменения библиотеки из старой темы или надо действовать как-то по-другому?
« Последнее редактирование: 31.01.2014, 17:31:34 от b2z »
*

artlux

  • Захожу иногда
  • 466
  • 58 / 0
Так и тянет на изменение ядра?!

Сколько сайтов не делал на Joomla - ну нет таких задач которые требуют ковырять ядро!

Нет знаний написать свой компонент, можно найти сторонний под регистрацию пользователей...
Даже на компонентах формы можно сделать регистрацию Chronoforms (доки как это делается есть на сайте разработчика)...
Опять же есть стандартный com_user - который можно изменить и дописать(разумеется сделать копию и установить)...

Изменение ядра вариант (но как только обновишся - так придется опять ковырять)...
А не будеш обновляться - готовься к вирусам...
Разработка расширений: Joomla 1.5+, Bitrix 12+, Мобильные приложения для сайтов под Android (PhoneGap).
Для бонусов: Z136221252622, R242724126443, U423945028202. +79211696184(Мегафон), или плюсик в репу!
*

Joseph

  • Новичок
  • 6
  • 0 / 0
Я хочу сделать этот запрет, т.к. он крайне важен для моего проекта.
А уж какой метод использовать, менять ядро или использовать плагины, не имеет особого значения. И вот хочу узнать у опытных веб-программистов, есть ли критичные изменения в Joomla, из-за которых нельзя использовать предложенный мне ранее метод. А может подскажут метод получше.  ::)
*

tochini

  • Захожу иногда
  • 67
  • 1 / 0
Кхм, а из каких соображений запрещать русские логины ?
Безопасность... почему ?
Если не трудно - поясните.

Спасибо.
*

SmokerMan

  • Гуру
  • 5291
  • 720 / 26
Не надо ничего писать. Все делается через плагины.
Пример добавь в plugins/user/joomla/joomla.php метод

Код
	public function onUserBeforeSave($user, $isnew, $data)
{
//выбираем только латинский алфавит, без символов и пробелов
if (!preg_match('/^[A-z]+$/i', $data['username'])) {
$app = JFactory::getApplication();
// Save the data in the session.
$app->setUserState('com_users.registration.data', $data);
$app->redirect('index.php?option=com_users&view=registration', 'Тута есть русские буквы!', 'notice');
}

return true;
}

Ну лучше, как писалось выше. Этот метод оформить через отдельный - свой плагин. Тогда можно не бояться никаких обновлений.
*

Joseph

  • Новичок
  • 6
  • 0 / 0
Кхм, а из каких соображений запрещать русские логины ?
Безопасность... почему ?
Если не трудно - поясните.
Сервер Minecraft до некоторого времени имел значительные проблемы с русскими логинами. С тех пор, как это исправили на уровне ядра сервера, то жить стало проще. Однако, когда происходит запрос к базе данных от лаунчера на авторизацию игрока с русским логином, сервер падает в обморок.

Не надо ничего писать. Все делается через плагины.
Пример добавь в plugins/user/joomla/joomla.php метод

Код
	public function onUserBeforeSave($user, $isnew, $data)
{
//выбираем только латинский алфавит, без символов и пробелов
if (!preg_match('/^[A-z]+$/i', $data['username'])) {
$app = JFactory::getApplication();
// Save the data in the session.
$app->setUserState('com_users.registration.data', $data);
$app->redirect('index.php?option=com_users&view=registration', 'Тута есть русские буквы!', 'notice');
}

return true;
}

Ну лучше, как писалось выше. Этот метод оформить через отдельный - свой плагин. Тогда можно не бояться никаких обновлений.

Спасибо, пока использую ваш метод, а позже, как освоюсь получше в этой cms, напишу и свой плагин.
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
Здесь не нужен плагин. Правильнее здесь было обрабатывать ввод на стороне пользователя с помощью Js. Все то же самое, регулярка, но на Js
*

b2z

  • Глобальный модератор
  • 7284
  • 778 / 0
  • Разраблю понемногу
*

Скиф

  • Захожу иногда
  • 75
  • 0 / 0
  • ...Возможно он звонит по тебе.
Не надо ничего писать. Все делается через плагины.
Пример добавь в plugins/user/joomla/joomla.php метод

Код
	public function onUserBeforeSave($user, $isnew, $data)
{
//выбираем только латинский алфавит, без символов и пробелов
if (!preg_match('/^[A-z]+$/i', $data['username'])) {
$app = JFactory::getApplication();
// Save the data in the session.
$app->setUserState('com_users.registration.data', $data);
$app->redirect('index.php?option=com_users&view=registration', 'Тута есть русские буквы!', 'notice');
}

return true;
}

Ну лучше, как писалось выше. Этот метод оформить через отдельный - свой плагин. Тогда можно не бояться никаких обновлений.

У меня нифига не работает. Запретить кириллические логины для меня крайне важно. SOS!
« Последнее редактирование: 30.07.2015, 08:19:49 от Скиф »
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Call to a member function NewColorizeImage() on null при переходе PHP 7 [Решено]

Автор Eholov

Ответов: 3
Просмотров: 3033
Последний ответ 17.03.2023, 11:03:04
от Olexa
Язык пользователя при регистрации - мультиязычность

Автор romagromov

Ответов: 3
Просмотров: 977
Последний ответ 23.07.2022, 12:11:09
от Kostelano
Запрет на запись в таблице БД

Автор VIK4

Ответов: 24
Просмотров: 1077
Последний ответ 24.11.2021, 21:33:43
от VIK4
Проблема при регистрации пользователей в Joomshopping

Автор Gor2

Ответов: 2
Просмотров: 744
Последний ответ 01.03.2021, 10:24:43
от Gor2
После обновления Joomla до версии 3.9.23 проблема сохранения материала (Решено)

Автор yarek

Ответов: 6
Просмотров: 1453
Последний ответ 23.01.2021, 20:42:45
от wishlight