Новости 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

Quantum Manager нужен сообществу, а автору нужна ваша поддержка!

Quantum Manager нужен сообществу, а автору нужна ваша поддержка!Файловый менеджер Quantum — одно...

Файловый менеджер Quantum — одно из самых популярных решений для Joomla, созданное разработчиком из сообщества Joomla, Дмитрием Цымбалом (@tsymbalmitia). Он делает Quantum удобным, безопасным и современным, обновляет его, исправляет уязвимости и отвечает пользователям — всё это в свободное от основной работы время.

Теперь настал момент для следующего шага: развитие проекта требует больше времени и ресурсов.

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

vodochnikoff

  • Новичок
  • 4
  • 0 / 0
Здравствуйте.
Сайт после миграции с Joomla 2.5. на Joomla 3.
Шаблон - стандартный "Protostar".
В коде любой страницы сайта вижу, что к URL всех .js и .css - файлов добавляется вопросительный знак и одна и та же строка символов:

   <script src="/media/jui/js/jquery.min.js?4cadfc0b311b5e8826f8f125ebcab4c9"></script>
   <script src="/media/jui/js/jquery-noconflict.js?4cadfc0b311b5e8826f8f125ebcab4c9"></script>
   <script src="/media/jui/js/jquery-migrate.min.js?4cadfc0b311b5e8826f8f125ebcab4c9"></script>
   <script src="/media/system/js/caption.js?4cadfc0b311b5e8826f8f125ebcab4c9"></script>
   <script src="/media/jui/js/bootstrap.min.js?4cadfc0b311b5e8826f8f125ebcab4c9"></script>
   <script src="/templates/protostarmy/js/template.js?4cadfc0b311b5e8826f8f125ebcab4c9"></script>
   <!--[if lt IE 9]><script src="/media/jui/js/html5.js?4cadfc0b311b5e8826f8f125ebcab4c9"></script><![endif]-->


Как избавиться от этого мусора?
*

Efanych

  • Глобальный модератор
  • 4683
  • 644 / 0
  • Меняю свою жизнь на 360°!
Это не мусор, а идентификатор версии файла. Не нужно избавляться.
Создание сайтов, шаблонов, помощь в решении проблем.
*

vodochnikoff

  • Новичок
  • 4
  • 0 / 0
*

beliyadm

  • Легенда
  • 9758
  • 1665 / 66
  • Севастополь, Россия
Надо избавлять от этого.
Это идентификатор сессии, добавляется плагином либо шаблоном к пути файла, чтобы в случае его изменения все апдейты не кешировались но сразу отображались.
С этой точки зрения это хорошо.
Но с другой - для браузера это по сути новые файлы, загрузка которых происходит заново (не из кеша браузера). Зашел на сайт сегодня - закешировал одни файлы стилей\скриптов, зашел завтра - ID сессии изменился и заново браузер качает всё 3 метра скриптов и стилей.
Я бы отключал подобные вещи, если генеряться автоматически.
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
Это идентификатор сессии
неа, это идентификатор версии Joomla, а не сессии. избавляться как и сказал @Efanych не нужно.
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

beliyadm

  • Легенда
  • 9758
  • 1665 / 66
  • Севастополь, Россия
неа, это идентификатор версии Joomla, а не сессии. избавляться как и сказал @Efanych не нужно.
С чего это? 4cadfc0b311b5e8826f8f125ebcab4c9 это вполне себе md5 строка сессии, часто встречаю в клубных шаблонах, чтобы не кешировались файлы
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
С чего это?
ну может конечно какой то клубный шаблон и использует ее так экзотически, но вообще это стандартная версионность Joomla, к шаблонам никакого отношения не имеющая
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

beliyadm

  • Легенда
  • 9758
  • 1665 / 66
  • Севастополь, Россия
но вообще это стандартная версионность Joomla, к шаблонам никакого отношения не имеющая

И как ты её расшифруешь?
Предлагаю, чтобы ТС выложил скрин исходного кода с этими айдишниками и скрин таблицы сессий в этот же момент из пхпадмина. Тогда и будет ясно кто прав.
Я кучу раз такое видел, когда к файлам стилей добавляется ?v=blabla чтобы не кешировались, в данном случае уверен что этот ID это сессия.
Либо пусть ТС даст адрес сайта, зайдем с разных мест и сравним эти значения.
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

Efanych

  • Глобальный модератор
  • 4683
  • 644 / 0
  • Меняю свою жизнь на 360°!
Шаблон - стандартный "Protostar".
Предлагаю, чтобы ТС выложил скрин исходного кода с этими айдишниками
Код: php
// Add JavaScript Frameworks
JHtml::_('bootstrap.framework');

// Add template js
JHtml::_('script', 'template.js', array('version' => 'auto', 'relative' => true));

// Add html5 shiv
JHtml::_('script', 'jui/html5.js', array('version' => 'auto', 'relative' => true, 'conditional' => 'lt IE 9'));

// Add Stylesheets
JHtml::_('stylesheet', 'template.css', array('version' => 'auto', 'relative' => true));
Создание сайтов, шаблонов, помощь в решении проблем.
*

beliyadm

  • Легенда
  • 9758
  • 1665 / 66
  • Севастополь, Россия
Исходный код я имел в виду браузера, чтобы сравнить с базой сессий
Цитировать
array('version' => 'auto', 'relative' => true)
Ну вот этот кусок и похож на метод генерации CSS\JS с опцией.

Efanych - ты знаешь адрес сайта? Если да - скинь мне, зайду и сравним значение этого параметра в адресах файлов.
Если разное - значит 100% сессия, если одно - принесу свои извинения, значит неправильно понял ситуацию
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

Efanych

  • Глобальный модератор
  • 4683
  • 644 / 0
  • Меняю свою жизнь на 360°!
Efanych - ты знаешь адрес сайта? Если да - скинь мне
Нет, но стандартный же протостар...
Opera
<link href="/templates/protostar/css/template.css?ed5eee8dada9da5d1086af79fdf50923" rel="stylesheet" />
Chrome
<link href="/templates/protostar/css/template.css?ed5eee8dada9da5d1086af79fdf50923" rel="stylesheet" />
Создание сайтов, шаблонов, помощь в решении проблем.
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
та я думаю можно увидеть почти на любом сайте где последняя Joomla стоит https://demex.nevigen.com/
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

beliyadm

  • Легенда
  • 9758
  • 1665 / 66
  • Севастополь, Россия
Нет, но стандартный же протостар...

Ну хз тогда, согласен )) может стандартный и шифрует версию туда, зачем правда непонятно
Просто никогда не пользуюсь стандартными шаблонами, начиная с движка 1.5 у меня всегда базовый кастомный шаблон без всякой мишуры на все проекты
А то что некоторые пихают туда плагинами ?v=2\3\4 это встречал достаточно часто, когда локальная сетка у клиента кеширует жестко приходится такое внедрять
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
может стандартный и шифрует версию туда, зачем правда непонятно
чтобы когда Joomla обновилась файлы перекешировались
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

beliyadm

  • Легенда
  • 9758
  • 1665 / 66
  • Севастополь, Россия
чтобы когда Joomla обновилась файлы перекешировались
а зачем? Когда пользовательские файлы шаблонов остались без изменения (кстати бред обновления обновлять файлы стандартных шаблонов, которые многие используют, вносят изменения и бац при обновлении движка шаблон тоже полетел)
В общем согласен, был неправ, это мд5 версии движка в данном случае.
Но - категорически нельзя использовать стандартный шаблон для своего сайта в продакшне
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
а зачем? Когда пользовательские файлы шаблонов остались без изменения
так а там же это добавляется к системным файлам только, всякие /media/jui/js/ , /media/system/ и т.п, а к пользовательским файлам не должно добавляться по идее. ну только если сам не добавишь.

Но - категорически нельзя использовать стандартный шаблон для своего сайта в продакшне
это конечно, переопределять надо как минимум
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

ChaosHead

  • Гуру
  • 5242
  • 451 / 13
Как минимум это удобно. В шаблоне что-то сменил, кэш почистил и юзвери видят всё новое без задержек.
*

beliyadm

  • Легенда
  • 9758
  • 1665 / 66
  • Севастополь, Россия
Как минимум это удобно. В шаблоне что-то сменил, кэш почистил и юзвери видят всё новое без задержек.
Это если ИД в адресе не изменился, иначе для браузера это тот же адрес и так же кешируется
Потому многие используют сессии, что плохо для клиента и сервера
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

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

Автор KSS

Ответов: 5
Просмотров: 2768
Последний ответ 02.10.2025, 09:57:13
от Леон
Стоит ли ставить плагин rel="canonical" на Joomla 3

Автор azm1n

Ответов: 2
Просмотров: 1636
Последний ответ 09.05.2025, 12:39:18
от azm1n
Валидация формы с загрузкой файлов на сервер

Автор kuliev

Ответов: 4
Просмотров: 973
Последний ответ 17.01.2025, 14:38:44
от kuliev
Перестала работать почта на всех сайтах

Автор svarg

Ответов: 5
Просмотров: 1265
Последний ответ 23.02.2024, 22:05:51
от Vastriet
Ограничить описание определенным кол-ом символов

Автор DamaVbubi

Ответов: 5
Просмотров: 1383
Последний ответ 13.02.2024, 20:44:36
от sivers