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

eugenex

  • Захожу иногда
  • 51
  • 0 / 0
Возникла надобность выполнить ajax-запрос. В общем-то любым способом, который потребует наименьших усилий.
Попалась вот такая статья: http://ссылка вырезана, так как домен распространяет вирусы/blog/joomla/ajax-v-joomla-3-2.html

Там описывается, как можно посылать ajax-запросы в модули и плагины, используя компонент com_ajax.
Я решил поместить обработчик запроса в плагине, так как создавать для этого модуль совсем нелогично.
Честно говоря, я решил пока не создавать новый плагин, а использовать один из уже установленных.
Я выбрал плагин recaptcha и следовал инструкциям из приведенной статьи.

В файле recaptcha.php я создал метод onAjaxRecaptcha
Цитировать
   public function onAjaxRecaptcha() {
      $input = JFactory::getApplication()->input;
      $text = $input->getString("text");
      $log = fopen('ajaxlog.txt', 'a+');
      fwrite($log, 'ajax AJAX '.$text);
      fclose($log);
      echo $text;
   }

Запрос отправляю так
Цитировать
   $('#order_submit').click(function() {
      $.post( "index.php?option=com_ajax&plugin=recaptcha&format=raw&text=proizvolnij_text", function(data) {
         alert(data);
      });
   });

В свой обработчик я не попадаю, что видно хотя бы по тому, что не создался файл ajaxlog.txt, ну и alert выдает пустое окошко.
Использую Joomla 3.4.

Еще одна деталь.  Автор статьи пишет: "Важно! - при запросе в плагины, будут использоваться только те плагины которые находятся в группе AJAX!".
А какие плагины находятся в группе AJAX?
*

beliyadm

  • Легенда
  • 9758
  • 1665 / 66
  • Севастополь, Россия
А смысл?
У вас уже есть компонент com_ajax
В нем создаете функцию и к ней обращаетесь
К примеру файл \components\com_ajax\ajax.php выглядит так

Код: php
$Itemid	= JRequest::getInt( 'Itemid', 1, 'get' );
$task = JRequest::getVar( 'task', 1, 'get' );
switch ($task)
{
 case 'mytask':
 mytask();
 break;
}

function mytask()
{
echo 'mytask';
}

В своем js обработчике с фронта вызываете эту функцию (понятно, что это я выдрал из обработки формы, но суть думаю ясна)
Код: javascript
$('#block').on('click', ".button", function(){
$.ajax({
           type: 'POST',
               url: '/index.php?option=com_ajax&format=raw&task=mytask',
               target: '',
               data: form_data,
               cache: false,
success: function(response){
$('#success').text(response);
}
});
});

В итоге у вас в блоге с id=success появится текст "mytask"

Либо можно сделать свой файл обработчик (вместо компонента), в котором подгружать ядро и пользоваться стандартными опциями движка в плане API, если так интересно - тоже покажу пример
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

eugenex

  • Захожу иногда
  • 51
  • 0 / 0
Да, так конечно лучше будет.

У меня получается сейчас отправить запрос в AJAX.php, но не получается, судя по всему, принять там параметры.

Вот мой код
Цитировать
$task   = JRequest::getVar( 'task', 1, 'get' );
//$input = JFactory::getApplication()->input;
//$task = $input->getString('task , 0);

switch ($task)
{
   case 'order' :
      $log = fopen('ajaxlog.txt', 'a+');
      fwrite($log, 'ajax  '.$text);
      fclose($log);
      $txt   = JRequest::getVar( 'txt', 1, 'get' );
      orderMail($txt);
      
      break;
}

Так отправляю запрос
Цитировать
   $('#order_submit').click(function() {
      $.ajax({
              type: 'POST',
               url: '/Joomla/index.php?option=com_ajax&format=raw&task=order',
               data: {txt: 'proizvolnijtext'},
            success: function(response){
               alert(response);
            }
      });
   });

В case 'order' я не попадаю. В AJAX.php запрос приходит, что видно хотя бы потому, что если сделать в нем ошибку, она возвращается алертом.

*

eugenex

  • Захожу иногда
  • 51
  • 0 / 0
А все получилось, просто нужно было "amp;" из URL убрать.  Наверное, это форум так "отформатировал".
« Последнее редактирование: 12.06.2015, 23:59:40 от eugenex »
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Плагин для транслитерации имен загружаемых файлов

Автор KSS

Ответов: 5
Просмотров: 2771
Последний ответ 02.10.2025, 09:57:13
от Леон
Стоит ли ставить плагин rel="canonical" на Joomla 3

Автор azm1n

Ответов: 2
Просмотров: 1638
Последний ответ 09.05.2025, 12:39:18
от azm1n
ajax загрузка компонента на странице материала К2

Автор Divn

Ответов: 0
Просмотров: 1006
Последний ответ 13.01.2023, 15:05:52
от Divn
При срабатывании ajax появляетсся div id="system-message-container"

Автор androv77

Ответов: 1
Просмотров: 908
Последний ответ 17.11.2022, 11:50:42
от androv77
Ошибка при установке компонента

Автор JackThaCat

Ответов: 6
Просмотров: 2003
Последний ответ 11.11.2022, 06:04:13
от Satelitte