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

Stasweb

  • Завсегдатай
  • 1501
  • 24 / 0
Не срабатывают карты
« : 22.01.2021, 07:40:00 »
Доброго времени суток форумчане! Подскажите пожалуйста, не могу разобраться почему не срабатывают карты. Вот примеры:  Категория _https://lik-astana.kz/poligrafiya.html - карта работает  Категория второго уровня _https://lik-astana.kz/poligrafiya/plastikovye-karty.html - карта работает   Карточка продукции _https://lik-astana.kz/poligrafiya/plastikovye-karty/diskontnye-karty-detail.html - карта не работает  Карты находятся в нижней части контактов. Подскажите пожалуйста с чем это может связанно.
*

beliyadm

  • Легенда
  • 9758
  • 1665 / 66
  • Севастополь, Россия
Re: Не срабатывают карты
« Ответ #1 : 22.01.2021, 18:38:58 »
Какие карты, что значит "не срабатывают"? Я зашел по ссылкам, вообще никаких карт не увидел в подвале.
Нужно больше информации
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

Stasweb

  • Завсегдатай
  • 1501
  • 24 / 0
Re: Не срабатывают карты
« Ответ #2 : 23.01.2021, 06:23:03 »
Какие карты, что значит "не срабатывают"? Я зашел по ссылкам, вообще никаких карт не увидел в подвале. Нужно больше информации
Вот товар _https://lik-astana.kz/bagetnaya-masterskaya/oformlenie-v-baget/izgotovlenie-ram-dlya-kartin-detail.html в низу 3 карты (на скрине видно). В категориях эти карты работают а вот в товаре не работают.
*

beliyadm

  • Легенда
  • 9758
  • 1665 / 66
  • Севастополь, Россия
Re: Не срабатывают карты
« Ответ #3 : 23.01.2021, 16:34:10 »
Для начала я бы отключил сжатие скриптов, чтобы посмотреть нормально что там грузится. Поскольку это явный конфликт JS, консоль выдает что $(...).offset() is undefined, возможно что на этой странице не подключен jquery nonconflict (поскольку большинство кода вызывается через jQuery а не через $

А в сжатом коде разбираться то еще удовольствие

P.S. скорее всего так и есть, запустил простейший клик через нативный объект квери и получил ошибку
Код
$('.item').on('click', function(e) {
alert('123');
});
Запустил через ноконфликт - сработало, значит переписать JS нужно
Код
jQuery('.item').on('click', function(e) {
alert('123');
});
Вот так работает
« Последнее редактирование: 23.01.2021, 16:43:01 от beliyadm »
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

Stasweb

  • Завсегдатай
  • 1501
  • 24 / 0
Re: Не срабатывают карты
« Ответ #4 : 23.01.2021, 17:29:45 »
Я так понимаю за открытие отвечает скрипт
Код
<script>
(function ($) {
     var jump = function (e) {
         if (e) {
             e.preventDefault();
             var target = $(this).attr("href");
         } else {
             var target = location.hash;
         }
         $('html,body').animate({
             scrollTop: $(target).offset().top
         }, 1000, function () {
             location.hash = target;
         });
     }
     $('html, body').hide();
     $(document).ready(function () {
         $('a[href^=#contact]').bind("click", jump);
         if (location.hash) {
             setTimeout(function () {
                 $('html, body').scrollTop(0).show()
                 jump();
             }, 0);
         } else {
             $('html, body').show();
         }
     });
 })(jQuery)
</script>
Сжатие отключил
*

beliyadm

  • Легенда
  • 9758
  • 1665 / 66
  • Севастополь, Россия
Re: Не срабатывают карты
« Ответ #5 : 23.01.2021, 17:33:02 »
Заменить $ на jQuery и проверить
« Последнее редактирование: 23.01.2021, 17:47:50 от beliyadm »
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

Stasweb

  • Завсегдатай
  • 1501
  • 24 / 0
Re: Не срабатывают карты
« Ответ #6 : 25.01.2021, 06:17:01 »
Заменил
Код
(function (jQuery) {
     var jump = function (e) {
         if (e) {
             e.preventDefault();
             var target = $(this).attr("href");
         } else {
             var target = location.hash;
         }
         jQuery('html,body').animate({
             scrollTop: jQuery (target).offset().top
         }, 1000, function () {
             location.hash = target;
         });
     }
     jQuery('html, body').hide();
     jQuery(document).ready(function () {
         jQuery('a[href^=#contact]').bind("click", jump);
         if (location.hash) {
             setTimeout(function () {
                 jQuery('html, body').scrollTop(0).show()
                 jump();
             }, 0);
         } else {
            jQuery('html, body').show();
         }
     });
 })(jQuery)
Не помогает
*

fbr

  • Завсегдатай
  • 1681
  • 210 / 7
Re: Не срабатывают карты
« Ответ #7 : 25.01.2021, 09:24:22 »
А это?
var target = $(this).attr("href");
*

Stasweb

  • Завсегдатай
  • 1501
  • 24 / 0
Re: Не срабатывают карты
« Ответ #8 : 25.01.2021, 09:45:36 »
var target = $(this).attr("href");
Все ровно не работает
Код
(function (jQuery) {
         var jump = function (e) {
             var target = location.hash;
             if (e) {
                 e.preventDefault();
                 target = jQuery(this).attr("href");
             };
           if(!jQuery(target).length) return;
             jQuery('html,body').animate({
                 scrollTop: jQuery (target).offset().top
             }, 1000, function () {
                 location.hash = target;
             });
         }
         jQuery('html, body').hide();
         jQuery(document).ready(function () {
             jQuery('a[href^=#contact]').on("click", jump);
             if (location.hash) {
                 setTimeout(function () {
                     jQuery('html, body').scrollTop(0).show()
                     jump();
                 }, 0);
             } else {
                jQuery('html, body').show();
             }
         });
     })(jQuery)
*

draff

  • Гуру
  • 5801
  • 434 / 7
  • ищу работу
Re: Не срабатывают карты
« Ответ #9 : 25.01.2021, 10:15:39 »
Код
 jQuery('a[href^=#contact]').each(function() {
     jQuery(this).on("click", jump);
});
« Последнее редактирование: 25.01.2021, 10:29:18 от draff »
*

Stasweb

  • Завсегдатай
  • 1501
  • 24 / 0
Re: Не срабатывают карты
« Ответ #10 : 25.01.2021, 11:33:21 »
Тоже не работает
Код
(function (jQuery) {
         var jump = function (e) {
             var target = location.hash;
             if (e) {
                 e.preventDefault();
                 target = jQuery(this).attr("href");
             };
           if(!jQuery(target).length) return;
             jQuery('html,body').animate({
                 scrollTop: jQuery (target).offset().top
             }, 1000, function () {
                 location.hash = target;
             });
         }
         jQuery('html, body').hide();
         jQuery(document).ready(function () {
            /* jQuery('a[href^=#contact]').on("click", jump);*/
            jQuery('a[href^=#contact]').each(function() {
                jQuery(this).on("click", jump);
                      });
             if (location.hash) {
                 setTimeout(function () {
                     jQuery('html, body').scrollTop(0).show()
                     jump();
                 }, 0);
             } else {
                jQuery('html, body').show();
             }
         });
     })(jQuery)
может дело вообще не в этом скрипте
*

beliyadm

  • Легенда
  • 9758
  • 1665 / 66
  • Севастополь, Россия
Re: Не срабатывают карты
« Ответ #11 : 25.01.2021, 17:14:05 »
Код
scrollTop: jQuery (target).offset().top
Пробел не нужен
Код
scrollTop: jQuery(target).offset().top
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться