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

d0ublezer0

  • Захожу иногда
  • 356
  • 31 / 0
  • Javaхарлал Неру
Логика работы VirtueMart 2 такова, что метод доставки выбирается автоматически только в том случае, если он всего один.

Если у вас настроено несколько методов доставки, то ни один из них не будет выбран автоматически.
Это значит, что настройка "метода доставки по умолчанию" не предусмотрена  (о чем свидетельствует кол-во вопросов на эту тему на форуме разработчиков)

Для того чтобы исправить эту ситуацию, я разработал такой хак:

Нужно изменить файл components\com_virtuemart\helpers\cart.php
Найдите в нем функцию CheckAutomaticSelectedShipment и в конце этой функции найдите такие строки:
Код
$this->automaticSelectedShipment=false;
$this->setCartIntoSession();
return false;
и прямо перед ними вставьте этот код:
Код
                $preferred_shipment=0; // тут можно поставить любой ID метода доставки, который вы бы хотели использовать по умолчанию
                if ($preferred_shipment==0){ // не используется, если уже определен "ID доставки по умолчанию" на строчке выше
                    if (!class_exists('VirtueMartModelShipmentmethod'))
                        require(JPATH_VM_ADMINISTRATOR.DS.'models'.DS.'shipmentmethod.php');
                    $myship= new VirtueMartModelShipmentmethod;
                    $shipments=$myship->getShipments();
                    if ($shipments){
                        $preferred_shipment = intval($shipments[0]->virtuemart_shipmentmethod_id);  
                    }
                }
                if ($this->virtuemart_shipmentmethod_id==0) {
                    $this->virtuemart_shipmentmethod_id=$preferred_shipment;
                    $virtuemart_shipmentmethod_id=$preferred_shipment;}

Смысл исправления: если в коде не выбран метод доставки по умолчанию, то будет выбран первый попавшийся из доступного списка настроенных методов в админке. При этом у посетителя сохраняется возможность поменять способ доставки на любой другой доступный.

Есть файл administrator\components\com_virtuemart\helpers\calculationh.php, в нем также нужно изменить одну строчку.
Найти (у меня на 968 строке):
Код
if ($automaticSelectedShipment) $ship_id=$cart->virtuemart_shipmentmethod_id;
И поменять на:
Код
$ship_id=$cart->virtuemart_shipmentmethod_id;

В чем смысл этого исправления: хелпер проверяет, был ли автоматически выбран ID метода доставки. Функция определения возвращает отрицательный результат (это нужно для того, чтобы сохранить возможность выбора другого способа доставки). И хелпер, не ожидая, что ему вернут готовый ID (как сделали разработчики), на этом останавливается, предоставляя пользователю самому выбрать доставку.

Изменение кода убирает проверку условия "на автоматизм", потому что в нашем случае ID будет передан в любом случае (если у вас конечно настроены методы доставки в админке).

Код не претендует на гениальность, проверялся на VM 2.0.7

Хочу отметить, что раз это хак ядра, то имейте ввиду, что с большой вероятностью он при следующем обновлении затрется.
Однако, другого решения пока видимо не существует.
« Последнее редактирование: 05.05.2012, 10:02:43 от d0ublezer0 »
Я помог вам? Ткните в карму.
*

d0ublezer0

  • Захожу иногда
  • 356
  • 31 / 0
  • Javaхарлал Неру
Re: VM2 Метод доставки "по умолчанию"
« Ответ #1 : 05.05.2012, 08:50:54 »
Нашел косяк один - автовыбор срабатывает только при втором входе в корзину. Видимо инициализация происходит раньше, чем вызывается CheckAutomaticSelectedShipment. Поищу дальше.
Я помог вам? Ткните в карму.
*

d0ublezer0

  • Захожу иногда
  • 356
  • 31 / 0
  • Javaхарлал Неру
Re: VM2 Метод доставки "по умолчанию"
« Ответ #2 : 05.05.2012, 09:36:12 »
Похоже нашел.
Есть файл administrator\components\com_virtuemart\helpers\calculationh.php, в нем также нужно изменить одну строчку.
Найти (у меня на 968 строке):
Код
if ($automaticSelectedShipment) $ship_id=$cart->virtuemart_shipmentmethod_id;
И поменять на:
Код
$ship_id=$cart->virtuemart_shipmentmethod_id;

В чем смысл: хелпер проверяет, был ли автоматически выбран ID метода доставки. Функция определения возвращает отрицательный результат (это нужно для того, чтобы сохранить возможность выбора другого способа доставки). И хелпер, не ожидая, что ему вернут готовый ID (как сделали разработчики), на этом останавливается, предоставляя пользователю самому выбрать доставку.
Изменение кода убирает проверку условия "на автоматизм", потому что в нашем случае ID будет передан в любом случае (если у вас конечно настроены методы доставки в админке).

P.S. Дополнил код в первом сообщении.
Я помог вам? Ткните в карму.
*

Polosat

  • Захожу иногда
  • 202
  • 7 / 0
  • Мечты - это то, из чего сделано будущее
Отличное решение - рабочее. А то же самое для "оплаты по умолчанию" можно сообразить?
*

xilgiz

  • Захожу иногда
  • 129
  • 1 / 0
Что-то сделал все по инструкции - никаких изменений... VirtueMart 2.0.6
*

lakshmi

  • Захожу иногда
  • 188
  • 5 / 0
Да для доставки это супер ^-^
Отличное решение - рабочее. А то же самое для "оплаты по умолчанию" можно сообразить?
присоединяюсь ;D
*

jenya

  • Новичок
  • 1
  • 0 / 0
Цитировать
Что-то сделал все по инструкции - никаких изменений... VirtueMart 2.0.6

та же фигня....
*

d0ublezer0

  • Захожу иногда
  • 356
  • 31 / 0
  • Javaхарлал Неру
Похоже, у новых версий VM немного изменился механизм выбора.
Если уж у вас что-то не работает, описывайте полностью, что вы делали, сколько у вас способов доставки, как они настроены, какая версия компонента и т.д.
"У меня не работает" - это не описание проблемы. "А у меня - работает" - так хочется ответить на поставленную задачу.
Я помог вам? Ткните в карму.
*

d0ublezer0

  • Захожу иногда
  • 356
  • 31 / 0
  • Javaхарлал Неру
Кстати, решение для вариантов оплаты уже сделали по моей схеме.
В той же теме в последнем сообщении описано изменение по доставке для 2.0.6
Для тех, кто английский язык ну совсем никак не понимает, придумали такой вариант.

А то у меня всё руки не доходили проверить на новых версиях.
« Последнее редактирование: 04.08.2012, 14:50:23 от d0ublezer0 »
Я помог вам? Ткните в карму.
*

mumins

  • Осваиваюсь на форуме
  • 24
  • 5 / 0
Чорд, search однозначно рулит, но субота все  же, неварит котелок...
Кстате - употребляющие 2.0.6 - смотрите на последнее сообщение в той ветке.

d0ublezer0 - большое вам спасибо.

Братья меншие ;>
*

aixman

  • Захожу иногда
  • 67
  • 4 / 0
RE: VM2 Метод доставки "по умолчанию"
« Ответ #10 : 29.05.2013, 17:07:45 »
Было бы замечательно, если вообще не давать дальше двигаться покупателю пока не выбран способ доставки и оплаты.
Странно почему это не сделано по умолчанию в самом VM2

Если у кого есть подходящие хаки и решения! Прошу помощи!
*

d0ublezer0

  • Захожу иногда
  • 356
  • 31 / 0
  • Javaхарлал Неру
RE: VM2 Метод доставки "по умолчанию"
« Ответ #11 : 30.05.2013, 11:01:32 »
Было бы замечательно, если вообще не давать дальше двигаться покупателю пока не выбран способ доставки и оплаты.
А разве по умолчанию не так? Без выбранных способов оплаты и доставки вы не разместите заказ.
Я помог вам? Ткните в карму.
*

aixman

  • Захожу иногда
  • 67
  • 4 / 0
RE: VM2 Метод доставки "по умолчанию"
« Ответ #12 : 30.05.2013, 12:54:23 »
Ох, и тупанул я ((
d0ublezer0 ты прав. Спасибо, что открыл мне глаза ))
*

SibPromEnergo

  • Осваиваюсь на форуме
  • 25
  • 1 / 0
RE: VM2 Метод доставки "по умолчанию"
« Ответ #13 : 14.01.2014, 14:30:54 »
2.0.22 - не помогло.
Что странно, метод доставки не выбирается автоматически, даже когда стоит галочка автоматически выбирать метод доставки и он лишь один - почта России. Стоит плагин расчета доставки почтой, может в нем проблема?
*

Lann

  • Захожу иногда
  • 133
  • 5 / 1
Re: VM2 Метод доставки "по умолчанию"
« Ответ #14 : 05.02.2014, 11:53:36 »
Добрый день! В VM 2.0.26 в файле administrator\components\com_virtuemart\helpers\calculationh.php нет указанной строки :(

На самом деле интересует почему у меня при повторном заходе в корзину пропадает выбор способов доставки? (подробно проблема описана тут http://joomlaforum.ru/index.php/topic,287776.new.htm)
« Последнее редактирование: 05.02.2014, 12:37:07 от Lann »
*

Amatoravg

  • Осваиваюсь на форуме
  • 20
  • 1 / 0
Re: VM2 Метод доставки "по умолчанию"
« Ответ #15 : 15.03.2015, 19:12:02 »
Решение нерабочее. Ибо нет возможности изменить выбранный по умолчанию способ доставки/оплаты.
Нашел способ, как сделать все красиво и изящно.

components\com_virtuemart\helpers\cart.php - оставляем все как было по умолчанию, ничего в этом файле менять не надо.

administrator\components\com_virtuemart\helpers\calculationh.php :

в функции calculateShipmentPrice перед строкой:

if (empty($cart->virtuemart_shipmentmethod_id)) return;

добавляем строку:

if (empty($cart->virtuemart_shipmentmethod_id)) $cart->virtuemart_shipmentmethod_id = 1;

Я поставил 1, у вас может быть нужный вам ID.

Аналогично с функцией calculatePaymentPrice:

//+Аматор
if (empty($cart->virtuemart_paymentmethod_id)) $cart->virtuemart_paymentmethod_id = 2;
//-Аматор

if (empty($cart->virtuemart_paymentmethod_id)) return;

Проверена на VM 2.0.24
« Последнее редактирование: 15.03.2015, 19:15:12 от Amatoravg »
*

roggi-y

  • Новичок
  • 5
  • 0 / 0
VM3 в корзине, в списке способов доставки по умолчанию ставится последний, хотелось бы первый сделать. Может кто подскажет где поправить?
« Последнее редактирование: 15.11.2017, 16:32:26 от roggi-y »
*

nden

  • Осваиваюсь на форуме
  • 37
  • 5 / 0
VM3 в корзине, в списке способов доставки по умолчанию ставится последний, хотелось бы первый сделать. Может кто подскажет где поправить?

Настройки- Оформление заказа-Включить автоматический выбор способа доставки
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

[Решено] Если товар уже есть вкорзине изменить кнопку "Добавить в корзину"

Автор x-render

Ответов: 26
Просмотров: 12433
Последний ответ 26.11.2022, 22:38:11
от SolopoV
[Решено] Список товаров на главной VirtueMart

Автор vitoxa_ya

Ответов: 6
Просмотров: 10609
Последний ответ 21.10.2020, 23:27:08
от alfa212
Сортировка в VirtueMart 2 по умолчанию, по наличию товаров и по цене

Автор vfxbro

Ответов: 7
Просмотров: 4070
Последний ответ 27.04.2019, 09:51:05
от rsn
Товар в модуле корзины по умолчанию VirtueMart 3

Автор vladsklyar

Ответов: 1
Просмотров: 1152
Последний ответ 02.03.2018, 21:10:30
от vladsklyar
Решено: При расчете стоимости товара учитывать только самую большую скидку

Автор sergemak

Ответов: 1
Просмотров: 1026
Последний ответ 08.11.2017, 11:46:11
от sergemak