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

никыч

  • Захожу иногда
  • 86
  • 0 / 0
Не работает копия модуля
« : 16.12.2013, 21:10:03 »
Добрый вечер.
Подскажите пожалуйста, на сайте установлен модуль, в левой колонке, "обратный звонок", выводимая модулем "Заказать звонок (ajax)". Так вот, когда этот модуль стоял один в этом месте все работало, потом я его перенес в сплывающее меню наверху сайта (черная кнопочка "обратный звонок"), там этот модуль работает, а вот сделав его копию и поместив обратно в левое меню он почему-то перестал работать.
На сайте искал, да и в поисковиках тоже, везде инструкции только как сделать на сайте два одинаковых модуля, но нет никакой инфы о том почему эта копия может не работать и как это исправить.
Может кто-то сможет помочь в этом вопросе?
Вот ссылка на сайт:
http://test2panorama.1gb.ru/
Спасибо заранее.

Странно, хотел в "расширение и модули" поместить тему, а она почему-то в "общих вопросах" разместилась..... :o
« Последнее редактирование: 16.12.2013, 23:01:54 от никыч »
*

SmokerMan

  • Гуру
  • 5290
  • 720 / 26
Re: Не работает копия модуля
« Ответ #1 : 17.12.2013, 02:40:47 »
потому что действия привязаны к одному элементу, а если их будет на странице больше, то оно будет срабатывать только на первый попавшийся элемент.
можно обратиться к разработчику данного модуля, либо в коммерческий раздел данного форума.
*

никыч

  • Захожу иногда
  • 86
  • 0 / 0
Re: Не работает копия модуля
« Ответ #2 : 17.12.2013, 12:01:11 »
потому что действия привязаны к одному элементу, а если их будет на странице больше, то оно будет срабатывать только на первый попавшийся элемент.
можно обратиться к разработчику данного модуля, либо в коммерческий раздел данного форума.

Что бы это сделали за деньги, есть много других сайтов, но я хочу научиться делать это все сам, поэтому и нахожусь на форуме на котором надеюсь найти помощь от профессионалов, а если каждый будет посылать в коммерческий раздел то тогда зачем форум, можно сразу туда писать.
Надеюсь на понимание.
С уважением, Никыч.
*

никыч

  • Захожу иногда
  • 86
  • 0 / 0
Re: Не работает копия модуля
« Ответ #3 : 17.12.2013, 22:40:04 »
Хорошо, если никто не знает как это сделать, подскажите, если поставить второй (отличный от первого) модуль обратного звонка, они (разные модули) на одной странице работать будут?
*

fbr

  • Завсегдатай
  • 1679
  • 209 / 7
Re: Не работает копия модуля
« Ответ #4 : 17.12.2013, 22:50:43 »
возможно проблема в повторяющихся id каких-то блоков
должны быть уникальными
*

никыч

  • Захожу иногда
  • 86
  • 0 / 0
Re: Не работает копия модуля
« Ответ #5 : 12.01.2014, 14:39:34 »
id действительно одинаковые, только как их тогда изменить?
*

никыч

  • Захожу иногда
  • 86
  • 0 / 0
Re: Не работает копия модуля
« Ответ #6 : 15.01.2014, 00:21:38 »
Люди, ну помогите пожалуйста!
*

Shustry

  • Гуру
  • 6434
  • 745 / 3
Re: Не работает копия модуля
« Ответ #7 : 15.01.2014, 00:30:09 »
Двух одинаковых id в принципе нельзя делать. Нужно:
1. Найти, где это в вёрстке и заменить на классы.
2. Повесить скрипт на другой селектор, уникальный.
*

никыч

  • Захожу иногда
  • 86
  • 0 / 0
Re: Не работает копия модуля
« Ответ #8 : 15.01.2014, 11:46:42 »
1. Так как же это заменить на классы если нет верстки в HTML, ведь в php это ни как не заменишь, или я чего-то не понимаю?
2. Сначала попытаюсь сделать первое действие, вопрос по второму будет позже ;)
*

Shustry

  • Гуру
  • 6434
  • 745 / 3
Re: Не работает копия модуля
« Ответ #9 : 15.01.2014, 13:07:52 »
Что такое PHP. HTML-файлы в чистом виде в принципе не используются в Joomla. Заглушки в директориях не в счёт.
*

никыч

  • Захожу иногда
  • 86
  • 0 / 0
Re: Не работает копия модуля
« Ответ #10 : 15.01.2014, 18:31:54 »
Так это все понятно, но вот где это в php искать, да и в каком конкретно файле это искать, например в корневой шаблона нет ничего похожего.
*

Shustry

  • Гуру
  • 6434
  • 745 / 3
Re: Не работает копия модуля
« Ответ #11 : 15.01.2014, 18:33:30 »
В шаблоне модуля «обратный звонок» видимо.
*

никыч

  • Захожу иногда
  • 86
  • 0 / 0
Re: Не работает копия модуля
« Ответ #12 : 15.01.2014, 22:00:54 »
Вот код из файла mod_amcallmeback.php из шаблона модуля "обратный звонок", но там ничего нет такого
Код
<?php
/**
 * @version             2.0 stable
 * @package             AJAX Call me back
 * @copyright    Copyright (C) 2012 PEREHOST.RU, All rights reserved.
 * @license             GNU/GPL http://www.gnu.org/licenses
 */

// no direct access
defined('_JEXEC') or die('Restricted access');

// add the Joomla validation
JHTML::_('behavior.mootools');

// include the helper file
require_once (dirname(__FILE__).DS.'helper.php');

//output the javascript and CSS
$amDoc =& JFactory::getDocument();
$amDoc->addStyleSheet(JURI::root().'modules'.DS.'mod_amcallmeback'.DS.'assets'.DS.'mod_amcallmeback.css');

// get required parameters
$amHeadText = $params->get('HeadText', 'Call me back');
$amIntroText = $params->get('IntroText', '');
$amNameText = $params->get('NameText', 'Name');
$amPhoneText = $params->get('PhoneText', 'Phone');
$amButtonText = $params->get('ButtonText', 'Call me');

$amSendedText = $params->get('SendedText', 'Request was sent');

// if form has been submitted
if(JRequest::getVar('action', null, 'POST') === 'amcallmebacksend') {
  echo modAmCallMeBackHelper::send($params);
}

// include the template for display
require(JModuleHelper::getLayoutPath('mod_amcallmeback'));

А вот код из файла helper.php из того-же модуля:
Код
<?php
/**
 * @version             2.0 stable
 * @package             AJAX Call me back
 * @copyright    Copyright (C) 2012 PEREHOST.RU, All rights reserved.
 * @license             GNU/GPL http://www.gnu.org/licenses
 */

// no direct access
defined('_JEXEC') or die('Restricted access');

jimport('joomla.mail.helper');

class modAmCallMeBackHelper
{

function send($params) {
// Check for request forgeries
JRequest::checkToken() or die( 'Invalid Token' );
// get data
$name = JRequest::getVar('name', '');
$phone = JRequest::getVar('phone', '');
$uri = JRequest::getVar('uri', '');

// get module params
$subject = $params->get('mail_subject');
$reciptient = explode(',', $params->get('receipt_email'));
$app = JFactory::getApplication();
$sender = array($app->getCfg('mailfrom'), $app->getCfg('fromname'));

// make email
$Body = '<strong>'. JText::_('MOD_AMCALLMEBACK_LETTER_NAME').':</strong> '.$name."<br />";
$Body .= '<strong>'. JText::_('MOD_AMCALLMEBACK_LETTER_PHONE').':</strong> '.$phone."<br />";
$Body .= '<strong>'. JText::_('MOD_AMCALLMEBACK_LETTER_PAGE').':</strong> <a href='.$uri.'>'.$uri."</a>";

$mailer =& JFactory::getMailer();
$mailer->setSender($sender);
$mailer->addRecipient($reciptient);
$mailer->setSubject($subject);
$mailer->isHTML(true);
$mailer->Encoding = 'base64';
$mailer->setBody($Body);

$send =& $mailer->Send();

if ( $send != true ) {
  return 'Error sending email';
} else {
    return 'Request is sent';
}
}

}
Здесь тоже вроде нет ничего похожего.
Как быть в такой ситуации?
*

Shustry

  • Гуру
  • 6434
  • 745 / 3
Re: Не работает копия модуля
« Ответ #13 : 15.01.2014, 22:44:34 »
А где код шаблона модуля?
*

никыч

  • Захожу иногда
  • 86
  • 0 / 0
Re: Не работает копия модуля
« Ответ #14 : 15.01.2014, 22:52:46 »
Всмысле? Я же привел этот код: mod_amcallmeback.php
Этот файл лежит в папке: modules/mod_amcallmeback
Я так понимаю это он и есть, или нет?
*

Shustry

  • Гуру
  • 6434
  • 745 / 3
Re: Не работает копия модуля
« Ответ #15 : 15.01.2014, 23:02:39 »
Это все файлы, что там есть? Или будем дальше гадать? :) Ерундовую проблему будем неделями решать.
*

никыч

  • Захожу иногда
  • 86
  • 0 / 0
Re: Не работает копия модуля
« Ответ #16 : 15.01.2014, 23:15:07 »
Вот все что там есть (/http/modules/mod_amcallmeback):
1. assets
1.1 callmeback.png
1.2 index.html
1.3 mod_amcallmeback.css
1.4 wait.gif

2. language (тут понятно что)

3. tmpl
3.1 default.php
3.2 index.html

helper.php
index.html
mod_amcallmeback.php
mod_amcallmeback.xml

вот код файла 3.1 вроде что-то похожее:
Код
<?php
/**
 * @version             2.0 stable
 * @package             AJAX Call me back
 * @copyright    Copyright (C) 2012 PEREHOST.RU, All rights reserved.
 * @license             GNU/GPL http://www.gnu.org/licenses
 */

 // no direct access
defined('_JEXEC') or die('Restricted access');

?>

<script language="javascript" type="text/javascript">
window.addEvent('domready', function() {

  $('amCallMeBackForm').getElements('input').addEvents({
    focus: function() {
      if ( this.value == '<?php echo $amNameText; ?>' || this.value == '<?php echo $amPhoneText; ?>' ) {
this.value = '';
this.addClass('amCallMeBack-input-act');
      }
    }
  });
 
  $('amCallMeBackShowForm').addEvent('click', function(event) {
    event.stop();
   
    $('amCallMeBackIntro').destroy();
    $('amCallMeBackForm').setStyle('display','block');
  });
 
  $('amCallMeBackForm').getElements('form').addEvent('submit', function(e) {
    new Event(e).stop();
   
    new Request({
        method: "post",
        data: this,
        onRequest: function() {
          $('amCallMeBackForm').empty().addClass('amCallMeBackWait');
        },
        onComplete: function() {
  $('amCallMeBackForm').removeClass('amCallMeBackWait');
  $('amCallMeBackForm').addClass('amCallMeBackSent');
  $('amCallMeBackForm').set('html', '<?php echo $amSendedText; ?>');
        }
    }).send();
  });
 
});
</script>

<div class="amCallMeBackWrap">
<div id="amCallMeBackIntro">
  <a href="javascript:void(0)" id="amCallMeBackShowForm">
    <img class="icon" src="<?php echo JURI::root().'modules'.DS.'mod_amcallmeback'.DS.'assets'.DS.'callmeback.png'; ?>" />
    <?php echo $amHeadText; ?>
  </a>
</div>

<div id="amCallMeBackForm">
<h3><?php echo $amHeadText; ?></h3>
<?php if( $amIntroText != '' ) : ?>
  <p class="amCallMebackIntroText"><?php echo $amIntroText; ?></p>
<?php endif; ?>
<form method="post" action="<?php echo $_SERVER['REQUEST_URI']; ?>">
<input type="text" name="name" class="amCallMeback-input" value="<?php echo $amNameText; ?>" />
<br />
<input type="text" name="phone" class="amCallMeback-phone" value="<?php echo $amPhoneText; ?>" />
<br />
<input type="submit" value="<?php echo $amButtonText; ?>" class="btn btn-mini" />
<input type="hidden" name="action" value="amcallmebacksend" />
<input type="hidden" name="uri" value="<?php echo JURI::current(); ?>" />
<?php echo JHTML::_( 'form.token' ); ?>
</form>
</div>
</div>
может тут?
*

Shustry

  • Гуру
  • 6434
  • 745 / 3
Re: Не работает копия модуля
« Ответ #17 : 15.01.2014, 23:22:12 »
Именно тут.
3. tmpl = template = шаблон. Я про это и говорил выше. Теперь заменяете здесь id на класс. И в стилях потом не забудьте переделать:
1.3 mod_amcallmeback.css — здесь.
*

никыч

  • Захожу иногда
  • 86
  • 0 / 0
Re: Не работает копия модуля
« Ответ #18 : 15.01.2014, 23:34:56 »
Просто все "id" заменить на "class"?
И в стилях просто изменить обращение стиля не к id, а к классу?
Я правильно понимаю? Или тут имеется ввиду присвоение другого (отличного от первого) идентификатора другому модулю звонка? Тогда как это сделать?
Или все же я правильно понял?
*

никыч

  • Захожу иногда
  • 86
  • 0 / 0
Re: Не работает копия модуля
« Ответ #19 : 15.01.2014, 23:47:50 »
Вообще перестало работать, даже в первом случае((
*

никыч

  • Захожу иногда
  • 86
  • 0 / 0
Re: Не работает копия модуля
« Ответ #20 : 20.01.2014, 23:17:46 »
Товарищи-люди, еще посоветуйте что-нибудь, либо разжуйте, пожалуйста, но никак не хочет работать второй модуль. Может я все же чего-то не так делаю? Изменил все id на  class, но результата это не принесло, кроме того что даже первый перестал работать (сейчас все обратно вернул). Вобщем все еще жду и надеюсь на помощь.
С уваженинем к сообществу, Никыч.
*

Shustry

  • Гуру
  • 6434
  • 745 / 3
Re: Не работает копия модуля
« Ответ #21 : 21.01.2014, 10:09:31 »
Судя по-коду, вам проще новый модуль сделать. Тут всё завязано на то, что модуль один. Если переделывать, то не одной вёрсткой придётся заниматься. Весь скрипт переписывать так, чтобы в цикле работало, для двух и более форм. Не знаю чем помочь даже. :(
*

никыч

  • Захожу иногда
  • 86
  • 0 / 0
Re: Не работает копия модуля
« Ответ #22 : 21.01.2014, 21:13:34 »
Т.е. Вы имеете ввиду поставить второй модуль? Отличный от первого, ну всмысле другой? А этот оставить как есть?
*

никыч

  • Захожу иногда
  • 86
  • 0 / 0
Re: Не работает копия модуля
« Ответ #23 : 23.01.2014, 00:44:48 »
Дабы не начинать новой темы спрошу здесь, а можно ли на одной странице сайта использовать два разных модуля "Обратный звонок"? И если можно то будут ли они корректно работать?
*

Shustry

  • Гуру
  • 6434
  • 745 / 3
Re: Не работает копия модуля
« Ответ #24 : 23.01.2014, 00:56:37 »
Суть проблемы уже разобрана была. Кратко: практически все js пишутся так, что селекторами служат id элементов, что правильно. Таким образом не только конкретно взятый модуль «обратный звонок», а пожалуй большинство модулей, где активно юзаецо js не будут работать, если создать копию.
Варианты решения тоже выше описаны.
Вариант 1: юзать два совершенно разных модуля.
Вариант 2: переписать модуль так, чтобы скрипты работали не с отдельно взятым элементом DOM выбранным посредством id, а в цикле. Насколько сложно это — хз, надо разбираться с каждым скриптом отдельно.
Вариант 3: написать свой модуль с преферансом и куртизантками.
*

никыч

  • Захожу иногда
  • 86
  • 0 / 0
Re: Не работает копия модуля
« Ответ #25 : 23.01.2014, 16:17:09 »
Спасибо за полный ответ.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Не работает GTranslate модуль

Автор rapsila

Ответов: 19
Просмотров: 3516
Последний ответ 06.09.2022, 22:52:02
от rapsila
Не работает отправка почты

Автор Mick_20

Ответов: 12
Просмотров: 1749
Последний ответ 11.01.2022, 17:12:19
от befesol
В Google Chrome некорректно работает админка

Автор Dorotar

Ответов: 1
Просмотров: 1318
Последний ответ 09.02.2020, 10:49:15
от Dorotar
Редактирование Модуля - в меню не удаляется пункт

Автор bovinkm

Ответов: 4
Просмотров: 1788
Последний ответ 16.08.2019, 15:00:22
от bovinkm
Не работает в авторизация

Автор Mobist

Ответов: 8
Просмотров: 1857
Последний ответ 05.08.2019, 13:04:34
от voland