Новости Joomla

👩‍💻 События плагинов и порядок их срабатывания при работе с пользовательскими полями Joomla и использовании FieldsHelper.

👩‍💻 События плагинов и порядок их срабатывания при работе с пользовательскими полями Joomla и использовании FieldsHelper.

В процессе работы с Joomla бывает необходимо работать с пользовательским интерфейсом более тонко, чем обычно. Все формы Joomla состоят из стандартных полей, содержанием, стилем отображения, состоянием (включено/выключено, доступно для редактирования или нет и т.д.) можно управлять с помощью плагинов. Да и для нестандартных проектов хорошей практикой является создание одного системного или нескольких плагинов групп "под проект", в которых храниться весь "нестандарт".

В этой статье описаны все триггеры, которые вызываются через Event Dispatcher из administrator/components/com_fields/src/Helper/FieldsHelper.php, с привязкой к жизненному циклу (порядку этапов работы запроса), аргументам, изменяемым данным и дальнейшему распространению по Joomla. Это поможет вам работать с Joomla свободнее и не опасаясь при этом потерять изменения при очередном обновлении движка.

Подходы, описанные в статье, полезны в тех случаях, когда вы работаете с данными в com_fields - механизме создания и редактирования пользовательских полей ядра Joomla и при использовании FieldsHelper. Многие сторонние компоненты не используют эту возможность, поэтому данная статья будет полезна лишь частично.

🏆 Открыто голосование за Joomla в премии CMS Critic People’s Choice Awards 2025

🏆 Открыто голосование за Joomla в  премии CMS Critic People’s Choice Awards 2025

🗓 Голосование продлится до 27 февраля 2026 года.

👩‍💻 Проголосовать! 👩‍💻

Номинации, в которых можно проголосовать за Joomla:
⭐️ Best Free CMS
⭐️ Best Open Source CMS
⭐️ Best Enterprise CMS

Также в номинации Best e-Commerce Solution участвуют компоненты интернет-магазинов для Joomla:
⭐️ HikaShop
⭐️ Virtuemart

В номинации Best Website Builder оказались:
⭐️ YooTheme
⭐️ SP Page Builder

Что такое CMS Critic Awards?
С 2012 года премия CMS Critic Awards занимает особое место в сообществе систем управления контентом (CMS). Это единственный в своем роде сайт, который составляет рейтинг системы управления контентом и связанных с ними решений на рынке — от малого до крупного и подчеркивает их инновации и услуги.

Каждый год награда CMS Critic Awards присуждается одному победителю в различных отраслевых категориях, таких как: «Лучшая облачная CMS», «Лучший DXP», «Лучшая Headless CMS и других. Затем результаты оглашаются через СМИ вместе с выбором редакции CMS Critic.
В этом году премия вернулась к своим традициям и только TOP-5 движков по количеству номинаций попали в 2-й этап - голосование.

@joomlafeed

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

Soko1off

  • Новичок
  • 3
  • 0 / 0
Доброго времени суток. Облазил пол интернета так и не нашёл решения свой проблемы.

Как можно принудительно закрыть сессию для пользователя? Есть сайт на Joomla 3.1.5, часто бывает такое что пользователи дают свои пароли посторонним людям на время, например на 1 день, когда они авторизируются они ставят галочку "Запомнить меня", и получается что сессия будет вечна, пока он не почистит куки, даже если сменил пароль. Может есть какой-то способ реализовать что-то наподобие "Завершить все сеансы" как это сделано ВКонтакте. Или чтобы всех выкидывало когда меняется пароль. Либо может можно как-то с админ панели это делать... Буду благодарен за любые мысли.

p.s. Убрать возможность вечной авторизации не вариант.
*

Aleks.Denezh

  • Живу я здесь
  • 3401
  • 428 / 4
Оу да все очень просто!
Пишем плагин для юзеров! Подвязваемся на метод onUserAfterSave в нем пишем что то типа:

Код: php
public function onUserAfterSave( $data, $isNew, $result, $error )
{
if ( !$isNew ) {
$userId = JArrayHelper::getValue( $data, 'id', 0, 'int' );
$db = JFactory::getDbo();
$query = $db->getQuery( true )->delete( '#__session' )->where( 'userid=' . $userId );
$db->setQuery( $query )->execute();
}
}
Теперь при сохраненнии пользователя будет удалятся запись где запомнена аутентефикация ) дальше вам всеголишь надо ввести алгоритм что бы не выкидывало владельца при сохранении каких либо данных )
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
Как можно принудительно закрыть сессию для пользователя. Вроде так
Код: php-brief
JFactory::getApplication()->logout();
*

Soko1off

  • Новичок
  • 3
  • 0 / 0
На сколько я понял здесь удаляется запись из базы данных для конкретного пользователя, но когда я пробовал разные варианты, и вручную удалял из базы данных запись с таблицы сессий, то это не давало никаких результатов... я так понимаю сессии хранятся где-то в файлах....
Оу да все очень просто!
Пишем плагин для юзеров! Подвязваемся на метод onUserAfterSave в нем пишем что то типа:

Код: php
public function onUserAfterSave( $data, $isNew, $result, $error )
{
if ( !$isNew ) {
$userId = JArrayHelper::getValue( $data, 'id', 0, 'int' );
$db = JFactory::getDbo();
$query = $db->getQuery( true )->delete( '#__session' )->where( 'userid=' . $userId );
$db->setQuery( $query )->execute();
}
}
Теперь при сохраненнии пользователя будет удалятся запись где запомнена аутентефикация ) дальше вам всеголишь надо ввести алгоритм что бы не выкидывало владельца при сохранении каких либо данных )
*

b2z

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

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
Код: php-brief
$config = JFactory::getConfig();
$cookie_domain = $config->get('cookie_domain', '');
$cookie_path = $config->get('cookie_path', '/');
$cookie_name = JUserHelper::getShortHashedUserAgent();
setcookie($cookie_name, false, time() - 42000, $cookie_path, $cookie_domain);
пример кода есть в плагине группы user ->Joomla
*

Aleks.Denezh

  • Живу я здесь
  • 3401
  • 428 / 4
Кукисы надо тереть. Я к сожалению в этом не силен.
Вот только все это странно, я тру у себя сессии и сразу выкидывает на авторизацию, если человек трет из базы запись с сессией и ничего не происходит может и авторизация там левая? и хранится как то по другому?
Ведь в стандарке в куке храниться хеш авторизированного пользователя, который по сути ключ в таблице #__session! нет соответствующей записи в таблице #__session то и авторизация не произойдет..
*

Soko1off

  • Новичок
  • 3
  • 0 / 0
Вроде ничего левого не ставил с вязаного с пользователями, в плагинах стоит включённым стандартный плагин "Пользователь - Joomla! user joomla", правда выключен "Пользователь - Профиль user profile" но я думаю он тут не причём, в настройках стоит обработчик сессий "База данных", время жизни 15 минут. Только что ещё раз проверил, авторизируюсь на сайте, в таблице сессий появляется моя запись, я её удаляю, на сайте перехожу на любую страницу, и в базе появляется опять моя запись с тем же хешом. На сайте стоит компонент "Akeeba Subscriptions", там есть свой профиль пользователя, но я думаю вряд ли он что-то меняет..
Вот только все это странно, я тру у себя сессии и сразу выкидывает на авторизацию, если человек трет из базы запись с сессией и ничего не происходит может и авторизация там левая? и хранится как то по другому?
Ведь в стандарке в куке храниться хеш авторизированного пользователя, который по сути ключ в таблице #__session! нет соответствующей записи в таблице #__session то и авторизация не произойдет..
*

SmokerMan

  • Гуру
  • 5290
  • 720 / 26
*

ELLE

  • Глобальный модератор
  • 4505
  • 893 / 0
На сайте стоит компонент "Akeeba Subscriptions", там есть свой профиль пользователя, но я думаю вряд ли он что-то меняет..
Вот как раз это из-за "Akeeba Subscriptions", я тоже заметила такое. На сайте, где его нет, все нормально
Надо поковырять, походу какой-то из плагинов его так работает
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Как закрыть отдельные публикации для определенной страны со своим сообщением?

Автор Sponsor

Ответов: 1
Просмотров: 669
Последний ответ 19.03.2023, 13:04:35
от stepan39
Менеджер шаблонов: не работают кнопка "Сохранить" "Закрыть" и тд

Автор darkghost

Ответов: 2
Просмотров: 922
Последний ответ 22.11.2021, 21:14:11
от darkghost
Как закрыть от просмотра?

Автор tmpnikl

Ответов: 5
Просмотров: 841
Последний ответ 07.04.2021, 18:40:10
от IToro82
Закрыть доступ к сайту с адресов конкретного провайдера, как?

Автор x1

Ответов: 2
Просмотров: 1966
Последний ответ 29.03.2021, 12:48:23
от x1
Как принудительно изменить md5 хэш в строке загрузки скриптов/стилей?

Автор Finch

Ответов: 4
Просмотров: 868
Последний ответ 14.02.2020, 12:18:46
от Finch