Новости Joomla

Новый способ добавления и рендера полей в Joomla Form - метод renderControlFields() (Joomla 5.3+)

Новый способ добавления и рендера полей в Joomla Form - метод renderControlFields() (Joomla 5.3+)

Новый способ добавления и рендера полей в Joomla Form - метод renderControlFields() (Joomla 5.3+). При отображении форм компонента в админке раньше разработчикам нужно было описывать скрытые поля в лейаутах. И выглядело это так:

<?php     // Это файл в /layouts/components/com_component/your_layout.php?><input type="hidden" name="task" value=""><input type="hidden" name="return" value="<?php echo $input->getBase64('return'); ?>"><input type="hidden" name="forcedLanguage" value="<?php echo $input->get('forcedLanguage', '', 'cmd'); ?>"><?php echo HTMLHelper::_('form.token'); ?>
Начиная с Joomla 5.3 добавлен новый способ добавления таких полей (их называют control fields) - программно. И теперь это можно сделать просто в Controller / View.
// В Controller/View добавляем поля$this->form  ->addControlField('task', '')  ->addControlField('return', $input->getBase64('return', ''))  ->addControlField('forcedLanguage', $forcedLanguage);
А в layout'е просто используем метод
renderControlFields()
// В layout формыecho $this->form->renderControlFields();
Многие компоненты ядра уже используют этот подход. Соответствующий PR был принят в Joomla 5.3 осенью 2024г.Смотреть
Pull Request@joomlafeed#joomla #разработка #php

JoomGallery 4.1.0 - компонент галереи изображений для Joomla

JoomGallery 4.1.0 - компонент галереи изображений для Joomla

Новая итерация компонента продолжает развиваться, ведь с v.4.x компонент был переписан практически с нуля.

v.4.1.0. Что нового?

Редактирование метаданных изображений. Теперь метаданные можно не только читать, но и напрямую редактировать и записывать обратно в изображение JPG. Поддерживаются данные EXIF ​​и IPTC.

Полная совместимость с Joomla! 4.x, 5.x и 6.x. Компонент почистили от устаревших методов в коде.

Заметно ускорили загрузку больших галерей. Списки в админке, особенно для очень больших галерей ( >30 000 изображений), теперь загружаются значительно быстрее.

Несколько сеток lightGallery на одной странице. Будь то плагины контента или модули изображений: теперь вы можете отображать несколько галерей или категорий на одной странице без каких-либо ограничений.

Множество мелких исправлений ошибок и оптимизаций.

Сайт проекта

GitHub расширения

Скачать

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

websnap

  • Новичок
  • 5
  • 0 / 0
Здравствуйте

Подскажите пожалуйста как выполнить SQL запрос к базе данных которая подключена к Joomla 2.5.6 в плагине для события onUserAfterSave?
Я делаю так:
Код: php
$db = & JFactory::getDBO();
$query = "UPDATE #__user_usergroup_map SET group_id = 15 WHERE user_id = " . $userID;
$db->setQuery($query);
$db->query();

Этот запрос просто устанавливает в базе данных группу для пользователя который только регистрируется или редактирует свои данные.
Данный код срабатывает. Если после него дописать die, то выполнение скрипта оборвется и в таблице user_usergroup_map напротив ID редактируемого или добавляемого пользователя действительно будет значение 15.

Но вот если код не обрывать, то после сохранения данных о пользователе он относится к группе Registered у которой ID не 15.
Я так понял где-то после работы моего плагина происходит редактирование информации о группах пользователя.

В общем мне нужно иметь возможность с помощью плагина привязывать пользователей к группам когда они регистрируются или редактируют свой профиль. Как это можно сделать?

Спасибо!
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
*

websnap

  • Новичок
  • 5
  • 0 / 0
Re: Выполнение sql запроса в плагине
« Ответ #2 : 16.01.2013, 15:00:08 »
Смотри  plugins/user/joomla/joomla.php значение $defaultUserGroup
Посмотрел, но признаться честно не понял как это мне может помочь)
Переменная $defaultUserGroup присутствует в функции protected function _getUser которая в свою очередь лишь формирует информацию о пользователе.
Также в этом плагине есть функция public function onUserAfterSave, но она лишь формирует и отправляет письмо зарегистрировавшемуся пользователю.

Я пробовал использовать в своем плагине такой код:
Код: php
$instance = JUser::getInstance($previousData["id"]);                   
jimport('joomla.application.component.helper');
$acl = JFactory::getACL();
$instance->set('groups', array($groupsArray));                   
$instance->save();

но он тоже не дал желаемого результата(
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
Re: Выполнение sql запроса в плагине
« Ответ #3 : 16.01.2013, 15:07:52 »
Цитировать
Я пробовал использовать в своем плагине такой код
а стандартный? Про него забыл. Его то надо отключить, переписав нужные функции в своем плагине. У тебя получается два плагина обрабатывают регистрацию. Потому и выходит как ты писал выше. Еще ты можешь поигратся с порядком размещения плагинов в админке. То есть фактически задать порядок обработки
*

websnap

  • Новичок
  • 5
  • 0 / 0
Re: Выполнение sql запроса в плагине
« Ответ #4 : 16.01.2013, 16:20:36 »
Я отключил все плагины в User кроме своего и всё равно новый пользователь добавляется в группу Registered, а не в ту, которую я указываю. То есть после моих изменений данные пользователя еще где-то обрабатываются.
« Последнее редактирование: 16.01.2013, 16:27:44 от websnap »
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
Re: Выполнение sql запроса в плагине
« Ответ #5 : 16.01.2013, 16:47:42 »
Должно быт как то так. И чего не создать группу пользователей. Дать им права какие нужно и сделать их авторизованными пр регистрации
Код: php-brief
$myUser = JFactory::getUser();
$myUser->set('usertype', 15);
*

websnap

  • Новичок
  • 5
  • 0 / 0
Re: Выполнение sql запроса в плагине
« Ответ #6 : 16.01.2013, 19:59:37 »
Проблема найдена. Оказывается виной всему Community Builder, который, неизвестно зачем, три раза инициирует сохранение данных о новом пользователе.
Мой плагин был рассчитан на то что данные о новом пользователе сохраняются один раз, после которого он прекращает свою работу. Вот и получалось, что после работы моего плагина данные снова редактировались.

Я ввел статик переменную в свой плагин:
Код: php
public static $saved = false;
public function onUserAfterSave($previousData, $isNew, $futureData, $error)
{
            if (!self::$saved = !self::$saved || !JFactory::getApplication()->isSite()) {
                return true;
             }
//Далее вызываю метод save
$curentUser = JFactory::getUser($previousData["id"]);
                    $curentUser->set('groups', $resultArray);
                    $curentUser->save(true);

Данные о новом пользователе, при работе плагина, сохраняются 6 раз, но лучше я ничего не придумал)))
« Последнее редактирование: 17.01.2013, 11:25:08 от websnap »
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

выполнение php

Автор egyptus

Ответов: 1
Просмотров: 1054
Последний ответ 30.01.2016, 21:37:25
от egyptus
Создание запроса к базе данных

Автор serrggeee

Ответов: 4
Просмотров: 1287
Последний ответ 16.09.2015, 13:06:54
от Aleks.Denezh
Как найти выполнение команды или как заблокировать?

Автор svikt

Ответов: 6
Просмотров: 1004
Последний ответ 12.05.2015, 17:07:41
от svikt
Фоновое выполнение

Автор motokraft

Ответов: 6
Просмотров: 1014
Последний ответ 26.10.2014, 16:06:07
от zomby6888
После запроса сброса пароля пользователь деактивируется

Автор Maxum

Ответов: 1
Просмотров: 912
Последний ответ 04.05.2014, 03:02:27
от Maxum