Новости Joomla

Перевод и публикация интервью с Joomla евангелистом на греческом портале Joomla

Перевод и публикация интервью на греческом портале Joomla 🇬🇷

Утро, просматриваешь входящие письма и изучаешь новости и внезапно обнаруживаешь, что инициатива, которую ты начал, подхватывается другими людьми. 🎉

Недавно я взял интервью у Билла (Василиса) Коциаса - руководителя студии, читающего лекции в университете и популяризатора Joomla в Греции. Это интервью из журнала NorrNext, в оригинале на английском, теперь доступно на греческом языке и опубликовано на портале joomla.gr. 🎉

До чего же приятно… 😇😊 Работа замечена и с ней посчитали необходимым ознакомить аудиторию страны, в которой Билл читает лекции. И это солнечная Греция - страна, страна, с которой Россию многое связывает. 🇬🇷🇷🇺🕊

Смотрю на греческий алфавит и тут же рисуются картины белоснежных зданий в окружении винограда и амфор, красивых женщин в сандалиях и мужественных воинов, охраняющих покой полисов, в которых ученые мужи работают над трудами, позже вошедшими в века. Красиво! 😇Но вернемся к интервью.

Из него вы узнаете, что в Греции доля Joomla среди CMS занимает порядка 30-40%. По моему мнению это - самый высокий показатель во всем мире. Также чтение лекций о Joomla в университетах позволит привести новых пользователей и к тому же молодое поколение. Ну и огромное кол-во сертификтатов Билла на стене (смотрим фото в статье) свидетельствует о том, что Joomla может применяться как профессиональный инструмент.

🌐 Оригинальное интервью (на английском)
🇬🇷 Интервью на греческом портале (joomla.gr)

Что насчет перевода на русский? Увы, времени всего 24 часа в сутках. Я продолжаю готовить новые интервью. Возможно, после завершения выпуска журнала, рассмотрю перевод некоторых интервью на русский. Но я об этом не говорил. 😊 В блоге @eugenius_blog публикую анонсы интересных событий из мира Joomla, интервью, уроки и полезные советы, а также делюсь мыслями:, связанными с разработкой и веб-дизайном.

Обработка HTTP ответа в Joomla 6+. Изменения по сравнению с Joomla 3 - Joomla 5

👩‍💻 Обработка HTTP ответа в Joomla 6+. Изменения по сравнению с Joomla 3 - Joomla 5.В Joomla для выполнения внешних запросов из PHP к сторонним API используется класс Joomla\Http\Http напрямую или же Joomla\Http\HttpFactory, который возвращает для работы преднастроенный по умолчанию класс Http. О работе с HTTP-запросами подробно рассказывалось в статье 2021 года Создание внешних запросов с использованием HttpFactory (Joomla). Некоторые изменения касаются работы с ответами на запросы. Например, наш запрос:
use Joomla\Http\HttpFactory;$http = (new HttpFactory)->getHttp($options, ['curl', 'stream']);$response = $http->get('https://any-url.ru/api/any/endpoint');
Раньше можно было получить код ответа или тело ответа как свойство $response - $response->code или $response->body. Однако, Joomla, начиная с Joomla 4 во многом переходит на стандарты PSR. В частности для работы с HTTP-ответами - на PSR-7. Также хорошая статья на Хабре о PSR-7: PSR-7 в примерах.
Прямое обращение к свойствам code, headers, body объявлено устаревшим в Joomla 6.0.0 и обещают удалить в Joomla 7.0.0.
Вместо этого нужно работать с HTTP-ответом по стандартам PSR-7. Код ответа.Было $response->code. Стало $response->getStatusCode().Заголовки ответа.Было $response->headers. Стало $response->getHeaders().Тело ответа.Было $response->body. Стало (string)$response->getContents().В тело ответа теперь приходит не строка, а поток - объект класса Laminas\Diactoros\Stream. Поэтому его нужно привести к строке (если это json, к примеру): (string)$response->getContents(). Чаще всего в коде Joomla встречается именно такой вариант. Однако, есть и вариант с перемещением указателя чтения на начало потока:
// Получили ответ в виде потока$stream = $response->getBody();// "перемотали" на начало$stream->rewind();// Получили строковый ответ$json = $stream->getContents();
В итоге результат одинаковый.@joomlafeed#joomla #разработка #php

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

kolio

  • Захожу иногда
  • 91
  • 11 / 4
Привет всем
столкнулся такой бедой

1. если залогены на фронтэнде, то разлогиниваемся и чистим куки, закрываем браузер, открываем - для чистого теста
2. логинимся - входим в редактирование своего профиля - пускает, всё работает
3. просто закрываем страницу и браузер
4. запускаем браузер и входим на сайт. по идее куки запомнены и должны автоматом продолжить юзать сайт под те же логином - так и происходит
5. перешагивая по страницам видно, что залогены нормально
6. нажимаем снова на ссылку редактирования профиля и получаем вот что (см. фото)
7. пробовал отключать кеширование, отключать ЧПУ - всё аналогично, аналогичная картина четко наблюдается и на локальном сервере
8. если снова разлогиниться и снова войти - то пускает в профиль, даже не перезапуская браузер
9. что то или с куками или с сессиями, непонятно  :'(
10. если после неудачной попытки войти в профиль нажать НАЗАД, то выдаст кучу
Код
Из соображений безопасности вам необходимо авторизоваться для редактирования вашей персональной информации.
Из соображений безопасности вам необходимо авторизоваться для редактирования вашей персональной информации.
Из соображений безопасности вам необходимо авторизоваться для редактирования вашей персональной информации.
Из соображений безопасности вам необходимо авторизоваться для редактирования вашей персональной информации.
Из соображений безопасности вам необходимо авторизоваться для редактирования вашей персональной информации.
в общем фраза JGLOBAL_REMEMBER_MUST_LOGIN
10. по исходнику нашел кто генерит её:
components\com_users\views\profile\view.html.php
функция public function display($tpl = null)
строки

Код
// View also takes responsibility for checking if the user logged in with remember me.
$user = JFactory::getUser();
$cookieLogin = $user->get('cookieLogin');

if (!empty($cookieLogin))
{
// If so, the user must login to edit the password and other data.
// What should happen here? Should we force a logout which detroys the cookies?
$app = JFactory::getApplication();
$app->enqueueMessage(JText::_('JGLOBAL_REMEMBER_MUST_LOGIN'), 'message');
$app->redirect(JUri::base(). 'index.php?option=com_users&view=login', '', 302);

return false;
}

возможно у кого-то аналогичная проблема была?
*

SmokerMan

  • Гуру
  • 5290
  • 720 / 26
Это вроде как дополнительная защита перед редактированием данных
А вообще не понятно что этот кусок делает в виде. Т.к. в контролере в методе edit он есть.
Т.е. по логике его тут не должно быть, похоже на баг

*

kolio

  • Захожу иногда
  • 91
  • 11 / 4
Пока решил отключить лишние плагины
Уже вижу, что нет такой беды, но просит ввести логин и пароль - то есть отображает формочку входа в сайт
но при этом модуль     Improved AJAX Login and Register  показывает, что я залогинен

возможно это связано с тем, что я логинюсь не юзая имя, а почтовый адрес
видать беда в компоненте Improved AJAX Login and Register
*

kolio

  • Захожу иногда
  • 91
  • 11 / 4
Это вроде как дополнительная защита перед редактированием данных
А вообще не понятно что этот кусок делает в виде. Т.к. в контролере в методе edit он есть.
Т.е. по логике его тут не должно быть, похоже на баг

Возможно, сейчас убираю все плагины и хочу чистый тест провести без примесей

без этого куска кода ВСЁ РАБОТАЕТ
на живом сайте тоже всё окей даже без отключения плагинов

один и тот же код в разных местах: один на редактирование, другой на display, но по факту ведут в одно и то же место

но самое интересное, что в edit там есть проверка
Код
$app		= JFactory::getApplication();
$user = JFactory::getUser();
$loginUserId = (int) $user->get('id');

// Get the previous user id (if any) and the current user id.
$previousId = (int) $app->getUserState('com_users.edit.profile.id');
$userId     = $this->input->getInt('user_id', null, 'array');

// Check if the user is trying to edit another users profile.
if ($userId != $loginUserId)
{
JError::raiseError(403, JText::_('JERROR_ALERTNOAUTHOR'));
return false;
}

а в view.html.php этого нет

думаю закоментить то, что выдает ошибку, а вместо него добавить код который выше
« Последнее редактирование: 12.08.2014, 13:14:25 от kolio »
*

kolio

  • Захожу иногда
  • 91
  • 11 / 4
В общем сделал так:
Код
	$app		= JFactory::getApplication();
// View also takes responsibility for checking if the user logged in with remember me.
$user = JFactory::getUser();
$loginUserId = (int) $user->get('id');

// Check if the user is trying to edit another users profile.
if (!$loginUserId)
{
JError::raiseError(403, JText::_('JERROR_ALERTNOAUTHOR'));
return false;
}

можно было бы 1 строку сократить, но не столь важно
если разлогинился, то не пускает по адресу http://127.0.0.1/kabinet/profile?layout=edit
залогинился - пускает и отображает данные

думаю тема закрыта, спасибо собеседнику за поддержку и за то, что сказал, что это возможно баг
*

ipdj

  • Осваиваюсь на форуме
  • 39
  • 0 / 0

но самое интересное, что в edit там есть проверка
Код
$app		= JFactory::getApplication();
$user = JFactory::getUser();
$loginUserId = (int) $user->get('id');

// Get the previous user id (if any) and the current user id.
$previousId = (int) $app->getUserState('com_users.edit.profile.id');
$userId     = $this->input->getInt('user_id', null, 'array');

// Check if the user is trying to edit another users profile.
if ($userId != $loginUserId)
{
JError::raiseError(403, JText::_('JERROR_ALERTNOAUTHOR'));
return false;
}

а в view.html.php этого нет


Подскажите где лежит edit?
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Плагин для транслитерации имен загружаемых файлов

Автор KSS

Ответов: 5
Просмотров: 2776
Последний ответ 02.10.2025, 09:57:13
от Леон
Joomla 3 не пускает в админку (просто перезагружается страница) (гуглил, нашёл решение, не помогло)

Автор lifelover2b

Ответов: 11
Просмотров: 4888
Последний ответ 05.06.2025, 04:48:29
от andrey222
Не работает мобильная версия сайта

Автор jeans

Ответов: 4
Просмотров: 1388
Последний ответ 21.05.2025, 12:44:06
от jeans
Стоит ли ставить плагин rel="canonical" на Joomla 3

Автор azm1n

Ответов: 2
Просмотров: 1641
Последний ответ 09.05.2025, 12:39:18
от azm1n
Не работает менеджер материалов, ошибка 500 SSL certificate problem

Автор Екатерина М

Ответов: 5
Просмотров: 1960
Последний ответ 06.04.2025, 09:27:20
от wishlight