Новости Joomla

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

fbr

  • Завсегдатай
  • 1625
  • 189 / 7
На разных страницах есть несколько модулей одного типа с разными настройками, условно
модуль_1
модуль_2
модуль_3
...

Баг:

модуль_3 отправляет сообщение, которое содержит значение параметра $params->get('static_text') из модуль_1!
если снять с публикации модуль_1, то текст будет из модуль_2
если снять с публикации модуль_2 - будет правильное значение параметра из модуль_3

Подробнее о модуле
---------------------------
Самописный модуль. Достаточно сложный.

Одна из функций модуля - отправка сообщения клиенту
Сообщение содержит статическую часть, которая  заполняется в админке в поле типа editor
Сообщение клиенту формирует методом getMessage (в helper.php)
Метод вызывается в getAjax, где другой метод отправляет сообщение

упрощенно выглядит так
Код
static function getMessage( $params, $idplan, $firstName )
{
//some code
$block_Mail = $params->get('static_text');
//some code

return $postData; // stdClass
}

public static function getAjax()
{

//some code

$postData = self::getMessage( $params, $idplan, $firstName )
$client_message = $postData->clientMessage;

//some code

$success_client = self::MailSender( $params, $client_subject, $client_message, $recipient );

//some code

}
В чем может быть причина?
Буду благодарен за любые соображения

ps. Если в макете вывести
Код
echo $params->get('static_text');
выводит правильное значение
« Последнее редактирование: 17.04.2021, 19:51:17 от fbr »
*

v42bis

  • Захожу иногда
  • 133
  • 13 / 1
У себя решал передачей id модуля через POST, потом  получал параметры модуля по его id.
*

fbr

  • Завсегдатай
  • 1625
  • 189 / 7
А диагноз?
В чем причина?
Как чужие параметры попадают в модуль?
*

sivers

  • Живу я здесь
  • 2465
  • 336 / 0
В чем может быть причина?
причина в методе getAjax.
Если посмотреть что у него внутри, то видно, что он читает из базы первый модуль данного типа и берет его параметры, потом вызывает helper модуля.
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

fbr

  • Завсегдатай
  • 1625
  • 189 / 7
Что здесь можно сделать?
Код
public static function getAjax()
{
jimport('joomla.application.module.helper');
$input  = JFactory::getApplication()->input;
$module = JModuleHelper::getModule('mod_clubs');
$params = new JRegistry();
$params->loadString($module->params);
$inputs = $input->get('data', array(), 'ARRAY');

//...
}
*

fbr

  • Завсегдатай
  • 1625
  • 189 / 7
Можно попробовать так:
Код
$module = JModuleHelper::getModuleById('module_ID');
как получить внутри getAjax id текущего модуля?
*

sivers

  • Живу я здесь
  • 2465
  • 336 / 0
как получить внутри getAjax id текущего модуля?
ИД надо передавать в ajax-запросе.
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

fbr

  • Завсегдатай
  • 1625
  • 189 / 7
Т.е. создавать скрытое поле input, присваивать ему id-модуля, и вытаскивать внутри getAjax из $input?
Так?
*

sivers

  • Живу я здесь
  • 2465
  • 336 / 0
*

fbr

  • Завсегдатай
  • 1625
  • 189 / 7
Спасибо)
Завтра попробую, отпишусь
*

fbr

  • Завсегдатай
  • 1625
  • 189 / 7
Все работает
Спасибо всем за помощь ))

Итоговый код (упрощенный)
Код
public static function getAjax()
{
jimport('joomla.application.module.helper');
$input = JFactory::getApplication()->input;
$inputs = $input->get('data', array(), 'ARRAY');

foreach ($inputs as $input) {
// ...
if( $input['name'] == 'modclub_id' )  $modclub_id = $input['value']; // module id
}

$module = JModuleHelper::getModuleById($modclub_id);
$params = new JRegistry();
$params->loadString($module->params);

// ...
}
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Ошибка Using $this when not in object context при создании модуля

Автор arrrows163

Ответов: 0
Просмотров: 309
Последний ответ 27.06.2021, 18:33:45
от arrrows163
Как сделать автодобавление модуля?

Автор Kropov

Ответов: 4
Просмотров: 937
Последний ответ 29.06.2015, 14:38:24
от Kropov
Запрос к БД модуля Joomla

Автор Serebro2009

Ответов: 3
Просмотров: 1117
Последний ответ 27.05.2015, 14:01:28
от b2z
Узнать из фрейма url, где фрейм выводится

Автор AlekVolsk

Ответов: 32
Просмотров: 2930
Последний ответ 02.03.2015, 23:13:40
от AlekVolsk
Получение результата работы AJAX в модуле

Автор AlekVolsk

Ответов: 9
Просмотров: 1474
Последний ответ 17.11.2014, 00:03:50
от AlekVolsk