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

RAZORG1991

  • Захожу иногда
  • 349
  • 6 / 0
Вирт на меня явно ополчился  >:(

Сайт saytostroy-test.besaba.com

Под меню находится модуль корзины (стандартный, немного приукрасил).
Теперь чудеса заключаются в следующем: при добавлении любого товара в корзину, товар там появляется (на данном этапе все норм). Рядышком с количеством товара есть картинка корзины. И вот после добавления хотя бы одного товара к корзину, вдруг картинка исчезает (как-будто на нее воздействует магия javascript, хотя им там даже и рядом не пахнет) и появляется (откудо-то crazy! ) div с классом container внутри дива с классом vm_cart_products. При перезагрузке страницы все вроде норм, но проходит секунда и снова картинка исчезает и появляется div.

Я немного изменял код стандартного модуля

Код
<?php // no direct access
defined('_JEXEC') or die('Restricted access');

//dump ($cart,'mod cart');
// AJAX is displayed in vm_cart_products
// ALL THE DISPLAY IS Done by AJAX using "hiddencontainer" ?>

<!-- VirtueMart 2 AJAX Card -->
<div class="vmCartModule <?php echo $params->get('moduleclass_sfx'); ?>" id="vmCartModule">
<?php
if ($show_product_list) {
?>
<div id="hiddencontainer" style=" display: none; ">
<div class="container">
<?php if ($show_price and $currencyDisplay->_priceConfig['salesPrice'][0]) { ?>
 <div class="prices" style="float: right;"></div>
<?php } ?>
<div class="product_row">
<span class="quantity"></span>&nbsp;x&nbsp;<span class="product_name"></span>
</div>

<div class="product_attributes"></div>
</div>
</div>
<div class="vm_cart_products">

<?php
foreach ($data->products as $product)
{
if ($show_price and $currencyDisplay->_priceConfig['salesPrice'][0]) { ?>
 <div class="prices" style="float: right;"><?php echo  $product['prices'] ?></div>
<?php } ?>
<div class="product_row">
<span class="quantity"><?php echo  $product['quantity'] ?></span>&nbsp;x&nbsp;<span class="product_name"><?php echo  $product['product_name'] ?></span>
</div>
<?php if ( !empty($product['product_attributes']) ) { ?>
<div class="product_attributes"><?php echo $product['product_attributes'] ?></div>

<?php }
}
?>
</div>
<?php } ?>
<?php if ($data->totalProduct and $show_price and $currencyDisplay->_priceConfig['salesPrice'][0]) { ?>
<div class="total" style="float: right;">
<?php echo $data->billTotal; ?>
</div>
<?php } ?>
<div class="total_products"><img src="templates/gigaspace/image/basket.png" width="36" height="37" /><?php echo  $data->totalProductTxt ?></div>
<div class="show_cart">
<?php if ($data->totalProduct and $show_price) echo  $data->cart_show; ?>
</div>
<div style="clear:both;"></div>

<noscript>
<?php echo JText::_('MOD_VIRTUEMART_CART_AJAX_CART_PLZ_JAVASCRIPT')?>
</noscript>
</div>


С такими чудесами я сталкиваюсь в первый раз!
*

Максим Пишняк

  • Давно я тут
  • 837
  • 35 / 0
Ваша версия? Работает ли все как надо без ваших изменений?
*

RAZORG1991

  • Захожу иногда
  • 349
  • 6 / 0
Ваша версия? Работает ли все как надо без ваших изменений?
Версия 2.0.22a
Ну стандартно все работает, я только и добавил картинку, в принципе все, цвета ссылок и уже непосредственно средствами CSS делал.
вот и все изменения
*

Максим Пишняк

  • Давно я тут
  • 837
  • 35 / 0
Я понял вас. У вас не совсем корректно ведет картинка корзины вставленная вами же. Вы не проверяли, может на форуме существует более четкий вариант того, что вы делаете?
*

RAZORG1991

  • Захожу иногда
  • 349
  • 6 / 0
В общем разобрался - это особенность модуля корзины VirtueMart, добавление товара происходит без обновления страницы, т.е. на js. Был немного глюк с div с классом container (накладывались стили бутстрап) их я в принципе пофиксил.
Так вот при добавлении товара js убирает названия товаров (и мою картинку), добавленных в корзину (потому как вирт о названиях товаров в корзине и соответственно модуль корзины, узнают только после перезагрузки страницы  ;D,  и после перезагрузки снова появляется список товаров и моя картинка), а сам js  меняет только кол-во товаров в корзине. Пипец конечно, но разработчики конечно лучше ничего не могли придумать :'(
Переписывать js добавления в корзину вообще не вариант, да и при обновлении слетать будит.
Поэтому пришлось оставить так (((
*

fsv

  • Moderator
  • 2782
  • 411 / 2
Вирт на меня явно ополчился  >:(
я только и добавил картинку, в принципе все,
У вас не совсем корректно ведет картинка корзины вставленная вами же.
Поэтому пришлось оставить так (((
И чего было не прислушаться?
Достаньте из div class="total_products" вашу картинку
Код
<img src="templates/gigaspace/image/basket.png" width="36" height="37" />
и поместите ее перед этим дивом в др.диве. И если захотите ему присвоить id, из VM только не заимствуйте названия селекторов.
Веб-разработка: заказ. Только новая разработка.
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Да уж, сами создаем проблемы, чтобы изучить и заодно ругать VM.
Не будь паразитом, сделай что-нибудь самостоятельно!
*

RAZORG1991

  • Захожу иногда
  • 349
  • 6 / 0
И чего было не прислушаться?
Достаньте из div class="total_products" вашу картинку
Код
<img src="templates/gigaspace/image/basket.png" width="36" height="37" />
и поместите ее перед этим дивом в др.диве. И если захотите ему присвоить id, из VM только не заимствуйте названия селекторов.

Поместил ее в отдельный div, все норм! Спасибо, наверное уже просто устал не совсем адекватно оцениваю ((((
Но все-равно, что ни говорите, а в VirtueMart косяков очень много
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Как сменить изображение стандартной кнопки(зеленой) добавления корзины?

Автор Дмитрий Ф.

Ответов: 13
Просмотров: 11453
Последний ответ 23.01.2020, 15:30:09
от Amikta
При смене позиции модуля корзины, не добавляется товар

Автор Dolphin4ik_1

Ответов: 1
Просмотров: 980
Последний ответ 28.12.2018, 20:22:03
от fsv
Появление корзины в докбаре

Автор Dolphin4ik_1

Ответов: 5
Просмотров: 956
Последний ответ 27.12.2018, 22:19:22
от Dolphin4ik_1
Появление корзины после добавления товара

Автор Dolphin4ik_1

Ответов: 1
Просмотров: 924
Последний ответ 27.12.2018, 19:27:50
от Dolphin4ik_1
Как убрать цену товара из корзины?

Автор sergspb

Ответов: 1
Просмотров: 1219
Последний ответ 06.03.2018, 11:40:47
от Ragivort