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

Lepricon

  • Осваиваюсь на форуме
  • 36
  • 0 / 0
Здравствуйте!
Просмотрел на форуме много статей на эту тему, но наверно кривые руки и мало опыта работы с Joomla.

Подскажите, как сделать на Главной странице -> Список ВСЕХ категорий в 3, 4 столбца?  !!!???!!!
(Joomla! 3.8.3)
« Последнее редактирование: 17.12.2017, 00:58:24 от Lepricon »
*

kern.USR

  • Давно я тут
  • 827
  • 68 / 1
Если я вас правильно понимаю, то в шаблоне компонента com_content/categories/default_items.php (или как вы там его обозвали)
Сначала ищите нечто подобное
Код
$class = ' class="first"';

и меняете на такую конструкцию
Код
$class = ' class="first cat-item"';

После объявления переменной class, вставляете
Код
$columns=4;
Число - количество столбцов
и добавляете счётчик
Код
$i=0;

Дальше ищете цикл перебора разделов
Код
foreach($this->items[$this->parent->id] as $id => $item)

Сразу в цикле есть условие
Код
if ($this->params->get('show_empty_categories_cat') || $item->numitems || count($item->getChildren())) :
Прямо в следующей строке вставляете
Код
$i++;

там, буквально в третьей строке, найдёте такое
Код
if (!isset($this->items[$this->parent->id][$id + 1]))
{
$class = ' class="last"';
}
присвоение $class замените на это
Код
$class = ' class="last cat-item"';

Дальше находим вывод div'а оборачивающего категорию в списке
Код
<div <?php echo $class; ?> >

и меняем на
Код
<div <?php echo $class . ' ' . style="width:'.number_format(100/$columns, 1).'%;"'; ?> >

дальше находите вот такой код:
Код
<?php $class = ''; ?>
и меняете на
Код
<?php $class = 'class="cat-item"'; ?>

перед концом цикла
Код
endforeach;
есть ещё конец условия
Код
endif;
вот перед ним вставляете
Код
<?php if(($i+1)%($columns)==0): ?>
<div class="clr"></div>
<?php endif; ?>

Теперь в файле со стилями осталось дописать
Код
.cat-item{
display: inline-block;
float: left;
box-sizing: border-box;
margin-left: 0;
margin-right: 0;
}
.clr{
display: table;
width: 100%;
clear: both;
}
Чтоб добавить отступы между разделами по-горизонтали - в секцию .cat-item допишите
Код
padding-left: 15px;
padding-right: 15px;

Всё вышенаписанное истинно для стандартного шаблона. Для других гарантии не даю!
*

Lepricon

  • Осваиваюсь на форуме
  • 36
  • 0 / 0
Спасибо ОГРОМНОЕ  *DRINK* за ответ, но хотелось бы еще пару уточнений.

1. \components\com_content\views\categories\tmpl\default_items.php правильно ли я понял какой файл?

2. Файл со стилями. Это который находится в папке templates\имя шаблона\css\joomla.css?
*

Lepricon

  • Осваиваюсь на форуме
  • 36
  • 0 / 0
Почти все получилось!

Еще вопрос, как и где выставить ширину для <div class="cat-item" style="width: 0.0%;"> ?
*

kern.USR

  • Давно я тут
  • 827
  • 68 / 1
1. \components\com_content\views\categories\tmpl\default_items.php правильно ли я понял какой файл?
Нееееет!! Глупец, остановись!  *suicide*
Не нужно править шаблон в компоненте. Он слетит при первом же обновлении!
Сделай сначала копию себе в templates
Спойлер
[свернуть]

Ну только шаблон выбери тот, который у тебя по-умолчанию стоит

Цитировать
Файл со стилями. Это который находится в папке templates\имя шаблона\css\joomla.css?
Всё зависит от шаблона. Но папку верно определил! Остальось файл поправить, чтоб не слетело в случае обновления

Цитировать
Еще вопрос, как и где выставить ширину для <div class="cat-item" style="width: 0.0%;"> ?
Вот тут вот странно... У всех разделов width 0.0?
*

Lepricon

  • Осваиваюсь на форуме
  • 36
  • 0 / 0
 ;D Остановился, бэкап был, вернул на место все.

1. Что значит "Осталось файл поправить, чтоб не слетело в случае обновления"? Что и где ему поправить?

2. Да, у всех разделов получается width 0.0. Получается divы друг на друга лезут http://joxi.ru/a2XKGwnH1G3zYm , вот если вручную добавить % http://joxi.ru/p27b3J4So1kJNm

 и еще ...

3. Может так и надо, но получается один div болтается не в блоке или ... http://joxi.ru/Grqv9RGsQPDBym
*

Lepricon

  • Осваиваюсь на форуме
  • 36
  • 0 / 0
И да, файл редактировал по адресу templates\мой шаблон\html\com_content\categories\default_items.php правильно я понял?
*

kern.USR

  • Давно я тут
  • 827
  • 68 / 1
Что значит "Осталось файл поправить, чтоб не слетело в случае обновления"? Что и где ему поправить?
У тебя ведь в папке CSS много разных файлов? Посмотри в head'е, кто подключается последним - его и редактируй!

Да, у всех разделов получается width 0.0. Получается divы друг на друга лезут http://joxi.ru/a2XKGwnH1G3zYm , вот если вручную добавить % http://joxi.ru/p27b3J4So1kJNm
Тут 2 варианта:
1. Ты поменял название переменной 
Код
$columns=4;
2. Не верно копируется код с форума.

Для решения проблемы можно обратно поменять
Код
<div <?php echo $class . ' ' . style="width:'.number_format(100/$columns, 1).'%;"'; ?> >
на
Код
<div <?php echo $class; ?> >
а в стилях прописать
Код
.cat-item{
width: 25%; //если в 3 колонки, то 33%
}
И да, файл редактировал по адресу templates\мой шаблон\html\com_content\categories\default_items.php правильно я понял?
Да, то что нужно
*

Lepricon

  • Осваиваюсь на форуме
  • 36
  • 0 / 0
Да, причина в строке <div <?php echo $class . ' ' . style="width:'.number_format(100/$columns, 1).'%;"'; ?> >, "работать" http://joxi.ru/brRQpwKiJlqKbA она начала вот в таком формате <div <?php echo $class.' style="width: '.number_format(100/$colums, 1).'%;"'; ?> >.

Поменял как вы сказали на <div <?php echo $class; ?> >, стало работать.  *DRINK*

Поставил ширину 25%, получилось в первой "строке" 3 div'a, дальше как и заказывал по четыре http://joxi.ru/Dr84OqPF4Oqbgr
« Последнее редактирование: 19.12.2017, 15:10:17 от Lepricon »
*

kern.USR

  • Давно я тут
  • 827
  • 68 / 1
Поставил ширину 25%, получилось в первой "строке" 3 div'a, дальше как и заказывал по четыре http://joxi.ru/Dr84OqPF4Oqbgr
Тут я ошибся немного =) Два раза счётчик увеличил
Вот это
Код
<?php if(($i+1)%($columns)==0): ?>
   <div class="clr"></div>
<?php endif; ?>
Замените на это:
Код
<?php if(($i)%($columns)==0): ?>
   <div class="clr"></div>
<?php endif; ?>
*

Lepricon

  • Осваиваюсь на форуме
  • 36
  • 0 / 0
Как отблагодарить? Все работает!  *DRINK*
*

Lepricon

  • Осваиваюсь на форуме
  • 36
  • 0 / 0
Не сочтите за наглость, тут назрел еще вопрос.

Может подскажите, как сделать категории картинкой и переходом по клику на картинку?
*

kern.USR

  • Давно я тут
  • 827
  • 68 / 1
В смысле, картинкой? Чтоб вместо картинка+текст была только картинка?
*

Lepricon

  • Осваиваюсь на форуме
  • 36
  • 0 / 0
Нет, сейчас текст это Заголовок категории http://joxi.ru/Dr84OqPF4OR0vr
Если добавляем картинку в Описание категории и вставляем ссылку, то получаются скачки из-за текста http://joxi.ru/D2P30wdUpVn9gm
Если добавить картинку во вкладке Параметры, то она не будет как ссылка.
И вроде как нельзя убрать картинку внутри Категории, но чтоб она отображалась на Главной странице, тогда чтоб не пустовало место, можно написать текст описания категории, но его не получается сделать обтеканием картинки и он уходит вниз, вот пример http://joxi.ru/KAxb71JSMPxOXm
*

kern.USR

  • Давно я тут
  • 827
  • 68 / 1
Жуть какая!

Во-первых - найдите картинку-заглушку, которую будете использовать для категорий, которым не задано изображение. Загрузите эту картинку на сервер. Рекомендую в папку /images/ своего шаблона (имеено шаблона, а не шаблона компонента!)

Теперь правим код!

В самое начало фалйал, сразу после
Код
defined('_JEXEC') or die;
Вставляйте
Код
$app = JFactory::getApplication();

Ищите секцию (она после вывода h3 идёт)
Код
<?php if ($this->params->get('show_description_image') && $item->getParams()->get('image')) : ?>
<img src="<?php echo $item->getParams()->get('image'); ?>" alt="<?php echo htmlspecialchars($item->getParams()->get('image_alt'), ENT_COMPAT, 'UTF-8'); ?>" />
<?php endif; ?>

и меняете на
Код
<?php if ($this->params->get('show_description_image')) : ?>
<?php if($item->getParams()->get('image')): ?>
<img src="<?php echo $item->getParams()->get('image'); ?>" alt="<?php echo htmlspecialchars($item->getParams()->get('image_alt'), ENT_COMPAT, 'UTF-8'); ?>" />
<?php else: ?>
<img src="<?php echo JURI::base(true). '/templates/' . $app->getTemplate(); ?>/images/<НАЗВАНИЕ КРТИНКИ.ЖэПэГэ>" alt="<?php echo htmlspecialchars($item->title, ENT_COMPAT, 'UTF-8'); ?>" />
<?php endif; ?>
<?php endif; ?>

Вроде бы должно работать
*

Lepricon

  • Осваиваюсь на форуме
  • 36
  • 0 / 0
Получилось вот как http://joxi.ru/Y2LKEwQH9jaR5m , как бы указать высоту блока текста, чтоб не было ступенек?

И как вставлять картинки, если берется один файл "заглушка", и переход по клику на нее?
*

Lepricon

  • Осваиваюсь на форуме
  • 36
  • 0 / 0
И еще, между первым и вторым рядом отступ больше чем у остальных, выше на скрине видно.
*

kern.USR

  • Давно я тут
  • 827
  • 68 / 1
Цитировать
И как вставлять картинки, если берется один файл "заглушка", и переход по клику на нее?

Картинки ставятся через параметры категории.

По поводу ссылки - забыл.
Вот такой код должен быть, чтоб ссылки открывались по картинке
Код
<?php if ($this->params->get('show_description_image')) : ?>
<a href="<?php echo JRoute::_(ContentHelperRoute::getCategoryRoute($item->id, $item->language)); ?>">
<?php if($item->getParams()->get('image')): ?>
<img src="<?php echo $item->getParams()->get('image'); ?>" alt="<?php echo htmlspecialchars($item->getParams()->get('image_alt'), ENT_COMPAT, 'UTF-8'); ?>" />
<?php else: ?>
<img src="<?php echo JURI::base(true). '/templates/' . $app->getTemplate(); ?>/images/<НАЗВАНИЕ КРТИНКИ.ЖэПэГэ>" alt="<?php echo htmlspecialchars($item->title, ENT_COMPAT, 'UTF-8'); ?>" />
<?php endif; ?>
</a>
<?php endif; ?>

Чтоб сделать высоту у заголовков одинаковую (из расчёта, что больше 2х строк не будет)
Код
.page-header.item-title{
height: 45px;/*в два раза больше, чем одна строка*/
}
*

Lepricon

  • Осваиваюсь на форуме
  • 36
  • 0 / 0
Все просто замечательно  yes! ! Я не знаю как благодарить  *DRINK*  *DRINK*  *DRINK*

Жаль нет смайла на форуме, чтоб хоть графически передать благодарность вам!
*

kern.USR

  • Давно я тут
  • 827
  • 68 / 1
Простого "спасибо" мне вполне достаточно!
*

Lepricon

  • Осваиваюсь на форуме
  • 36
  • 0 / 0
ОГРОМНЕЙШЕЕ СПАСИБИЩЕ тебе добрый человек  *DRINK*
*

Алекс33

  • Новичок
  • 4
  • 0 / 0
Просто восхищён подробным ответом!  *DRINK*
На Joomla! 3.8.4, шаблон - копия Protostar заработало. Обновился до Joomla! 3.8.5 - работает.
Вопрос, подскажите пожалуйста как сделать вывод списка категорий в 2-4 столбца по алфавиту, чтобы следующая буква начиналась с новой строки, а не продолжалась во 2-4 столбце.
Спасибо!
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Helix3 сделать несколько рядов не столбцов!

Автор Bowa

Ответов: 6
Просмотров: 3958
Последний ответ 04.03.2023, 20:33:40
от Petrovich
Как сделать вывод ссылок в обратном порядке (com_weblinks)?

Автор Slava77

Ответов: 0
Просмотров: 848
Последний ответ 24.11.2022, 16:42:09
от Slava77
Хлебные крошки: вместо title сделать заголовок

Автор Zelyonkin

Ответов: 2
Просмотров: 804
Последний ответ 09.09.2022, 08:46:10
от Zelyonkin
Как в мобильной версии поставить &quot;блок особенностей&quot; в два столбца?

Автор sergspb

Ответов: 7
Просмотров: 997
Последний ответ 15.04.2021, 13:51:54
от xpank
Как слово Menu сделать русским?

Автор qqazz12

Ответов: 2
Просмотров: 877
Последний ответ 29.08.2020, 17:54:10
от qqazz12