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

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

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

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

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

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

arturk

  • Захожу иногда
  • 105
  • 11 / 2
спасибо neogeek все работает!
Joomla 3.4.4 VM 3.0.10
*

Eholov

  • Захожу иногда
  • 170
  • 14 / 0
Спасибо  neogeek! Работает.
только я не этот
Код
if ($virtuemart_category_id > 0) {
$joinCategory = TRUE;
$where[] = ' `pc`.`virtuemart_category_id` = ' . $virtuemart_category_id;
} else if ($isSite) {



а такой
Код
if ($virtuemart_category_id > 0) {
$joinCategory = TRUE;
if(true){
$where[] = ' `pc`.`virtuemart_category_id` = ' . $virtuemart_category_id;
} else {
/*GJC add subcat products*/
$catmodel = VmModel::getModel ('category');
$childcats = $catmodel->getChildCategoryList(1, $virtuemart_category_id,null, null, true);
$cats = $virtuemart_category_id;
foreach($childcats as $childcat){
$cats .= ','.$childcat->virtuemart_category_id;
}
$joinCategory = TRUE;
$where[] = ' `pc`.`virtuemart_category_id` IN ('.$cats.') ';
}
} else if ($isSite) {

код менял на указанный.
*

alanbus

  • Захожу иногда
  • 221
  • 3 / 0
А кто знает, как быть с тем, как формируется выдача на странице при выводе товаров из подкатегорий?

У меня такая структура страницы выходит..

Сперва идет заголовок h1 Товары
Потом список товаров
Потом снова этот же h1
Под ним список подкатегорий

Получается не очень хорошо -  два дублирующих заголовка h1 на 1 странице (с одним текстом)..

Использовал код, который выложил art-apple
« Последнее редактирование: 08.04.2016, 18:56:08 от alanbus »
*

SolopoV

  • Давно я тут
  • 576
  • 16 / 0
  • зеленею...
Этот хак у меня не заработал...
« Последнее редактирование: 22.04.2016, 08:05:14 от SolopoV »
*

crashwork

  • Новичок
  • 1
  • 0 / 0
Спасибо  neogeek! Работает.
только я не этот
Код
if ($virtuemart_category_id > 0) {
$joinCategory = TRUE;
$where[] = ' `pc`.`virtuemart_category_id` = ' . $virtuemart_category_id;
} else if ($isSite) {



а такой
Код
if ($virtuemart_category_id > 0) {
$joinCategory = TRUE;
if(true){
$where[] = ' `pc`.`virtuemart_category_id` = ' . $virtuemart_category_id;
} else {
/*GJC add subcat products*/
$catmodel = VmModel::getModel ('category');
$childcats = $catmodel->getChildCategoryList(1, $virtuemart_category_id,null, null, true);
$cats = $virtuemart_category_id;
foreach($childcats as $childcat){
$cats .= ','.$childcat->virtuemart_category_id;
}
$joinCategory = TRUE;
$where[] = ' `pc`.`virtuemart_category_id` IN ('.$cats.') ';
}
} else if ($isSite) {

код менял на указанный.

В этом случае походу вообще не нужны такие хаки. Самому вот понадобилось вывести товары из подкатегорий в VirtueMart 3.0.16.
Достаточно просто в этом месте:

Код
if ($virtuemart_category_id > 0) {
$joinCategory = TRUE;
if(true){
$where[] = ' `pc`.`virtuemart_category_id` = ' . $virtuemart_category_id;
} else {
/*GJC add subcat products*/
$catmodel = VmModel::getModel ('category');
$childcats = $catmodel->getChildCategoryList(1, $virtuemart_category_id,null, null, true);
$cats = $virtuemart_category_id;
foreach($childcats as $childcat){
$cats .= ','.$childcat->virtuemart_category_id;
}
$joinCategory = TRUE;
$where[] = ' `pc`.`virtuemart_category_id` IN ('.$cats.') ';
}

в операторе "if(true)" true заменить на false или !true, чтобы условие пошло по другой ветке. Там же комментарий самого разработчика присутствует: "/*GJC add subcat products*/"
*

nataliP

  • Осваиваюсь на форуме
  • 10
  • 0 / 0
А как сделать, чтобы товары из подкатегории выводились не общим списком с товарами в категории, а например, ниже в отдельном блоке?
*

hels

  • Захожу иногда
  • 205
  • 0 / 0
в операторе "if(true)" true заменить на false или !true, чтобы условие пошло по другой ветке. Там же комментарий самого разработчика присутствует: "/*GJC add subcat products*/"
самый лучший вариант, а то я вначале начал сам колупать, потом искать хаки, коммент разработчика увидел и тоже подумал что возможно эта фишка уже сделана, но в админке чекбокса не нашел, а оказывается всетаки в коде надо добавить "!" :D
*

prezident

  • Осваиваюсь на форуме
  • 25
  • 0 / 0
Способ crashwork работает только если один уровень вложенности категорий.

Способ neogeek "вытягивает" товары из подкатегорий всех уровней вложенности.
*

hels

  • Захожу иногда
  • 205
  • 0 / 0
сделал как в моем предыдущем посту, только сейчас обнаружил что не работает фильтр по производителю, кто-то сталкивался? (только в конечной подкатегории он работает, а дальше нет.. просто выводится фраза "фильтр по производителю" глянул черед FireBug скрытого списка производителей там нет..)
*

hels

  • Захожу иногда
  • 205
  • 0 / 0
В этом случае походу вообще не нужны такие хаки. Самому вот понадобилось вывести товары из подкатегорий в VirtueMart 3.0.16.
Достаточно просто в этом месте:

Код
if ($virtuemart_category_id > 0) {
$joinCategory = TRUE;
if(true){
$where[] = ' `pc`.`virtuemart_category_id` = ' . $virtuemart_category_id;
} else {
/*GJC add subcat products*/
$catmodel = VmModel::getModel ('category');
$childcats = $catmodel->getChildCategoryList(1, $virtuemart_category_id,null, null, true);
$cats = $virtuemart_category_id;
foreach($childcats as $childcat){
$cats .= ','.$childcat->virtuemart_category_id;
}
$joinCategory = TRUE;
$where[] = ' `pc`.`virtuemart_category_id` IN ('.$cats.') ';
}

в операторе "if(true)" true заменить на false или !true, чтобы условие пошло по другой ветке. Там же комментарий самого разработчика присутствует: "/*GJC add subcat products*/"

если так сделать товары из подкатегорий выводятся в категориях, но не работает фильтр по производителю кто-то сталкивался?
*

6307007

  • Новичок
  • 2
  • 0 / 0
Ребят, а как можно модифицировать данный вывод и вывести по такому принципу

Название подкатегории
     Товар
     Товар
     Товар
     Товар

То есть например выводится

Спойлер
[свернуть]
Добрый день! Может кто нашел решение этой задачи. Мне также очень нужно, уже 2 месяца пытаюсь найти способ.
Только необходимо сделать вывод подкатегорий третьего уровня во второй, например:
Крепеж
- Анкерный крепеж
И при переходе в анкерный крепеж на странице отображалось :
 Анкер с кольцом
товар
товар
товар
 Анкер с гайкой
товар
товар
товар   и так далее
VirtueMart 2, Joomla 2.5
*

altayr

  • Новичок
  • 5
  • 1 / 0
начал читать сначала топика , изучил коды, нашел файлы, строки в коде и...
увидел что там передается условие в зависимости от некоего параметра, стал искать в настройках Virtuemart-a и оказалось все очень просто, не надо ничего программировать:
  • идем в меню и меняем галочку:

    VirtueMart -> Конфигурация -> Закладка "Внешний вид"
  • ищем поля
    "Show products of subcategories"
    "Показывает родительские товары без категорий в результате поиска и модулях"
  • ставим на них галочки.
  • Наслаждаемся.

« Последнее редактирование: 30.03.2018, 09:18:33 от altayr »
*

andrey222

  • Захожу иногда
  • 65
  • 0 / 1
altayr, вы упростили жизнь лишь тем, кто хочет видеть весь список товаров дочерних категорий в одном столбце.

А если нужно сделать, как хочет 6307007 и kira - этот метод не подходит. Как и все вышеуказанные хаки.

Мне тоже нужно, чтобы для каждой подкатегории товары выводились отдельными блоками, чтобы было сначало название данной подкатегории, а потом его товары. И всё на странице родительской категории.

Но ещё более важно, чтобы всё это быстро загружалось. А то даже вывод всех товаров дочерних категорий в одну колонку выдаёт очень долгую загрузку.
*

bren

  • Осваиваюсь на форуме
  • 11
  • 0 / 0
Решение для Joomla 3.4.1 + VirtueMart 3.0.6.4 аналогичное, даже короче немного.
Достаточно:
открыть -  /administrator/components/com_virtuemart/models/product.php
найти
Код
class VirtueMartModelProduct extends VmModel {
после этой строки добавить

Спасибо Большое. Решение работает от 2 до 3 версии Virtruemart.
*

bren

  • Осваиваюсь на форуме
  • 11
  • 0 / 0
altayr, вы упростили жизнь лишь тем, кто хочет видеть весь список товаров дочерних категорий в одном столбце.

А если нужно сделать, как хочет 6307007 и kira - этот метод не подходит. Как и все вышеуказанные хаки.

Мне тоже нужно, чтобы для каждой подкатегории товары выводились отдельными блоками, чтобы было сначало название данной подкатегории, а потом его товары. И всё на странице родительской категории.

Но ещё более важно, чтобы всё это быстро загружалось. А то даже вывод всех товаров дочерних категорий в одну колонку выдаёт очень долгую загрузку.
Тема создана было по другому, Вывести товары из подкатегории в категорию. Это и сделали, а то что вам нужно в другой теме, решение вопроса тоже есть.
*

Akeksandr

  • Захожу иногда
  • 396
  • 12 / 0
если так сделать товары из подкатегорий выводятся в категориях, но не работает фильтр по производителю кто-то сталкивался?
Решили вопрос по сортировке по Производителю? Тоже актуально. Работает только непосредственно в подкатегории с товаром.
*

andrey222

  • Захожу иногда
  • 65
  • 0 / 1
Тема создана было по другому, Вывести товары из подкатегории в категорию. Это и сделали, а то что вам нужно в другой теме, решение вопроса тоже есть.
подскажите, пожалуйста, ссылка на эту тему.
*

kreker92

  • Захожу иногда
  • 390
  • 18 / 0
Для VirtueMart 3.8.4

В настройках VirtueMart Настройки->Внешний вид. Ставим галочку "Показать продукты подкатегорий".
Это покажет товары из прямого потомка.

Чтобы показать товары из всех дальних потомков нужно править код.
Узнаём, что где ставили галочку имя настройки называется show_subcat_products.
Находим его здесь: administrator/components/com_virtuemart/models/product.php
Сделали мы это через команду в терминале (нужен терминал и SSH доступ) fgrep -lr show_subcat_products administrator/components/com_virtuemart

В файле находим строку:
Код
if(VmConfig::get('show_subcat_products',false)){

И правим код с вот этого:
Код
if(VmConfig::get('show_subcat_products',false)){
        /*GJC add subcat products*/
        $catmodel = VmModel::getModel ('category');
        $childcats = $catmodel->getChildCategoryList(1, $virtuemart_category_id,null, null, true);
        $cats = $virtuemart_category_id;
        foreach($childcats as $childcat){
                $cats .= ','.$childcat->virtuemart_category_id;
        }       
        $joinCategory = TRUE;
        $where[] = ' `pc`.`virtuemart_category_id` IN ('.$cats.') ';
} else {
        $where[] = ' `pc`.`virtuemart_category_id` = ' . $virtuemart_category_id;
}
На этот:
Код
if(VmConfig::get('show_subcat_products',false)){
        /*GJC add subcat products*/
        $catmodel = VmModel::getModel ('category');
        $childcats = $catmodel->getChildCategoryList(1, $virtuemart_category_id,null, null, true);
        $cats = $virtuemart_category_id;
        foreach($childcats as $childcat){
                $cats .= ','.$childcat->virtuemart_category_id;
        }       
        while(count($childcats) > 0) {
                $newchildcats = [];
                foreach($childcats as $childcat){
                        $newchildcats = array_merge($newchildcats, $catmodel->getChildCategoryList(1, $childcat->virtuemart_category_id,null, null, true));
                }       
                foreach($newchildcats as $childcat){
                        $cats .= ','.$childcat->virtuemart_category_id;
                }       
                $childcats = $newchildcats;
        }       
        $joinCategory = TRUE;
        $where[] = ' `pc`.`virtuemart_category_id` IN ('.$cats.') ';
} else {
        $where[] = ' `pc`.`virtuemart_category_id` = ' . $virtuemart_category_id;
}

Мы с вами успешно добавили рекурсивный цикл где идем по дереву категорий, начиная от первых потомков выбранной категории.  *DRINK*
Все вопросы и предложения на почту.
*

kisBoss

  • Захожу иногда
  • 449
  • 36 / 0
  • ник Tobol
Почему-то у меня не работает данный хак на последней версии компонента. Выдает 404 ошибку.
P.S. Сделал при помощи kreker92. Поменял чуть большую часть кода на
Код
     if ($this->product_parent_id) {
         $where[] = ' p.`product_parent_id` = ' . $this->product_parent_id;
         $virtuemart_category_id = false;
      }
      if (!empty($virtuemart_category_id )){
if( is_array($virtuemart_category_id)) {
$virtuemart_category_id = array_filter($virtuemart_category_id);
} else {
$virtuemart_category_id = array($virtuemart_category_id);
}
}
  if (!empty($virtuemart_category_id ))
      if ($virtuemart_category_id > 0) {
         $joinCategory = TRUE;
         if(VmConfig::get('show_subcat_products',false)){
            /*GJC add subcat products*/
           $catmodel = VmModel::getModel ('category');
$cats = '';
foreach($virtuemart_category_id as $catId){
$childcats = $catmodel->getChildCategoryList(1, $catId,null, null, true);
foreach($childcats as $k=>$childcat){
if(!empty($childcat->virtuemart_category_id)){
$cats .= $childcat->virtuemart_category_id .',';
}
}
$cats .= $catId;
}
            while(count($childcats) > 0) {
               $newchildcats = [];
               foreach($childcats as $childcat){
                  $newchildcats = array_merge($newchildcats, $catmodel->getChildCategoryList(1, $childcat->virtuemart_category_id,null, null, true));
               }
               foreach($newchildcats as $childcat){
                  $cats .= ','.$childcat->virtuemart_category_id;
               }
               $childcats = $newchildcats;
            }

            $joinCategory = TRUE;
            $where[] = ' `pc`.`virtuemart_category_id` IN ('.$cats.') ';
         } else {
            $where[] = ' `pc`.`virtuemart_category_id` = ' . $virtuemart_category_id;
         }
« Последнее редактирование: 10.03.2021, 21:02:46 от kisBoss »
Если помог - поставте "плюс". Вам ничего не стоит, а мне приятно.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Как вывести слово От рядом с ценой?

Автор art22

Ответов: 4
Просмотров: 1711
Последний ответ 07.04.2024, 11:19:12
от art22
Как сделать товары в 2 колонки в моб версии?

Автор art22

Ответов: 4
Просмотров: 2702
Последний ответ 06.12.2022, 11:42:56
от art22
Как пересохранить все товары?

Автор stydent

Ответов: 1
Просмотров: 3201
Последний ответ 30.03.2022, 10:38:06
от itpremium
mod_virtuemart_product - как скрыть товары, которых нет в наличии?

Автор alexfom_16

Ответов: 40
Просмотров: 6508
Последний ответ 11.10.2021, 17:50:38
от hmr
Приоритетный Itemid для формирования ссылок на товары/категории

Автор rsn

Ответов: 2
Просмотров: 823
Последний ответ 10.03.2020, 08:21:45
от rsn