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

arma

  • Завсегдатай
  • 1752
  • 81 / 3
Извиняюся, может не внимательно читаю, но что-то не нахожу решение...:(
Моя "проблема" - основное меню не должно быть вложенности больше двух, когда создаю дополнетельные меню с "псевдоним пункта меню" на главное и есть дочерные подпункты не даёт алиас главного меню. Т.е. не получается ни в крошках, ни в адресной строке получить нормальную ссылку. Вылазит это /2013-05-25-09-04-16/. Вместо этих цифр должен быть алиас!
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
Цитировать
МЕНЯТЬ КОД Joomla который может затереться автообновлением
так это же хак. по сути наверное можно написать свой альтернативный макет вывода меню в котором псевдоним меню менять оригинальную ссылку и все никаких хаков
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
Цитировать
Спорить не стану - если появятся альтернативные решения
Цитировать
альтернативный макет вывода меню
Цитировать
прямые переходы (не из меню) как будут обрабатываться? Переходы из внутренней перелинковки
также ничего ведь не меняется по сути только мы переходим не по ссылке menu/home_alias а по ссылке menu/home что наооборот припятствует возникновению дублей. Поисковикам же нужно узнать как-то о наличии ссылки menu/home_alias
Мы не скажем и они не узнают. модули других разработчиков да тоже корректировать если используете
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
в 2.5.11 таких проблем с меню нет. Специально хотел смодулировать ситуацию . Увы все работает должным образом. Тему можно закрывать.
Обновитесь
*

Taatshi

  • Гуру
  • 5258
  • 481 / 2
  • Верстаем и кодим. Обращайтесь ;)
Проблема осталась и в тройке - ума не приложу как решить  :(
ВЕРСТКА, САЙТЫ ПОД КЛЮЧ, УДАЛЕНИЕ ВИРУСОВ, МИГРАЦИЯ НА JOOMLA 3, ОБНОВЛЕНИЕ  |  ОТЗЫВЫ 
Связь: telegram - Taatshi, почта - Taatshi на яндексе, Skype - Taatshi
*

ELLE

  • Глобальный модератор
  • 4505
  • 893 / 0
Походу это уже не баг, а так задумано, и отходить от этого не будут. Поэтому, тут только один вариант - делать конструктор модуля меню. Т.е. делаешь изначально в меню ту структуру что тебе нужно (вложенность урлов и т.д.), а с помощью конструктора выводишь в любом виде, в любой иерархии
*

Efenia

  • Осваиваюсь на форуме
  • 23
  • 1 / 0
Я решил вопрос с копированием пунктов с тем же алиасом так:
закоментировал блок кода проверки:

С помощью phpMyAdmin cделал дамп #_menus с опцией "drop table if exist"
В дампе удалил проверку на уникальность (строку целиком):

Код
UNIQUE KEY `idx_client_id_parent_id_alias_language` (`client_id`,`parent_id`,`alias`,`language`),

(Можно и SQL запросом сделать, но мне надо было еще массово алиасы поменять, потому дампом)

и залил обратно это все :)

теперь можно нормально дублировать алиасы в админке ;)

Статус темы можно менять на "решено" ;)

Можно я думаю видоизменить удлиннив проверку уникальности. К примеру  используя дополнительно menutype получим:

Код
UNIQUE KEY `idx_client_id_menutype_parent_id_alias_language` (`client_id`,`menutype`,`parent_id`,`language`),

По идее это тоже позволит создавать одинаковые alias в разных меню, но при этом в пределах 1 меню/1 уровня дубли будут проверяться (в PHP условии также надо будет добавить menutype). 

не могли бы вы написать, в каком конкретно файле нужно закоментировть блок кода проверки?
*

rek

  • Новичок
  • 3
  • 0 / 0
Файл для Joomla 3.6.2: \www\libraries\legacy\table\menu.php
Код
207| // The alias already exists. Send an error message.
208|   if ($errorType)
209|    {
210|    $message = JText::_('JLIB_DATABASE_ERROR_MENU_UNIQUE_ALIAS' . ($this->menutype != $table->menutype ? '_ROOT' : ''));
211|    $this->setError($message);
212|
213|    return false;
214|    }
Достаточно за комментировать return false;
*

jorevo

  • Давно я тут
  • 595
  • 13 / 1
Достаточно за комментировать return false;

После чего выскакивает ошибка с 1062 Duplicate entry ... for key 'idx_client_id_parent_id_alias_language' и Fatal error: Uncaught exception 'JDatabaseExceptionExecuting'
*

rek

  • Новичок
  • 3
  • 0 / 0
После чего выскакивает ошибка с 1062 Duplicate entry ... for key 'idx_client_id_parent_id_alias_language' и Fatal error: Uncaught exception 'JDatabaseExceptionExecuting'

Так в базе надо удалить ключ 'idx_client_id_parent_id_alias_language'
*

rek

  • Новичок
  • 3
  • 0 / 0
1) Удаляем из БД ключ 'idx_client_id_parent_id_alias_language'
MySQL -> имя_БД -> префикс_menu -> Структура -> Индексы
и удалить имя индекса 'idx_client_id_parent_id_alias_language'


2) Редактируем файл
Файл для Joomla 3.6.2: \www\libraries\legacy\table\menu.php
Код
207| // The alias already exists. Send an error message.
208|   if ($errorType)
209|    {
210|    $message = JText::_('JLIB_DATABASE_ERROR_MENU_UNIQUE_ALIAS' . ($this->menutype != $table->menutype ? '_ROOT' : ''));
211|    $this->setError($message);
212|
213|    return false;
214|    }
Достаточно за комментировать return false;
« Последнее редактирование: 15.11.2016, 17:45:14 от rek »
*

Spirz

  • Новичок
  • 7
  • 0 / 0
Всем привет!)
Помогите разобраться. Проблема с меню, но не знаю в Joomla проблема или в VM. Связка такая - Joomla 2.5.28, VirtueMart 2.6.0.
Создаю меню в VM. В него добавляется весь товар. Далее через менеджер меню Joomla создается меню "тип: категория virtuemart" и выбираем эту категорию. Ставим нужный алиас и тд. Это стандартная процедура. Получаем ссылку http://site.ru/alias1 (алиас vm такой же как и в меню)
Далее нужно вывести туже категорию со всеми товарами, в другой папке,  например для др города в папке city. Для city мы создаем категорию в VM.
Далее в менеджере меню Joomla делаем меню (тип категория virtuemart)  выбираем категорию city, алиас ставим тоже city. Там товара нет, просто промежуточная папка. В ней мы делаем новое меню(тип категория virtuemart), в которой будет тот же весь товар. Алиас поставим, например, alias2.
Получаем две ссылки, категория из которой они берут товар - одна:
http://site.ru/alias1
http://site.ru/city/alias2
Нам необходимо, чтобы главной была первая папка и товары имели вид:
http://site.ru/alias1/*-detail
Но по факту получается ссылка замещается на ту, в которой алиас меню выше при сортировке по имени. Т.е. если alias1=apple, а alias2=banana, то везде на сайте ссылки заменяться на второй алиас - http://site.ru/city/banana/*detail. В общем дает приоритет по имени. Как сделать эту сортировку и вывод ссылок по другому параметру, например по порядку? Надеюсь понятно изъяснил))
*

Шмайсер

  • Давно я тут
  • 801
  • 35 / 3
А ведь проблема не решена. До сих пор нельзя ни тупо продублировать пункты из одного меню в другое с теми же алиасами (что было бы в идеале - если делаешь сайт не для себя, а для заказчика, которому приходится объяснять что надо создавать новый пункт типа "Псевдоним"), ни с псевдонимами, сохраняющими прежний алиас. Хотя для псевдонима пофиг какой будет алиас в админке, на фронте все равно будет алиас оригинала. Но согласитесь бред же)) почему не сделать возможность тупо копировать одно меню в другое? Может хоть в 4-ке это сделают
Разработка сайтов любой сложности, на Joomla 3.9-4.x и не только на ней. Пишу компоненты, модули и плагины на заказ. Переношу сайты с ветки 2.5.х на 4-ю версию Joomla. Пишу любые скрипты и интерфейсы.
*

voland

  • Легенда
  • 11026
  • 588 / 112
  • Эта строка съедает место на вашем мониторе
А ведь проблема не решена. До сих пор нельзя ни тупо продублировать пункты из одного меню в другое с теми же алиасами (что было бы в идеале - если делаешь сайт не для себя, а для заказчика, которому приходится объяснять что надо создавать новый пункт типа "Псевдоним"), ни с псевдонимами, сохраняющими прежний алиас. Хотя для псевдонима пофиг какой будет алиас в админке, на фронте все равно будет алиас оригинала. Но согласитесь бред же)) почему не сделать возможность тупо копировать одно меню в другое? Может хоть в 4-ке это сделают
Вы не про такую же задачу ведете речь?
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Алиас пункта меню совпадает с именем подкаталога в каталоге с сист.файлами

Автор Andrey N.

Ответов: 14
Просмотров: 4029
Последний ответ 07.10.2021, 23:57:15
от Garrr
Главное меню

Автор Анастасия87

Ответов: 7
Просмотров: 1938
Последний ответ 21.05.2021, 08:40:40
от arma
[РЕШЕНО] Как в Joomla 2.5 автоматом удалять пользователей, не активировавшихся?

Автор pH43

Ответов: 2
Просмотров: 4105
Последний ответ 01.06.2020, 17:16:26
от pH43
Как сократить вертикальное расстояние между меню сайта и баннером?

Автор MultiMatrix83

Ответов: 2
Просмотров: 1612
Последний ответ 16.02.2020, 19:30:25
от MultiMatrix83
Редактирование Модуля - в меню не удаляется пункт

Автор bovinkm

Ответов: 4
Просмотров: 1788
Последний ответ 16.08.2019, 15:00:22
от bovinkm