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

max_max

  • Осваиваюсь на форуме
  • 40
  • 0 / 0
Всем привет. Делаю импорт товаров в JoomShopping через модуль - Simple Import UTF8 (2.9.1). Это тот же самый Simple Import, но без декодировки UTF-8. Данный импорт работает хорошо, хоть и требует доработки "под себя", чем я и занимаюсь в данный момент. Все, что необходимо, я почти доработал, так же, необходимо сделать импорт изображений. Тут я застрял. Делаю вот такой код:

Код
product->set("image", $row[10]);

И изображения загружаются хорошо, но только в общий список товаров. Но если открыть характеристики любого товара и перейти во вкладку "Фото", то там будет пусто. Оба изображения во вложении этой темы.

Я пробовал и этот код:

Код
$product->set($lang->get("image"), ($row[10]));

Но это дает ошибку при импорте.

Подскажите, пожалуйста, как импортировать изображения так, что бы эти изображения отображались как в общем списке товаров, так и во вкладке "Фото" ?

Покупать дополнительные модули к плагину JoomShopping мы не можем, так как очень низкий бюджет у клиента.
Спасибо.

*

nevigen

  • Moderator
  • 10451
  • 863 / 25
  • http://n*****n.com
Re: Импорт изображения JoomShopping
« Ответ #1 : 20.07.2021, 21:11:52 »
разработка будет дороже :)
по сути вам надо просто пропускать через функцию ресайза самого ЖШ.
либо потом запускайте руками ресайзер от разрабов ЖШ. он бесплатный.
Профессиональные / Бесплатные решения для JoomShopping
Не лечи бесплатно, ибо тот, кто лечится бесплатно, рано или поздно перестает ценить свое здоровье,
а тот, кто лечит бесплатно, рано или поздно перестает ценить результаты своего труда/ (с) Гиппократ?
Не ищите ответов, ищите решение !
*

max_max

  • Осваиваюсь на форуме
  • 40
  • 0 / 0
Re: Импорт изображения JoomShopping
« Ответ #2 : 21.07.2021, 07:30:00 »
Спасибо за ответ.

Цитировать
по сути вам надо просто пропускать через функцию ресайза самого ЖШ.
А можно поподробнее, пж :)
*

nevigen

  • Moderator
  • 10451
  • 863 / 25
  • http://n*****n.com
Re: Импорт изображения JoomShopping
« Ответ #3 : 21.07.2021, 09:50:46 »
Спасибо за ответ.
А можно поподробнее, пж :)
в вашем случае проще скачать массовый ресайзер от разработчиков, и просто запускать его после импорта. можно в импорте автоматически запустить, можно руками после.
либо смотреть как сделано сохранение товара в админке там запускается ресайз.
Профессиональные / Бесплатные решения для JoomShopping
Не лечи бесплатно, ибо тот, кто лечится бесплатно, рано или поздно перестает ценить свое здоровье,
а тот, кто лечит бесплатно, рано или поздно перестает ценить результаты своего труда/ (с) Гиппократ?
Не ищите ответов, ищите решение !
*

max_max

  • Осваиваюсь на форуме
  • 40
  • 0 / 0
Re: Импорт изображения JoomShopping
« Ответ #4 : 21.07.2021, 10:44:51 »
Понял, спасибо. Позвольте небольшую наглость с моей стороны и задать еще один вопрос. Вот у меня есть категории товаров в JoomShopping, и я хочу, выводит их в виде списка-дерева. Я пробовал создавать пункт меню, и тип меню JoomShopping » Список категорий / Магазин. Все выводиться хорошо, НЕ НЕ в виде иерархии. Т.е. есть родительская категория, плюсуя по ней, открывается дочерняя - я хочу так. Скажите, если ли какой ни будь модуль бесплатный для этого дела. Во вложении скрин того, какое меню я хочу, основываясь на категориях товаров. Спасибо.
*

nevigen

  • Moderator
  • 10451
  • 863 / 25
  • http://n*****n.com
Re: Импорт изображения JoomShopping
« Ответ #5 : 21.07.2021, 10:51:49 »
Понял, спасибо. Позвольте небольшую наглость с моей стороны и задать еще один вопрос. Вот у меня есть категории товаров в JoomShopping, и я хочу, выводит их в виде списка-дерева. Я пробовал создавать пункт меню, и тип меню JoomShopping » Список категорий / Магазин. Все выводиться хорошо, НЕ НЕ в виде иерархии. Т.е. есть родительская категория, плюсуя по ней, открывается дочерняя - я хочу так. Скажите, если ли какой ни будь модуль бесплатный для этого дела. Во вложении скрин того, какое меню я хочу, основываясь на категориях товаров. Спасибо.
Модуль категорий + товары + аккордеон

прочтите правила форума. 1 тема -  1 вопрос.
тут обсуждаются изображения.
Профессиональные / Бесплатные решения для JoomShopping
Не лечи бесплатно, ибо тот, кто лечится бесплатно, рано или поздно перестает ценить свое здоровье,
а тот, кто лечит бесплатно, рано или поздно перестает ценить результаты своего труда/ (с) Гиппократ?
Не ищите ответов, ищите решение !
*

max_max

  • Осваиваюсь на форуме
  • 40
  • 0 / 0
Re: Импорт изображения JoomShopping
« Ответ #6 : 21.07.2021, 11:04:57 »
Спасибо большое. Учту.
*

nevigen

  • Moderator
  • 10451
  • 863 / 25
  • http://n*****n.com
Re: Импорт изображения JoomShopping
« Ответ #7 : 21.07.2021, 11:15:04 »
Спасибо большое. Учту.
также есть для быстрого создания меню. https://www.webdesigner-profi.de/joomla-webdesign/shop/addons/addon-menu-builder.html?lang=en
вы и сами могли его сделать просто надо было делать структуру категорий.
Профессиональные / Бесплатные решения для JoomShopping
Не лечи бесплатно, ибо тот, кто лечится бесплатно, рано или поздно перестает ценить свое здоровье,
а тот, кто лечит бесплатно, рано или поздно перестает ценить результаты своего труда/ (с) Гиппократ?
Не ищите ответов, ищите решение !
*

ExJTMaster

  • Осваиваюсь на форуме
  • 11
  • 3 / 0
Re: Импорт изображения JoomShopping
« Ответ #8 : 20.09.2021, 17:31:36 »
Если еще актуально по импорту изображений, то доработка стандартного импорта примерно так:
Код
<?php
jimport('joomla.filesystem.folder');
define( 'JPATH_COMPONENT_SITE', JPATH_BASE."/components/com_jshopping" );
require_once(JPATH_COMPONENT_SITE."/lib/image.lib.php");

function uploadImages($product_id, $name_image){               
    $jshopConfig = JSFactory::getConfig();
    $dispatcher = JDispatcher::getInstance();
    $app = JFactory::getApplication();
   
    $name_thumb = 'thumb_'.$name_image;
    $name_full = 'full_'.$name_image;
    @chmod($jshopConfig->image_product_path."/".$name_image, 0777);

    $path_image = $jshopConfig->image_product_path."/".$name_image;
    $path_thumb = $jshopConfig->image_product_path."/".$name_thumb;
    $path_full =  $jshopConfig->image_product_path."/".$name_full;
    rename($path_image, $path_full);   
    if ($jshopConfig->image_product_original_width || $jshopConfig->image_product_original_height){
        if (!ImageLib::resizeImageMagic($path_full, $jshopConfig->image_product_original_width, $jshopConfig->image_product_original_height, $jshopConfig->image_cut, $jshopConfig->image_fill, $path_full, $jshopConfig->image_quality, $jshopConfig->image_fill_color, $jshopConfig->image_interlace)){         
            JError::raiseWarning("",_JSHOP_ERROR_CREATE_THUMBAIL);
            saveToLog("error.log", "SaveProduct - Error create thumbail");
            $error = 1;
        }
    }
    $error = 0;
    $product_width_image = $jshopConfig->image_product_width;
    $product_height_image = $jshopConfig->image_product_height;
   
    if ($product_width_image || $product_height_image){
        if (!ImageLib::resizeImageMagic($path_full, $product_width_image, $product_height_image, $jshopConfig->image_cut, $jshopConfig->image_fill, $path_thumb, $jshopConfig->image_quality, $jshopConfig->image_fill_color, $jshopConfig->image_interlace)){
            JError::raiseWarning("",_JSHOP_ERROR_CREATE_THUMBAIL);
            saveToLog("error.log", "SaveProduct - Error create thumbail");
            $error = 1;
        }
        @chmod($path_thumb, 0777);
    }
    $product_full_width_image = $jshopConfig->image_product_full_width;
    $product_full_height_image = $jshopConfig->image_product_full_height;
    if ($product_full_width_image || $product_full_height_image){
        if (!ImageLib::resizeImageMagic($path_full, $product_full_width_image, $product_full_height_image, $jshopConfig->image_cut, $jshopConfig->image_fill, $path_image, $jshopConfig->image_quality, $jshopConfig->image_fill_color, $jshopConfig->image_interlace)){
            JError::raiseWarning("",_JSHOP_ERROR_CREATE_THUMBAIL);
            $error = 1;
        }
        @chmod($path_image, 0777);
    }       
   
    if (!$error){           
        $image = JSFactory::getTable('image', 'jshop');
        $image->set("image_id", 0);
        $image->set("product_id", $product_id);
        $image->set("image_name", $name_image);
        $image->set("name", "");
        $image->set("ordering", $image->getNextOrder("product_id='".intval($product_id)."'"));
        $image->store();       
    }               
   
}

function save(){
...

    // Добавить цикл, если картинок несколько
    $image_src = 'Путь к картинке';
    $info = new SplFileInfo($image_src);
    $image_dest = md5(uniqid()). "." . $info->getExtension(); // переименование картинки, если не нужно, то  $image_dest = $image_src;
    if (file_exists($image_src) && copy($image_src, $jshopConfig->image_product_path."/".$image_dest)){
        $this->uploadImages($product_id, $image_dest);
        $product->image = $image_dest;
        $product->store();
    }
...

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

Плагин уведомлений о заказах в телеграмм для JoomShopping

Автор thevaca

Ответов: 0
Просмотров: 84
Последний ответ 10.11.2025, 14:11:40
от thevaca
WT JoomShopping Favorite - кнопки избранного в категории товаров и карточке тов

Автор sergeytolkachyov

Ответов: 26
Просмотров: 35995
Последний ответ 14.10.2025, 12:54:56
от sergeytolkachyov
Не работает lightbox в JoomShopping

Автор d13v555

Ответов: 6
Просмотров: 1311
Последний ответ 08.10.2025, 15:34:46
от kit2m2
Атрибуты полей при оформлении заказа в JoomShopping

Автор goga_pgasovav

Ответов: 1
Просмотров: 765
Последний ответ 12.08.2025, 11:21:29
от kit2m2
Конфликт js шаблонов JoomShaper helix3 J5 с JoomShopping 5

Автор heartlink

Ответов: 6
Просмотров: 1536
Последний ответ 22.07.2025, 12:40:12
от heartlink