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

st_jimmy96

  • Осваиваюсь на форуме
  • 47
  • 5 / 0
Больше года я не пользовался ВиртуМартом и тут приспичило. Какой все-даки он ущербный... Ну да ладно не об этом.
Меня всегда напрягал способ изменения количества товара, при оформлении, в корзине. Это ж как не удобно надо сначала ввести количество, а потом кнопку жать.
Решил проблему по своему:
идем в components\com_virtuemart\views\cart\tmpl\default_pricelist.php
Ищем там:
Код
<input type="text"
   onblur="Virtuemart.checkQuantity(this,<?php echo $step?>,'<?php echo vmText::_ ('COM_VIRTUEMART_WRONG_AMOUNT_ADDED')?>');"
   onclick="Virtuemart.checkQuantity(this,<?php echo $step?>,'<?php echo vmText::_ ('COM_VIRTUEMART_WRONG_AMOUNT_ADDED')?>');"
   onchange="Virtuemart.checkQuantity(this,<?php echo $step?>,'<?php echo vmText::_ ('COM_VIRTUEMART_WRONG_AMOUNT_ADDED')?>');"
   onsubmit="Virtuemart.checkQuantity(this,<?php echo $step?>,'<?php echo vmText::_ ('COM_VIRTUEMART_WRONG_AMOUNT_ADDED')?>');"
   title="<?php echo  vmText::_('COM_VIRTUEMART_CART_UPDATE')?>" class="quantity-input js-recalculate" size="3" maxlength="4" name="quantity[<?php echo $pkey; ?>]" value="<?php echo $prow->quantity ?>" />
Дописываем перед ним: <span class="plusminus"><a class="prplus">+</a>
после него: <a class="prminus">-</a>
И после кнопок:
<button type="submit" class="vmicon vm2-add_quantity_cart" name="updatecart.<?php echo $pkey ?>" title="<?php echo  vmText::_ ('COM_VIRTUEMART_CART_UPDATE')?>" />
<button type="submit" class="vmicon vm2-remove_from_cart" name="delete.<?php echo $pkey ?>" title="<?php echo vmText::_ ('COM_VIRTUEMART_CART_DELETE')?>" />
Закрываем наш спан: </span>
Далее в удобном месте шаблона прописываем код:
Код
	$(function(){
$('a.prminus').click(function() {
var $input = $(this).parent(this).children("input");
var count = parseInt($input.val()) - 1;
$(this).parent(this).children("input").val(count);
$(this).parent(this).children(".vm2-add_quantity_cart").click();
});
$('a.prplus').click(function() {
var $input = $(this).parent(this).children("input");
var count = parseInt($input.val()) + 1;
$(this).parent(this).children("input").val(count);
$(this).parent(this).children(".vm2-add_quantity_cart").click();
});
});
CSSом допиливаем по своему усмотрению.
*

fsv

  • Moderator
  • 2782
  • 411 / 2
Так вы при нажатии на "-" загоните значение количества в "меньше нуля". Дописать проверку на ноль надо.
И вы же переменной присвоили значение - "какой-то инпут". Используйте переменную, зачем еще раз тот же элемент искать в DOM?
Веб-разработка: заказ. Только новая разработка.
*

st_jimmy96

  • Осваиваюсь на форуме
  • 47
  • 5 / 0
Действительно скрипт можно поправить. На счет проверки на ноль - нет необходимости, при значении меньше 1, товар удаляется из корзины. :)
*

fsv

  • Moderator
  • 2782
  • 411 / 2
На счет проверки на ноль - нет необходимости, при значении меньше 1, товар удаляется из корзины.
Вот так юзер решит почпокать кнопочками, разгонится и промажет, товар удалится, ему расстройство и закрытие вкладки вашего сайта, вам не полученная прибыль. Проверка на ">=1", удаляет (если захочет) кнопкой.
Веб-разработка: заказ. Только новая разработка.
*

lalalag

  • Захожу иногда
  • 162
  • 0 / 3
Далее в удобном месте шаблона прописываем код:
Код
	$(function(){
$('a.prminus').click(function() {
var $input = $(this).parent(this).children("input");
var count = parseInt($input.val()) - 1;
$(this).parent(this).children("input").val(count);
$(this).parent(this).children(".vm2-add_quantity_cart").click();
});
$('a.prplus').click(function() {
var $input = $(this).parent(this).children("input");
var count = parseInt($input.val()) + 1;
$(this).parent(this).children("input").val(count);
$(this).parent(this).children(".vm2-add_quantity_cart").click();
});
});
CSSом допиливаем по своему усмотрению.

Подскажите пож-та. где именно надо прописывать.
Вписал после span - не работает.
*

st_jimmy96

  • Осваиваюсь на форуме
  • 47
  • 5 / 0
Перед кодом напишите <script> а после </script> и будет счастье
*

lalalag

  • Захожу иногда
  • 162
  • 0 / 3
сделал. и ничего не работает
*

st_jimmy96

  • Осваиваюсь на форуме
  • 47
  • 5 / 0
Вставлять скрипт нужно перед <span>
Попробуйте вставить в шапку (<head></head>). Проверьте подключен ли у Вас jquery
*

lalalag

  • Захожу иногда
  • 162
  • 0 / 3
Вставлять скрипт нужно перед <span>
Попробуйте вставить в шапку (<head></head>). Проверьте подключен ли у Вас jquery
прописал в head. jquery прописал.
udodobno.ru - вот тут на сайте посмотрите пож-та.
*

st_jimmy96

  • Осваиваюсь на форуме
  • 47
  • 5 / 0
Все дело в том, что Вы вставили код ДО подключения JQuery. Переместите кусок кода в конец поля head
*

st_jimmy96

  • Осваиваюсь на форуме
  • 47
  • 5 / 0
Должен заметить, этот скрипт может менять количество товара на 1 единицу. К примеру у Вас задан шаг 500шт.. Я бы переделал это таким образом:
заказ 1 упаковка = 500шт. Минимальный заказ 4 упаковки.
*

lalalag

  • Захожу иногда
  • 162
  • 0 / 3
Все дело в том, что Вы вставили код ДО подключения JQuery. Переместите кусок кода в конец поля head
Поставил. и ничего не изменилось.
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Поставил. и ничего не изменилось.
Не удивительно, у вас же другой шаблон.
Код: javascript
$(function(){
$('.quantity-plus,.quantity-minus').on('click',function() {
var
signs={'quantity-plus':1,'quantity-minus':-1},
            el=$(this).parent().prev().find('.quantity-input'),
            step=el.attr('step') || 1,
cls=$(this).attr('class'),
cl=cls.substring(cls.indexOf(' ')).trim(),
val=parseInt(el.val())+signs[cl]*step
;
val=val<step?step:val;
el.val(val);
});
});
http://jsfiddle.net/n_robert/uyqh8j9a
st_jimmy96, что за "parent(this)"?
« Последнее редактирование: 29.10.2015, 13:44:57 от robert »
Не будь паразитом, сделай что-нибудь самостоятельно!
*

lalalag

  • Захожу иногда
  • 162
  • 0 / 3
Не удивительно, у вас же другой шаблон.
Код: javascript
$(function(){
$('.quantity-plus,.quantity-minus').on('click',function() {
var
signs={'quantity-plus':1,'quantity-minus':-1},
el=$(this).parent().prev().find('.quantity-input'),
cls=$(this).attr('class'),
cl=cls.substring(cls.indexOf(' ')).trim(),
val=parseInt(el.val())+signs[cl]
;
val=val<0?0:val;
el.val(val);
});
});
http://jsfiddle.net/n_robert/uyqh8j9a
st_jimmy96, что за "parent(this)"?

Все прописал опять же. И не работают кнопки. Может потому что в вашем случае шаг в 1 ед товара. а у меня настроены другие?
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Добавил учет шага.
Мой пример взят из вашего кода, и он работает.
Попробуйте заменить "$" на "jQuery".

P.S. Только сейчас заметил: у вас и так уже все работает, зачем еще что-то менять?
« Последнее редактирование: 29.10.2015, 13:42:40 от robert »
Не будь паразитом, сделай что-нибудь самостоятельно!
*

lalalag

  • Захожу иногда
  • 162
  • 0 / 3
Добавил учет шага.
Мой пример взят из вашего кода, и он работает.
Попробуйте заменить "$" на "jQuery".

P.S. Только сейчас заметил: у вас и так уже все работает, зачем еще что-то менять?

Вы в корзине это смотрите ?
Потому что у меня не работает
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Вы в корзине это смотрите ?
Нет, не в корзине :(.
Исправил:
Код: javascript
$(function(){
$('.quantity-plus,.quantity-minus').on('click',function() {
var
signs={'quantity-plus':1,'quantity-minus':-1},
el=$(this).parent().prev('.quantity-input'),
step=parseInt(el.attr('onblur').replace(/[^\d]/g,'')) || 1,
cls=$(this).attr('class'),
cl=cls.substring(cls.indexOf(' ')).trim(),
val=parseInt(el.val())+signs[cl]*step
;
val=val<step?step:val;
el.val(val);
$(this).parent().nextAll('span').filter('.vm2-add_quantity_cart').first().click();
});
});
« Последнее редактирование: 29.10.2015, 15:19:16 от robert »
Не будь паразитом, сделай что-нибудь самостоятельно!
*

lalalag

  • Захожу иногда
  • 162
  • 0 / 3
Нет, не в корзине :(.
Исправил:
Код: javascript
$(function(){
$('.quantity-plus,.quantity-minus').on('click',function() {
var
signs={'quantity-plus':1,'quantity-minus':-1},
el=$(this).parent().prev('.quantity-input'),
step=parseInt(el.attr('onblur').replace(/[^\d]/g,'')) || 1,
cls=$(this).attr('class'),
cl=cls.substring(cls.indexOf(' ')).trim(),
val=parseInt(el.val())+signs[cl]*step
;
val=val<step?step:val;
el.val(val);
$('#checkoutForm').submit();
});
});

а проблема как раз с изменением количества в корзине)
этот скрипт прописал. и не работает (
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Чуть-чуть изменил последнюю строку.
Пример работает, у вас, видимо конфликт скриптов.
Не будь паразитом, сделай что-нибудь самостоятельно!
*

lalalag

  • Захожу иногда
  • 162
  • 0 / 3
Чуть-чуть изменил последнюю строку.
Пример работает, у вас, видимо конфликт скриптов.

не могли бы вы посмотреть на сайте в чем проблема? плз. можно по скапу связаться с вами. за оплату допилить эту мелочь?
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Не открываются некоторые карточки товаров

Автор Vatag

Ответов: 5
Просмотров: 4175
Последний ответ 04.12.2022, 13:26:04
от Evgen Kulibin
Вывод всех товаров на Главную

Автор Akeksandr

Ответов: 1
Просмотров: 2738
Последний ответ 28.12.2021, 14:48:23
от Akeksandr
Вывод модуля рекомендуемых товаров

Автор sergspb

Ответов: 0
Просмотров: 2736
Последний ответ 06.11.2020, 09:59:01
от sergspb
Как убрать показ дополнительного изображения в категории товаров?

Автор ElenaNova

Ответов: 0
Просмотров: 2903
Последний ответ 22.04.2020, 13:13:27
от ElenaNova
Вывод краткого описания товара в корзине

Автор PavelK

Ответов: 2
Просмотров: 3191
Последний ответ 04.04.2020, 16:34:10
от PavelK