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

pavelrer

  • Давно я тут
  • 615
  • 10 / 2
Вопрос собственно в теме:

Это можно как-то сделать?  ;D В смысле помочь кто может  ;D Что как-то можно я и сам знаю.

JComments::showComments($product_id, 'com_virtuemart', $product_name);

Это будут продукты

JComments::showComments($this->category->virtuemart_category_id, 'com_virtuemart', $this->category->category_name);

Это будет и продукт и категории. Вот как бы сделать чтоб object_group т.е 'com_virtuemart' был отдельно для товаров, отдельно для категорий vm?

Ну может еще что нашаманить можно?

Могу конечно на место категорий, другой какой модуль типа FAQ прикрутить. Ну очень уж не хочется лишнего липить.

Спасибо за помощь!

*

pavelrer

  • Давно я тут
  • 615
  • 10 / 2
Жадные чтоль все да знаний!  ^-^ Шутка.

Делаем так:
В файл категории Шаблон/html/com_virtuemart/category/default.php ну или какой у вас там
Вставляем в нужное место

<?php
echo $this->product->event->afterDisplayContent;
$comments = JPATH_ROOT . '/components/com_jcomments/jcomments.php';
if (file_exists($comments)) {
require_once($comments);
echo JComments::showComments($this->category->virtuemart_category_id, 'com_virtuemartCAT');
}
?>

Дальше идем в компоненты/com_jcomments/plugins/

берем файл com_virtuemart.plugin.php и копируем его в файл com_virtuemartCAT.plugin.php

Все! Вроде работает, только в админки когда пришел комментарий, справа ссылка на страницу что комментировали она в категориях пока не работает, потом допилю а так все вроде пашет!

Тема [Решена]
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться