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

pavelrer

  • Давно я тут
  • 615
  • 10 / 2
Доброго!

Рубяты подмогите пожалуйста.
Задача такая есть магаз j3 v3 - есть модуть vтовары - там новинки, рекомендованные и.т.д, есть категории с карточками товаров и еще есть сопутств товары.

Задача такая сделать одну разметку для всех в одном файле.
Я не спец - че на зыркал то и пользую, нашел такую штуку какload Template('xxxx'); но как прописаь правильно путь xxx не пойму?

Ну и второй вопрс, как узнать какой модуль вызывает? тут думаю понятно для чего!

Спасбо!
« Последнее редактирование: 29.06.2016, 22:14:57 от pavelrer »
*

Shustry

  • Гуру
  • 6434
  • 745 / 3
В той же директории лежит. ИмяФайла_ИмяПодшаблона. Например, если в default.php у вас loadTemplate('item'), то будет подгружаться файл default_item.php
*

pavelrer

  • Давно я тут
  • 615
  • 10 / 2
Ну вринципи это я понял, а ежли не от корня, т.е от самого коренного корня ../
типа в cmd ..
ты в корне и пошел с любой директории а в php как правильно?
еще раз один php лежит в модулях, другой в шаблонах, третий в компонементах ах ах
но все они должны подсосать один и тот же php
как правильно писать путь ?

Cgfcb,j!Спасибо!
*

pavelrer

  • Давно я тут
  • 615
  • 10 / 2
А как с этим быть?

Ну и второй вопрс, как узнать какой модуль вызывает? тут думаю понятно для чего!

Есть идеи? как че почему,?! Разметка разметкой но контент через иф как-то надо думаю!

Спасибо!
*

Shustry

  • Гуру
  • 6434
  • 745 / 3
Я ничего не понял.
*

pavelrer

  • Давно я тут
  • 615
  • 10 / 2
loadTemplate('item')

Как я понял при этом вызове браться будет отедова default.item.php

если так

loadTemplate('image')

то от седа default.image.php

Ну а как-то так работать будет loadTemplate('домен/папка1/папка2/default.image.php')
Как такой вид сделать?

Спасибо!
*

pavelrer

  • Давно я тут
  • 615
  • 10 / 2
Ой извиняюсь. Вопрос решился сам-собой.

require_once(dirname(__FILE__). '/php/vm_product_code.php');
*

fbr

  • Завсегдатай
  • 1681
  • 210 / 7
Можно попробовать так:

loadTemplate('image')

Код: php
//Содержимое файла default_image.php
require_once JPATH_SITE.'\домен\папка1\папка2\ ...';

пока писал - сами решили :)
*

pavelrer

  • Давно я тут
  • 615
  • 10 / 2
Спасибо! Я в первый раз  ;D
Пришлось смотреть как вирусы туда сюда ходят  ;D


Переделал так а то выполняется только один раз.

require(dirname(__FILE__). '/php/vm_product_code.php');
*

Shustry

  • Гуру
  • 6434
  • 745 / 3
Тогда уж так
Код: php
require(JURI::base().'vm_product_code.php');
*

pavelrer

  • Давно я тут
  • 615
  • 10 / 2
Большое спасибо!

Еще один маленький вопросик.

Что я пытался сделать - Есть модуль vm - товары и vm - категории которые отвечают за новинки, избранные и.т.д
Разметка одинаковая, я просто ее вынес в один файл php, получил разметку которую можно двигать для мобильной версии одну но для двух задач, ну и
естественно выкинул кучу не нужного CSS.

Все хорошо, но под эту дудку, решил к этому всему добавить еще два вывода.
1. VM - сопутствующие товары - Тут у меня совсем тупик приключился ;D
   com_virtuemart/sublayouts/customfields.php
   если я меняю хоть один стиль, то меняется еще и стиль у дополнительных полей, что сопутствующие товары это то же дополнительное поле я понял,
   но как быть, не понимаю.
   Строка <?php echo $field->display ?> - выводит картинку и название товара - что с этим делать, как сверстать, что где менять, если выше или ниже этой строки что-то
   пытаюсь вывести, - выводиться но, выводится еще и в дополнительные поля! Печалька! Что делать-то?

2. Как в моем чудесном vm_product_code.php узнать какой модуль его вызвал (ну или так "где я нахожусь")?

Спасибо!


*

pavelrer

  • Давно я тут
  • 615
  • 10 / 2
Вопрос 1 решен - https://joomla-zone.ru/forum/jz-jlite-internet-magazin-joomla-3-virtuemart-3-na-russkom-yazyke/658-model-vyvoda-soputstvuyushchikh-tovarov#4243

Осталось только: Как в моем чудесном vm_product_code.php узнать какой модуль его вызвал (ну или так "где я нахожусь")?

Спасибо!
*

Shustry

  • Гуру
  • 6434
  • 745 / 3
Например так JURI::getInstance()->toString();
*

pavelrer

  • Давно я тут
  • 615
  • 10 / 2
Спасибо!

Но это вернет мне url, а он мне ни чего не даст.

Глобальная переменная наверно должна решить мою задачу.
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Не очень понятно, что значит
какой модуль его вызвал (ну или так "где я нахожусь")?
Об'ясните "на пальцах", что вы хотите делать.
Не будь паразитом, сделай что-нибудь самостоятельно!
*

pavelrer

  • Давно я тут
  • 615
  • 10 / 2
Интернет магазин.

Есть список товаров в категории - Карточки.
Есть модулб vm-товары (рекомендуемые, новинки и.т.д) - Карточки
Есть vm-сопутствующие - Карточки.
Список категорий - Карточки.
Все это рисуется разными php файлами.

Все это дело подогнал под один стиль. Ну и разметка одинаковая.
Разметку сложил в файл vm_product_code.php
В каждый php файл подключаю vm_product_code.php.и вуаля - получили одну разметку, удобно ровнять при мобильной версии, выкинул 30кб CSS.
Но в разных php файлах, картинки, описание и т.д выводятся по разному, вот в этом-то и был вопрос.

Думаю создать группу переменных в vm_product_code.php и выводить однообразно.
А переменные эти будут заполняться уже php файлом который изначально отвечает за вывод карточек(списков) ну и соответственно вызывает vm_product_code.php.

Задача то проста это удобство тянуть в мобильную версию, и еще хочу CSS в моську HTML вывести, один для всего.
Собрав все CSS файлы в один, и все динамические CSS вставки которые делают модули, у меня получилось 250кб,
Все это отключил собрал в один файл пока сжал gzip. Вычистил от лишнего CSS только менюшки, получил 150кб.
Если натяну на 20кб попробую в моську HTML воткнуть посмотрю что получиться. Но если честно сократил CSS и js подключаемых файлов с 70 до 5 результат очень ощутимый!




*

Shustry

  • Гуру
  • 6434
  • 745 / 3
Оверрайдом каждого модуля не проще сделать?
*

pavelrer

  • Давно я тут
  • 615
  • 10 / 2
Еслиб я знал что это такое.
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Сомневаюсь в целесообразности такого подхода: все равно нужно в каждом шаблоне подключить ваш файл.
Попробуйте так:
В каждом шаблоне, перед подключением vm_product_code.php, присваиваем некой переменной $some_var соответствующее уникальное значение:
1 - список товаров в категории
Код: php-brief
$some_var='1';
2 - модулб vm-товары
Код: php-brief
$some_var='2';
и т.д.
В самом vm_product_code.php уже делать проверку значения $some_var и выводить нужную разметку.
Не будь паразитом, сделай что-нибудь самостоятельно!
*

Shustry

  • Гуру
  • 6434
  • 745 / 3
Копируем файлы из component_name/view/ в template_name/html/component_name, и переделываем как хочется.
*

pavelrer

  • Давно я тут
  • 615
  • 10 / 2
Копируем файлы из component_name/view/ в template_name/html/component_name, и переделываем как хочется.
- Спасибо это я уже сделал, просто не знаю как по научному это называется  ^-^

В самом vm_product_code.php уже делать проверку значения $some_var и выводить нужную разметку.
- Спасибо, я именно так и сделаю, решения приходили в процессе обсуждения.

Все получилось как и задумывал.

Но появились еще парочку вопросов.

1. микроразметка - во что обернуть эти списки карточки. Впринципе у них схожое то что есть 1. Картинка, 2. Название, 3.Описание, 4.Производитель.
т.е это можно вытянуть в любом списке.
Пока обернул как объект картинка, может что-то более целесообразное есть - что-то типа список товаров, или что-то такое?

2. VM - Производитель. Страничка с описанием производителя, просто текст + картинка. Скучно. А можно как то в этой странички вывести или товары этого производителя, или категории? Гуглил-гуглил не нагуглил  ^-^ . Можно конечно вывести VM-Товары, но хотелось бы чтобы товары относились к данному производителю.

Спасибо!
*

Shustry

  • Гуру
  • 6434
  • 745 / 3
1. Всё на уровне разметки шаблона делается. Про микроразметку раз, два. Всё зависит от схемы, под которую будете делать.
2. Ну если это не заложено в компоненте (я хз, VM не юзаю), то, либо пишите плагины свои, либо в шаблоне делаете запросы в БД, и выводите необходимые данные.
*

pavelrer

  • Давно я тут
  • 615
  • 10 / 2
Цитировать
либо в шаблоне делаете запросы в БД, и выводите необходимые данные.

Если дадите ссылку на разжеванный примерчик, буду очень благодарен. Я еще до этого не дошел  ^-^ Но ежлиб освоил, порешал бы кучу задач.

Спасибо.

2. VM - Производитель.
Тут отвечаю сам. Если модулю vm-товар, случайный товар ставим выводить в страницах производителя, то допустим для производителя BMW,
будут выводиться случайно только товары BMW (в страницы описания производителя), если таких товаров не будет, то и выводиться будет только картинка и описание производителя.
Все оказалось просто  ^-^

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

Один пункт меню думает что он главный

Автор DamaVbubi

Ответов: 4
Просмотров: 1168
Последний ответ 13.02.2024, 19:49:10
от DamaVbubi
Один модуль влияет на другой, как?

Автор mag_num83

Ответов: 5
Просмотров: 962
Последний ответ 17.05.2023, 10:05:55
от sivers
Ошибка 404 при открывании медиа-менеджера и модулей в Joomla

Автор Cloddy

Ответов: 1
Просмотров: 735
Последний ответ 20.07.2022, 15:55:19
от gquma
Не отображаются поля при создании и редактировании модулей и материалов

Автор Didj

Ответов: 5
Просмотров: 863
Последний ответ 04.05.2022, 21:49:39
от marksetter
Подключение erf и epf модулей

Автор Darius_hand_of_Noxus

Ответов: 2
Просмотров: 930
Последний ответ 19.05.2021, 07:02:04
от Darius_hand_of_Noxus