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

voland

  • Легенда
  • 11026
  • 588 / 112
  • Эта строка съедает место на вашем мониторе
Решение:
- сделано, требуется сделать pull

Статус:
желательна проверка

Описание:
Я создал пункт меню в скрытом меню типа список меток и дал ему алиас tags

Ожидаемый результат
Ссылки на тэги будут иметь вид /tags/tagname.html

Полученный результат
После посещения странички /tags.html ссылки действительно имеют такой вид, однако через некоторое время они вновь приобретают вид
/component/tags/tag/tagname.html

Информация о системе
Joomla 3.4.6 + модуль меток стандартный опять же
« Последнее редактирование: 17.12.2015, 17:25:31 от voland »
*

b2z

  • Глобальный модератор
  • 7287
  • 778 / 0
  • Разраблю понемногу
Re: Неверная работа роутера в 3.4.6
« Ответ #1 : 16.12.2015, 23:12:05 »
Цитировать
однако через некоторое время они вновь приобретают вид
/component/tags/tag/tagname.html
Это как? Само по себе?
*

voland

  • Легенда
  • 11026
  • 588 / 112
  • Эта строка съедает место на вашем мониторе
*

voland

  • Легенда
  • 11026
  • 588 / 112
  • Эта строка съедает место на вашем мониторе
Re: Неверная работа роутера в 3.4.6
« Ответ #3 : 16.12.2015, 23:14:30 »
Вот, там можно увидеть адреса ссылок.
А потом зайти сюда и ссылки станут правильными.
Но, на некоторое время
*

b2z

  • Глобальный модератор
  • 7287
  • 778 / 0
  • Разраблю понемногу
Re: Неверная работа роутера в 3.4.6
« Ответ #4 : 16.12.2015, 23:19:02 »
Так по моему они так всегда работали. Пока находишься внутри компонента тегов, всё ок, а как выходишь из него - нет. Или я не прав?
*

voland

  • Легенда
  • 11026
  • 588 / 112
  • Эта строка съедает место на вашем мониторе
Re: Неверная работа роутера в 3.4.6
« Ответ #5 : 16.12.2015, 23:23:13 »
Не знаю.
Даже если выйти, модуль некоторое время показывает верные ссылки.

В любом случае - это некорректная работа роутера
*

b2z

  • Глобальный модератор
  • 7287
  • 778 / 0
  • Разраблю понемногу
Re: Неверная работа роутера в 3.4.6
« Ответ #6 : 17.12.2015, 08:30:24 »
Ну так надо создать пункты меню для всех тегов и всё будет ок. Это же Joomla.
*

voland

  • Легенда
  • 11026
  • 588 / 112
  • Эта строка съедает место на вашем мониторе
Re: Неверная работа роутера в 3.4.6
« Ответ #7 : 17.12.2015, 08:46:43 »
Ну так надо создать пункты меню для всех тегов и всё будет ок. Это же Joomla.
Да вы издеваетесь!
Тем более что тэги создаются на лету и ссылки то ИНОГДА правильные.
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
Re: Неверная работа роутера в 3.4.6
« Ответ #8 : 17.12.2015, 08:48:59 »
А если тегов несколько тысяч?
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Re: Неверная работа роутера в 3.4.6
« Ответ #9 : 17.12.2015, 09:00:14 »
Не пробовали в шаблоне модуля приписать к url тэгов Itemid того пункта меню?
Не будь паразитом, сделай что-нибудь самостоятельно!
*

voland

  • Легенда
  • 11026
  • 588 / 112
  • Эта строка съедает место на вашем мониторе
Re: Неверная работа роутера в 3.4.6
« Ответ #10 : 17.12.2015, 09:09:20 »
Нет. А разве они не в хелпере генерируется?
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Re: Неверная работа роутера в 3.4.6
« Ответ #11 : 17.12.2015, 09:20:37 »
Не знаю, я этот модуль не юзаю, но не думаю, что в хелпере определяется ID вашего пункта меню (что в принципе тоже можно делать). Могу ошибиться, но насколько я помню, router.php сначала ищет подходящий пункт меню по Itemid и в случае неуспеха оставляет url в виде "component/tags".
Не будь паразитом, сделай что-нибудь самостоятельно!
*

voland

  • Легенда
  • 11026
  • 588 / 112
  • Эта строка съедает место на вашем мониторе
Re: Неверная работа роутера в 3.4.6
« Ответ #12 : 17.12.2015, 09:49:15 »
Кстати, как ни странно, но ссылки формируются уже в шаблоне вывода
Код
JRoute::_(TagsHelperRoute::getTagRoute($item->tag_id . ':' . $item->alias))
*

b2z

  • Глобальный модератор
  • 7287
  • 778 / 0
  • Разраблю понемногу
Re: Неверная работа роутера в 3.4.6
« Ответ #13 : 17.12.2015, 10:11:18 »
Могу ошибиться, но насколько я помню, router.php сначала ищет подходящий пункт меню по Itemid и в случае неуспеха оставляет url в виде "component/tags".
Именно, стандартный роутер - ищет Itemid конкретного элемента. Он такой везде в Joomla - во всех компонентах. Нет фолбэка на список.
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Re: Неверная работа роутера в 3.4.6
« Ответ #14 : 17.12.2015, 10:30:53 »
Нет фолбэка на список.
Исключение - если он активный. Интересно, почему?
P.S. Ведь если не найдется пункта меню для конкретного элемента, то логично использовать существующий пункт меню списка, так? В общем, думаю, что всю систему образования ссылок нужно менять.
« Последнее редактирование: 17.12.2015, 10:43:00 от robert »
Не будь паразитом, сделай что-нибудь самостоятельно!
*

b2z

  • Глобальный модератор
  • 7287
  • 778 / 0
  • Разраблю понемногу
Re: Неверная работа роутера в 3.4.6
« Ответ #15 : 17.12.2015, 10:40:17 »
Сергей, попробуй сделать так в /components/com_tags/helpers/route.php:

Добавь после 155 строки код:

Код: php
// Fallback to default tags view
if ($view == 'tags')
{
self::$lookup[$language]['tags']['default'] = $item->id;
}

Потом после строки 178:

Код: php
// Return the default itemid
if (isset(self::$lookup[$language]['tags']['default']))
{
return self::$lookup[$language]['tags']['default'];
}
*

b2z

  • Глобальный модератор
  • 7287
  • 778 / 0
  • Разраблю понемногу
Re: Неверная работа роутера в 3.4.6
« Ответ #16 : 17.12.2015, 10:42:09 »
Исключение - если он активный. Интересно, почему?
Так активный пункт может быть не только список.
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Re: Неверная работа роутера в 3.4.6
« Ответ #17 : 17.12.2015, 10:44:06 »
Ведь если не найдется пункта меню для конкретного элемента, то логично использовать существующий пункт меню списка, так?
Не будь паразитом, сделай что-нибудь самостоятельно!
*

b2z

  • Глобальный модератор
  • 7287
  • 778 / 0
  • Разраблю понемногу
Re: Неверная работа роутера тегов в 3.4.6
« Ответ #18 : 17.12.2015, 10:46:58 »
Ведь если не найдется пункта меню для конкретного элемента, то логично использовать существующий пункт меню списка, так?
Как бы да, логично. Выше я как раз предложил такое решение. Но реально нужно давать выбор, что использовать для фолбэка, а не хардкодить.
*

voland

  • Легенда
  • 11026
  • 588 / 112
  • Эта строка съедает место на вашем мониторе
Re: Неверная работа роутера тегов в 3.4.6
« Ответ #19 : 17.12.2015, 16:08:44 »
Сергей, попробуй сделать так в /components/com_tags/helpers/route.php:

Добавь после 155 строки код:

Код: php
// Fallback to default tags view
if ($view == 'tags')
{
self::$lookup[$language]['tags']['default'] = $item->id;
}

Потом после строки 178:

Код: php
// Return the default itemid
if (isset(self::$lookup[$language]['tags']['default']))
{
return self::$lookup[$language]['tags']['default'];
}
Точно после этих строк?
*

voland

  • Легенда
  • 11026
  • 588 / 112
  • Эта строка съедает место на вашем мониторе
*

b2z

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

voland

  • Легенда
  • 11026
  • 588 / 112
  • Эта строка съедает место на вашем мониторе
Re: Неверная работа роутера тегов в 3.4.6
« Ответ #23 : 17.12.2015, 16:39:46 »
Угу, сделал.
Проверил - поведение не изменилось.
*

b2z

  • Глобальный модератор
  • 7287
  • 778 / 0
  • Разраблю понемногу
Re: Неверная работа роутера тегов в 3.4.6
« Ответ #24 : 17.12.2015, 16:52:52 »
Аа, я затупил. Там же else, а значит он не отработает, так как $needles всегда есть. Убери else вообще.

И первую часть кода после строки 154 воткни.
https://github.com/joomla/joomla-cms/blob/staging/components/com_tags/helpers/route.php#L154
*

voland

  • Легенда
  • 11026
  • 588 / 112
  • Эта строка съедает место на вашем мониторе
Re: Неверная работа роутера тегов в 3.4.6
« Ответ #25 : 17.12.2015, 17:23:46 »
Не, всё же поставь первую часть после строки 155.
О, теперь работает!
Надо запуллить!
*

b2z

  • Глобальный модератор
  • 7287
  • 778 / 0
  • Разраблю понемногу
Re: Неверная работа роутера тегов в 3.4.6
« Ответ #26 : 17.12.2015, 17:29:28 »
О, теперь работает!
Надо запуллить!
Я уже пояснял, что так просто пулл не сделать. А если кто-то не хочет, чтобы по дефу брался пункт меню списка тегов?
*

voland

  • Легенда
  • 11026
  • 588 / 112
  • Эта строка съедает место на вашем мониторе
Re: Неверная работа роутера тегов в 3.4.6
« Ответ #27 : 17.12.2015, 17:31:01 »
Ну если 99% это надо, то может есть смысл игнорировать этого кого-то?
*

b2z

  • Глобальный модератор
  • 7287
  • 778 / 0
  • Разраблю понемногу
Re: Неверная работа роутера тегов в 3.4.6
« Ответ #28 : 17.12.2015, 17:38:29 »
Ты узко мыслишь... Сразу видно, пуллов не делал ;) Харкодить нельзя, понимаешь? Ты же не для себя делаешь...

Нужна свобода выбора, а это значит, что надо параметр вводить какой-то. Возможно в настройки компонента.
*

voland

  • Легенда
  • 11026
  • 588 / 112
  • Эта строка съедает место на вашем мониторе
Re: Неверная работа роутера тегов в 3.4.6
« Ответ #29 : 17.12.2015, 18:03:22 »
Ты узко мыслишь... Сразу видно, пуллов не делал ;) Харкодить нельзя, понимаешь? Ты же не для себя делаешь...

Нужна свобода выбора, а это значит, что надо параметр вводить какой-то. Возможно в настройки компонента.
Эх.. пока это случится
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться