Новости 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

Quantum Manager нужен сообществу, а автору нужна ваша поддержка!

Quantum Manager нужен сообществу, а автору нужна ваша поддержка!Файловый менеджер Quantum — одно...

Файловый менеджер Quantum — одно из самых популярных решений для Joomla, созданное разработчиком из сообщества Joomla, Дмитрием Цымбалом (@tsymbalmitia). Он делает Quantum удобным, безопасным и современным, обновляет его, исправляет уязвимости и отвечает пользователям — всё это в свободное от основной работы время.

Теперь настал момент для следующего шага: развитие проекта требует больше времени и ресурсов.

0 Пользователей и 1 Гость просматривают эту тему.
  • 8 Ответов
  • 2330 Просмотров
*

HiopsNerevar

  • Давно я тут
  • 630
  • 88 / 0
  • Я удобный.
Раз уж все основные косяки устранены, опишу что, как и куда. Огромное спасибо era и SmokerMan за оказанное содействие.  *DRINK*
И так:
1) Ставим плагин Modalizer от NoNumber и настраиваем его.
2) У многих шаблонов есть подшаблон (обычно он располагается в корневой папке шаблона и называется component.php) представляющий из себя легкую версию вашего основного шаблона.
Можете использовать его, либо создать отдельный файл и указать его в настройках Modalizer.
3) Для ссылки "Создать материал" все просто. Создаем пункт меню и для ссылки задаем класс modal
4) Теперь самое интересное. Иконка редактирования. Заходим в папку /components/com_content/helpers и копируем файл icon.php в папку /имя_вашего_шаблона/html/com_content
5) Открываем icon.php и редактируем в нем три строчки:
a) ~20 строчка.
Код
class JHtmlIcon
меняем на
Код
class JHtmlMyIcon

б) ~105 строчка, чтобы ссылка подхватывала подшаблон после index.php? добавляем ml=1& чтобы было
Код
$url	= 'index.php?ml=1&option=com_content&task=article.edit&a_id='.$article->id.'&return='.base64_encode($uri);

в) ~126 строчка, делаем ссылку и задаем ей класс
Код
$output = '<span class="hasTip" title="'.JText::_('COM_CONTENT_EDIT_ITEM').' :: '.$overlib.'"><a href="'.$url.'" class="modal">'.$text.'</a></span>';

6) Наконец подключаем это все (на примере /html/com_content/featured/default_item.php)
a) В начале подключаем наш icon.php после
Код
defined('_JEXEC') or die;
добавляем
Код
require_once (JPATH_THEMES . DS . $app->getTemplate(). DS . 'html/com_content/icon.php');

б) Наконец находим
Код
<?php echo JHtml::_('icon.edit', $this->item, $params); ?>
именяем 'icon.edit' на 'myicon.edit'

Примечание. в пункте 6а можно использовать и require_once (dirname(__FILE__).DS.'icon.php'); но тогда icon.php придется пихать во все папки где его нужно подключить.
TODO. Нужно сделать чтобы после нажатия Сохранить или Отмена в форме редактирования материала модальное окно закрывалось. Так как сейчас после нажатия в модальном окне просто загружается сайт. Читать решение тут
« Последнее редактирование: 13.01.2013, 20:14:42 от HiopsNerevar »
Это бидаль пича.
*

era

  • Администратор
  • 1588
  • 392 / 5
  • В туалете лучше быть пользователем, чем админом.
1. а в шаблон добавить свою генерацию ссылки?
вместо
Код
<?php echo JHtml::_('icon.edit', $this->item, $params); ?>

2. или например перенести в шаблон копию файлика "/components/com_content/helpers/icon.php"
изменив при объявлении название класса c "JHtmlIcon" например на "JHtmlMyIcon".
Файлик этот в нужных местах подключать и вызывать как
Код
<?php echo JHtml::_('myicon.edit', $this->item, $params); ?>
*

SmokerMan

  • Гуру
  • 5290
  • 720 / 26
Цитировать
Здесь было добавлено ?ml=1 для подхвата подшаблона.
Цитировать
index.php?ml=1?option=
Это что такое и как оно должно работать? :)
В урле все параметры передаются после "?", а если их 2 или больше, то это уже ахинея)

По поводу иконки редактирования.
По сути иконка это та же ссылка.
Вы можете посмотреть логику как указали выше в файле "/components/com_content/helpers/icon.php".
Собственно от туда нужно только условие на проверку прав, т.е. для кого ее показывать для кого нет. Ну и сама ссылка.
Это условие и ссылку можно вставить напрямую в шаблон(ы) вместо
Код
<?php echo JHtml::_('myicon.edit', $this->item, $params); ?>
и можно ничего не подключать и не переопределять, тем более для 1 иконки.
 
*

era

  • Администратор
  • 1588
  • 392 / 5
  • В туалете лучше быть пользователем, чем админом.
*

HiopsNerevar

  • Давно я тут
  • 630
  • 88 / 0
  • Я удобный.
era
Спасибо. Сделал по 2му варианту и все зашибись. Хотя 1й тоже попробовал, но у своей ссылки оказалось много косяков. Хотя она и работала но не изменяла значок в зависимости от состояния публикации.

SmokerMan
Не заметил просто ибо заработало и так.  ::) Сделал так
Код
index.php?ml=1&option=com_content
просто этот параметр работает так как надо только в начале ссылки.
Это бидаль пича.
*

SmokerMan

  • Гуру
  • 5290
  • 720 / 26
Ну если заработало, вдруг.
Поделись, пожалуйста, с народом. Что где и как заработало. И главное - что для этого надо сделать! :)
*

HiopsNerevar

  • Давно я тут
  • 630
  • 88 / 0
  • Я удобный.
Ну если заработало, вдруг.
Поделись, пожалуйста, с народом. Что где и как заработало. И главное - что для этого надо сделать! :)
Ок. Оформил в первом посте.  ;D
Это бидаль пича.
*

HiopsNerevar

  • Давно я тут
  • 630
  • 88 / 0
  • Я удобный.
А вот и пункт TODO. (вариант для модального окна SqueezeBox, стандартного для Joomla)
Для него нам понадобится переопределенный для нашего шаблона файл edit.php в папке /html/com_content/form/
ищем там код
Код
			<div class="formelm-buttons">
<button type="button" onclick="Joomla.submitbutton('article.save')">
<?php echo JText::_('JSAVE')?>
</button>
<button type="button" onclick="Joomla.submitbutton('article.cancel')">
<?php echo JText::_('JCANCEL')?>
</button>
</div>

и меняем на

Код
			<div class="formelm-buttons">
<button type="button" onclick="Joomla.submitbutton('article.save');window.parent.location.reload();">
<?php echo JText::_('JSAVE')?>
</button>
<button type="button" onclick="window.parent.SqueezeBox.close();">
<?php echo JText::_('JCANCEL')?>
</button>
</div>
Это бидаль пича.
*

ChaosHead

  • Гуру
  • 5242
  • 451 / 13
Так не работает, окно закрывается раньше, чем сохраняется материал.
Код
<button type="button" onclick="Joomla.submitbutton('article.save');window.parent.location.reload();">
Поставил задержку, как лучше сделать не знаю.
Код
<button type="button" onclick="Joomla.submitbutton('article.save');window.setTimeout('window.parent.location.reload();',300);">
« Последнее редактирование: 15.05.2014, 19:20:28 от ChaosHead »
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Блокировка материала! Что оно такое?

Автор Chebyrek

Ответов: 17
Просмотров: 17081
Последний ответ 30.06.2020, 16:33:09
от 1AZ1
Как вывести путь материала на страницу?

Автор Gromz

Ответов: 6
Просмотров: 2040
Последний ответ 14.12.2019, 20:19:21
от Gromz
Редактирование Модуля - в меню не удаляется пункт

Автор bovinkm

Ответов: 4
Просмотров: 1788
Последний ответ 16.08.2019, 15:00:22
от bovinkm
Что за баг с датой обновления материала - Обновлено 30.11.-0001 08:47?

Автор Maxum

Ответов: 7
Просмотров: 3912
Последний ответ 22.01.2019, 23:46:01
от artbavial
Как сбросить счётчик колличества просмотров материала?

Автор Neptun

Ответов: 7
Просмотров: 4412
Последний ответ 18.06.2018, 16:13:17
от tuztref