Новости Joomla

👩‍💻 SW JProjects v.2.6.1 - компонент каталога расширений для веб-приложений.

👩‍💻 SW JProjects v.2.6.1 - компонент каталога расширений для веб-приложений.

Компонент позволяет сделать свой мини-Joomla Extensions Directory - каталог расширений для CMS (не только для Joomla) или файлов. Есть возможность скачивания по лицензионным ключам создания кастомных схем данных для сервера обновлений.

👩‍💻 v.2.6.1. Что нового?
- Правки наследования схем серверов обновлений. Улучшена логика наследования схем серверов обновлений для проектов компонент - категория - проект.
- Не стабильные релизы в сервере обновлений. Теперь в данные сервера обновлений попадают все версии (alpha, beta и т.д.), а не только stable.
- Косметические изменения. В шаблоне по умолчанию сделаны замены некоторых CSS-классов, уточнено присвоение атрибутов loading=lazy и fetchpriority.
- Рефакторинг и правки кода. Текущее обновление кодовой базы.
- Исправление ошибок.

👩‍💻 Больше спасибо за помощь в тестировании участникам нашего сообщества Александру Новикову (@pro_portal) и Александру Судьбинову (@alexrevo).

- Страница расширения
- GitHub расширения
- Joomla Extensions Directory

@joomlafeed

Событие Pizza, Bugs & Fun - 29-30 января 2026 года.

Событие Pizza, Bugs & Fun  - 29-30  января 2026 года.

Уже несколько лет в мире Joomla проводятся мероприятия "Pizza, Bugs & Fun" (#PBF), где каждый может посвятить несколько часов своего мозгового времени тому, чтобы наша любимая CMS стала ближе к идеалу.

Ссылки на видео и статьи из этого поста рассказывает об организационных вопросах, которые пригодятся для участия в PBF, а так же что и как делать.

В рамках события PBF все желающие могут собираться в общий онлайн чат, обсудить вопросы Joomla и приложить к их разрешению свою руку. Самый классный вариант, когда эта встреча происходит оффлайн: тогда организовывается пицца, напитки по вкусу и несколько часов совместного творчества.

Каждый помогает тем, что он умеет:

  • кто-то пишет недостающую документацию,
  • кто-то пишет код,
  • кто-то тестирует как исправлены ошибки или сделан новый функционал.

На сайте события есть карта, можно "захостить" свою локацию. Практически все движки в мире развиваются за счёт спонсирующих их компаний. Joomla одна из немногих, где развитие идёт только усилиями международного сообщества энтузиастов.

https://www.youtube.com/watch?v=a-FuVKXg_Uw 

На момент написания данного поста в репозитории Joomla 810 открытых Issue (как правило это баги) и 236 Pull request (PR, исправление багов и новый функционал). Все PR обязательно тестируются минимум двумя участниками сообщества, дабы в конечный код движка не проскочила ошибка.

Если каждый из участников только нашего сообщества сделает даже одно тестирование, то, боюсь, PR и Issue на всех не хватит 😀 И ничего не останется нашим коллегам из международных Joomla-чатов.

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

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
Имею логин, пароль и email. Как программно создать/добавить пользователя, в группе Registered, сразу разблокированным, установив ему получение системный писем и не требовать сброс пароля при первом входе? Это нужно для синхронизации пользователей с 1С (в 1С добавляют нового, потом выгружают его на сайт), при импорте данных из XML.
*

varX

  • Живу я здесь
  • 2467
  • 141 / 5
  • разработка компонентов
Создаете объект
$user = new JUser;

Создаете массив данных
$data = array();
$data['email'] ='email';
$data['password'] ='password';
и т.д.

Дальше, если очень упрощенно:
$user->bind($data);
$user->save();
Разработка и ремонт. VirtueMart. JoomShopping. Свои компоненты. Принимаю заявки на plasma-web.ru.
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
Спс, попробую. Другие поля - аналогично, это понятно, а с группой доступа как?
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
Не пробовал но возможно:
Код: php
JUserHelper::addUserToGroup('userid', 2);

Сработало вроде:
Код: php
$user = new JUser('id');
$user->sendEmail = 1;
$user->requireReset = 1;
$user->save();
JUserHelper::addUserToGroup('id', 2);
« Последнее редактирование: 13.11.2014, 01:59:09 от zomby6888 »
интернет-блог: http://websiteprog.ru
*

varX

  • Живу я здесь
  • 2467
  • 141 / 5
  • разработка компонентов
Спс, попробую. Другие поля - аналогично, это понятно, а с группой доступа как?
Аналогично. По памяти, не глядя (мож изменилось уже что-то)
$data['groups'] =array($group);
Разработка и ремонт. VirtueMart. JoomShopping. Свои компоненты. Принимаю заявки на plasma-web.ru.
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
Аналогично. По памяти, не глядя (мож изменилось уже что-то)
$data['groups'] =array($group);
$data['groups'] =array(2); - пойдет?
*

varX

  • Живу я здесь
  • 2467
  • 141 / 5
  • разработка компонентов
$data['groups'] =array(2); - пойдет?
Попробуйте, должно.
Разработка и ремонт. VirtueMart. JoomShopping. Свои компоненты. Принимаю заявки на plasma-web.ru.
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
Сработало вроде:
Код: php
$user = new JUser('id');
$user->sendEmail = 1;
$user->requireReset = 1;
$user->save();
JUserHelper::addUserToGroup('id', 2);
Спс, попробую.
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
requireReset возможно наоборот в 0 надо установить..
интернет-блог: http://websiteprog.ru
*

varX

  • Живу я здесь
  • 2467
  • 141 / 5
  • разработка компонентов
Не пробовал но возможно:
Код: php
JUserHelper::addUserToGroup('userid', 2);

Сработало вроде:
Код: php
$user = new JUser('id');
$user->sendEmail = 1;
$user->requireReset = 1;
$user->save();
JUserHelper::addUserToGroup('id', 2);
Речь, насколько я понял, идет о создании нового пользователя. У него нет id. Впрочем, если не ошибаюсь, $user->save(); возвращает id созданного пользователя, поэтому можно и так приспособиться.
Разработка и ремонт. VirtueMart. JoomShopping. Свои компоненты. Принимаю заявки на plasma-web.ru.
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
Ну да, если нового создавать то как-то так:
Код: php
$user = new JUser;
$user->sendEmail = 1;
$user->requireReset = 0;
$user->name = 'Вася';
$user->username = 'vasya';
$user->password = 'password';
$user->email = 'test@test.ru';
$user->save();
JUserHelper::addUserToGroup($user->id, 2);


Можно его еще авторизовать и залогинить для прикола)
интернет-блог: http://websiteprog.ru
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
А как быстро (без запроса) проверить, существует ли пользователь с указанным логином, и если да - вернуть его id? Чтобы гарантированно добавлять только несуществующего.
С запросом - не проблема, но хотелось бы по максимуму с использованием имеющихся встроенных средств api J.
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
Мне кажется что никак, только запрос. Встроенные средства это лишние данные и более медленная обработка, в таких ситуациях гораздо полезнее ими пренебречь
интернет-блог: http://websiteprog.ru
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
Пичально, но все же, как? протестирую скорость заодно )
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
А что тут тестировать прямой запрос всегда быстрее будет это же очевидно. Как будто методы api для получения данных не используют запросы. Что может быть быстрее чем:
Код: php
$db = JFactory::getDBO();
$query = "SELECT id FROM #__users WHERE username = ".$db->quote('vasya');
$db->setQuery($query);
if($id = $db->loadResult())
{
//делаем что -то с $id
}
интернет-блог: http://websiteprog.ru
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
ок, спс.
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
Код: php
$user = new JUser;
$user->sendEmail = 1;
$user->requireReset = 0;
$user->name = 'Vasya';
$user->username = 'vasya';
$user->password = 'password';
$user->email = 'test@test.ru';
$user->save();
JUserHelper::addUserToGroup($user->id, 2);
Это, к сожалению, не прокатило.

Код: php
          $user = new JUser;
          $data = array();
          $data['username'] = $item_login;
          $data['name'] = $item_name;
          $data['password'] = $item_pss;
          $data['email'] = $item_email;
          $data['sendEmail'] = 1;
          $data['requireReset'] = 0;
          $data['params'] = '{"admin_style":"","admin_language":"","language":"","editor":"","helpsite":"","timezone":""}';
          $user->bind($data);
          $user->save();
          JUserHelper::addUserToGroup($user->id, 2);
Это добавило пользователя и послало ему на почту письмо с логином и паролем, вот только пароль в базу не записался...
$item_pss содержит строку из латинских символов и цифр, 11 знаков, без пробелов и прочих знаков препинания.
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
Пробовал указать $data['password'] = md5($item_pss); - пароль в базу записался, однако авторизация не проходит
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
может надо подтверждение пароля указать? var_dump($user->getErrors()) что выводит?
« Последнее редактирование: 14.11.2014, 11:53:47 от zomby6888 »
интернет-блог: http://websiteprog.ru
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
посмотрел bind() в JUser, там действительно идет проверка:
Код: php
			if (isset($array['password2']) && $array['password'] != $array['password2'])
{
JFactory::getApplication()->enqueueMessage(JText::_('JLIB_USER_ERROR_PASSWORD_NOT_MATCH'), 'error');

return false;
}


ок.
указываю:
Код: php
          $data['password'] = $item_pss;
          $data['password2'] = $item_pss;
а вот фигвам: в базе пустое поле
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
Warning: password_hash(): Password must be a string in F:\home\inform.local\www\libraries\compat\password\lib\password.php on line 30

а у меня в data['password'] == object(SimpleXMLElement)#375 (1) {
  • => string(11) "mfo20140206" }

ппц
« Последнее редактирование: 14.11.2014, 12:01:40 от AlekVolsk »
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
)) Поэтому наверное и не работал первый вариант. У меня он срабатывал..
интернет-блог: http://websiteprog.ru
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
У меня же импорт из XML идет в цикле ))) так работает:
Код: php
          $data['password'] = (string)$item_pss;
          $data['password2'] = $data['password'];

И ошибку не сразу видел, поскольку контроллер редирект делал обратно на вьюху
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
Окончательный рабочий вариант:
          $user = new JUser;
          
$data = array();
          
$data['username'] = (string)$item_login;
          
$data['name'] = (string)$item_name;
          
$data['password'] = (string)$item_pss;
          
$data['password2'] = $data['password'];
          
$data['email'] = (string)$item_email;
          
$data['sendEmail'] = 1;
          
$data['requireReset'] = 0;
          
var_dump($data['password']);
          
$user->bind($data);
          
$user->save();
          
JUserHelper::addUserToGroup($user->id2);
*

Aleks.Denezh

  • Живу я здесь
  • 3401
  • 428 / 4
Окончательный рабочий вариант:
Так лучше:
Код: php
$user = new JUser;
$userData = array( 'name' => (string)$item_name,
'username' => (string)$item_login,
'password' => (string)$item_pss,
'password2' => $data['password'],
'email' => (string)$item_email,
'sendEmail' => 1,
'requireReset' => 0,
'groups' => array( 2 )
);
$user->bind( $userData );
if ( $user->save() ) {
echo 'Пользователь ' . $user->username . ' успешно зарегестрирован!';
}
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
При добавлении более 250 пользователей (импорт данных из XML, в цикле):
Fatal error: Maximum execution time of 30 seconds exceeded in F:\home\inform.local\www\libraries\compat\password\lib\password.php on line 127

Можно этого избежать, делая паузу в выполнении цикла после, скажеи так, каждых 100 интераций цикла, чтобы избежать появления ошибки?
*

Aleks.Denezh

  • Живу я здесь
  • 3401
  • 428 / 4
set_time_limit(0);
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
В цикле или перед ним?
+ перед циклом вставил, работает, спс

+
При регистрации пользователя пишу:
$user = new JUser;
$userData = array( 'name' => (string)$item_name,
   'username' => (string)$item_login,
   'password' => (string)$item_pss,
   'password2' => (string)$item_pss,
   'email' => (string)$item_email,
   'sendEmail' => 0,
   'requireReset' => 0,
   'groups' => array( 2 )
);
$user->bind( $userData );
В настройках менеджера пользователей: Отсылать пароль    Нет
А письмо с паролем при регистрации все равно отсылается, как избежать?
« Последнее редактирование: 20.11.2014, 19:32:12 от AlekVolsk »
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
Если пользователь не добавился, как отловить ошибку, почему не добавился? А именно: отловить совпадающий email и некорректный логин
Код: php
$user->bind($userData);
if (!$user->save()) {
  // ?
}
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
В общем-то вышел из положения, выводя $user->_errors[0], но это системное сообщение, а хотелось бы свое.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Условия вывода блока div, поля пользователя?

Автор warlocksp

Ответов: 28
Просмотров: 1032
Последний ответ 10.12.2020, 14:05:36
от gartes
Выбор группы пользователя при регистрации (аутентификации)

Автор Bartleby

Ответов: 10
Просмотров: 2185
Последний ответ 05.06.2013, 14:20:36
от Bartleby