Новости Joomla

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

platonische

  • Давно я тут
  • 523
  • 2 / 1
  • Парусные экспедиции vk.com/tc670
Добрый день!

Непонятный вопрос вылез. Вроде постоянно пользовался я вот этим
Код
        $module = JModuleHelper::getModule('mod_sendmessage');
        $params = new JRegistry($module->params);
Но по каким-то причинам это не работает на боевом сайте, хотя на тестовом работает.
Модуль содержит AJAX функцию, которая запускается по средствам com_ajax
Вот функция в модуле:
Спойлер
[свернуть]

Данные туда отправляю js, в data есть еще данные
Спойлер
[свернуть]

В этой реализации есть одно но. Я понимаю что подгрузка модуля корректно работает если опубликован только 1 модуль на привязанной странице. (т.е. вызывается только по имени модуля и нет привязки по id) Тут помогает параметр itemId по которому JModuleHelper::getModule('mod_sendmessage'); берет именно модуль с привязкой по itemId. Пусть это останется за рамками обсуждения.

Еще различия между боевым и тестомым. На боевом php7.2 и https.
Параметр itemId на боевом приходит. Не работает именно JModuleHelper::getModule('mod_sendmessage');

Что не так?
*

Aleks.Denezh

  • Живу я здесь
  • 3406
  • 428 / 4
Re: Подгрузить параметры модуля
« Ответ #1 : 16.11.2018, 12:58:06 »
а что в переменной $module после JModuleHelper::getModule('mod_sendmessage'); Вы смотрели?
*

platonische

  • Давно я тут
  • 523
  • 2 / 1
  • Парусные экспедиции vk.com/tc670
Re: Подгрузить параметры модуля
« Ответ #2 : 16.11.2018, 13:14:03 »
а что в переменной $module после JModuleHelper::getModule('mod_sendmessage'); Вы смотрели?
да структура
Код
"module":{"id":0,"title":"","module":"mod_sendmessage","position":"","content":"","showtitle":0,"control":"","params":""}
*

platonische

  • Давно я тут
  • 523
  • 2 / 1
  • Парусные экспедиции vk.com/tc670
Re: Подгрузить параметры модуля
« Ответ #3 : 16.11.2018, 13:18:53 »
На втором боевом (на этом же серваке) без https работает при условии что модуль присвоен ко всему. Если только к странице 1 то не работает
*

Aleks.Denezh

  • Живу я здесь
  • 3406
  • 428 / 4
Re: Подгрузить параметры модуля
« Ответ #4 : 16.11.2018, 13:20:41 »
а если это: var url = '' + window.location.origin + '/index.php?option=com_ajax&module=sendmessage&method=send&format=raw';
заменить на это:
var url =  './index.php?option=com_ajax&module=sendmessage&method=send&format=raw';
*

platonische

  • Давно я тут
  • 523
  • 2 / 1
  • Парусные экспедиции vk.com/tc670
Re: Подгрузить параметры модуля
« Ответ #5 : 16.11.2018, 13:28:24 »
данные то приходят. itemId присутствует.
Но проверил результата не дало. Рабочее работает, не рабочее не работает
На https работает при привязке ко всем страницам
*

Aleks.Denezh

  • Живу я здесь
  • 3406
  • 428 / 4
Re: Подгрузить параметры модуля
« Ответ #6 : 16.11.2018, 13:47:08 »
а теперь попробуйте отправить не itemId, а Itemid
*

platonische

  • Давно я тут
  • 523
  • 2 / 1
  • Парусные экспедиции vk.com/tc670
Re: Подгрузить параметры модуля
« Ответ #7 : 16.11.2018, 13:51:00 »
а теперь попробуйте отправить не itemId, а Itemid
+
Оно.
Почему вопрос конечно остался...
*

Aleks.Denezh

  • Живу я здесь
  • 3406
  • 428 / 4
Re: Подгрузить параметры модуля
« Ответ #8 : 16.11.2018, 13:55:36 »
+
Оно.
Почему вопрос конечно остался...
Ну как бы потому что  unix системы регистрозависимы.. не тот регистр и все...
*

platonische

  • Давно я тут
  • 523
  • 2 / 1
  • Парусные экспедиции vk.com/tc670
Re: Подгрузить параметры модуля
« Ответ #9 : 16.11.2018, 14:49:41 »
Ну как бы потому что  unix системы регистрозависимы.. не тот регистр и все...
Оба сервака на unix.
*

Septdir

  • Живу я здесь
  • 3370
  • 168 / 4
Re: Подгрузить параметры модуля
« Ответ #10 : 16.11.2018, 19:38:40 »
данные то приходят. itemId присутствует.
itemId  не нужен, этой ереси нет с 3.8.7
Передавайте в модуль id модуля и тогда будут именно нужные. Потом запрос в базу.
Вот пример
https://github.com/Septdir/pkg_freelancehunt_modules/blob/master/mod_freelancehunt_portfolio/helper.php

Не можете справиться с задачей сами пишите, решу ее за вас, не бесплатно*.
*Интересная задача, Деньги или Бартер. Натурой не беру!
CodersRank | Контакты | Мой GitHub | Workshop
*

Aleks.Denezh

  • Живу я здесь
  • 3406
  • 428 / 4
Re: Подгрузить параметры модуля
« Ответ #11 : 17.11.2018, 00:07:58 »
itemId  не нужен, этой ереси нет с 3.8.7
Передавайте в модуль id модуля и тогда будут именно нужные. Потом запрос в базу.
Вот пример
https://github.com/Septdir/pkg_freelancehunt_modules/blob/master/mod_freelancehunt_portfolio/helper.php

В смысле нет?
Joomla 3.9.0:
что это по вашему?!

А по вашему коду оригинально, делать лишний запрос в базу, притом забив на все настройки доступа модулей, языковые настройки, настройки публикации  и т.д.  и т.п. )
*

Septdir

  • Живу я здесь
  • 3370
  • 168 / 4
Re: Подгрузить параметры модуля
« Ответ #12 : 17.11.2018, 01:39:53 »
Joomla 3.9.0:
В то что проверку на itemid(id пункта меню) для модуля, как и получение модуля по соседствам ModuleHelper в com_ajax я вырезал и передавать его теперь нет ни какой нужды, как и юзать ModuleHelper в com_ajax.
https://github.com/joomla/joomla-cms/pull/19818

Если вас интересует зачем это было сделано могу расписать, хотя если вы пользуетесь com_ajax для модулей то должны это и так понимать.

А по вашему коду оригинально, делать лишний запрос в базу, притом забив на все настройки доступа модулей, языковые настройки, настройки публикации  и т.д.  и т.п. )
Можете их добавить проверки на свой вкус, в приведенном мной модуле, это проверки не нужны.

Что же до самого запроса - это запрос на один модуль, а не как в  ModuleHelper::getModule где получаются все доступные модули, потом идет несколько циклов и в итоге получишь просто первое совпадение, а не конкретный модуль. Даже передать itemID не поможет если на одном пункте меню два модуля (а с формами обратной связи такое бывает очень часто)

Что же до количества запросов из-за того, что получение модуля и инициализация ModuleHelper в com_ajax удалены в Joomla 3.8.7(см. линк на PR выше) и до этого ModuleHelper ни где не инициализирется, то количество запросов одинаковое, а вот нагрузка создаваемая при получение одной конкретной строки/столбца или при выгрузке всех возможный строк и затем фильтрация по средствам циклов будет разная. И один запрос на конкретную строку/столбец будет предпочтительнее.


Итого:
Зачем каждый раз "выдергивать" из базы все возможные модули и в итоге получать первый попавшийся, если можно сразу получить нужны модуль или вовсе только параметры модуля?

А различные проверки на языки и уровень доступа, нужны далеко не всегда, более того иногда различные проверки делаются еще до каких либо запросов в базу данных.

Если же так принципиально использовать ModuleHelper то лучше будет использовать ModuleHelper::getModuleById - Это новая функция из 3.9
Если более старая версия Joomla то сделать как в ModuleHelper::load
Однако для использования ModuleHelper помимо id модуля надо свнова передавать itemID и снова получаем все модули, а затем "крутим" цикл(ы).

Вроде довольно подробно ответил.
« Последнее редактирование: 17.11.2018, 13:29:29 от Septdir »
Не можете справиться с задачей сами пишите, решу ее за вас, не бесплатно*.
*Интересная задача, Деньги или Бартер. Натурой не беру!
CodersRank | Контакты | Мой GitHub | Workshop
*

Aleks.Denezh

  • Живу я здесь
  • 3406
  • 428 / 4
Re: Подгрузить параметры модуля
« Ответ #13 : 17.11.2018, 12:03:53 »
Зачем каждый раз "выдергивать" из базы все возможные модули и в итоге получать первый попавшийся, если можно сразу получить нужны модуль или вовсе только параметры модуля?
Что за чушь?! Почему я дергая все возможные модули получаю нужный мне?!

В то что проверку на itemid(id пункта меню) для модуля, как и получение модуля по соседствам ModuleHelper в com_ajax я вырезал и передавать его теперь нет ни какой нужды, как и юзать ModuleHelper в com_ajax.
https://github.com/joomla/joomla-cms/pull/19818
Я не знаю что вы там удалили, в com_ajax но данные модуля через ModuleHelper без Itemid не получить!
« Последнее редактирование: 17.11.2018, 12:21:36 от Aleks.Denezh »
*

Septdir

  • Живу я здесь
  • 3370
  • 168 / 4
Re: Подгрузить параметры модуля
« Ответ #14 : 17.11.2018, 13:17:19 »
Что за чушь?! Почему я дергая все возможные модули получаю нужный мне?!
Потому что вам везет предложенный вами вариант использует имя модуля(можно сказать что тип модуля), а не конкретный id.
На одной странице может быть 2 модуля с одни именем но разными id => разными параметрами, где гарантия что получите нужный?

Я не знаю что вы там удалили, в com_ajax но данные модуля через ModuleHelper без Itemid не получить!
Наверное вы плохо прочитали всю вторую часть.
Зачем ModuleHelper если нужен лишь один модуль? До 3.8.7 в этом был смысл потому, что ModuleHelper использовался в самом com_ajax для проверки наличия модуля(сейчас провертеться лишь наличие расширения), и чтобы не делать второй запрос разумнее было его и использовать в helper. Сейчас же ни какого смыла использовать ModuleHelper нет.
« Последнее редактирование: 17.11.2018, 13:27:48 от Septdir »
Не можете справиться с задачей сами пишите, решу ее за вас, не бесплатно*.
*Интересная задача, Деньги или Бартер. Натурой не беру!
CodersRank | Контакты | Мой GitHub | Workshop
*

Septdir

  • Живу я здесь
  • 3370
  • 168 / 4
Re: Подгрузить параметры модуля
« Ответ #15 : 17.11.2018, 13:53:46 »
@Aleks.Denezh ваш метод относительно верный, просто уже не актуальный.
Хотя в модулях форм и раньше редко пользовались getModule для получения параметров и проверки доступности ибо он работал аккурат до того момента пока два модуля одного типа, но с разными параметрами и правами публиковались на одной странице. А то бывало что письма уходили не туда или в модуле для public приходили настройки модуля register Кончено можно было и "заголовок" передавать, но и он не факт что будет уникальным. Однако само использование ModuleHelper было довольно верным (момент спорный что лучше один доп запрос или выгрузить 300 модулей и гонять их циклом) решением, чтобы не делать хоть и маленький но дополнительный запрос, но так было до версии 3.8.7.
« Последнее редактирование: 17.11.2018, 14:40:08 от Septdir »
Не можете справиться с задачей сами пишите, решу ее за вас, не бесплатно*.
*Интересная задача, Деньги или Бартер. Натурой не беру!
CodersRank | Контакты | Мой GitHub | Workshop
*

Aleks.Denezh

  • Живу я здесь
  • 3406
  • 428 / 4
Re: Подгрузить параметры модуля
« Ответ #16 : 17.11.2018, 14:37:49 »
@Septdir Ну справедливости ради я getModule никогда не юзаю, а юзаю getModuleList или как там его.. и  id модуля передаю.. но ничего страшного если там и Itemid  появится.. мне просто проще в одну строку получить модуль по id   ( даже без учета getModuleById чем писать лишний запрос.. а по поводу нагрузки через get modules лист..и отдельного запроса, то выигрышь будет неощутим.. у вас же не тысяча модулей на сайте...
*

Septdir

  • Живу я здесь
  • 3370
  • 168 / 4
Re: Подгрузить параметры модуля
« Ответ #17 : 17.11.2018, 14:50:59 »
@Septdir Ну справедливости ради я getModule никогда не юзаю, а юзаю getModuleList или как там его
@Aleks.Denezh справедливость ради getModuleList не очень корректно работает с кешем все таки зачем по сто раз формировать запрос. Поэтому я и написал ,что если юзать helper то делать аналог `protected load`, ну или `getModuleById` если говорить о 3.9.

у вас же не тысяча модулей на сайте...
В моей практике сайты и с большим числом модулей попадались.

мне просто проще в одну строку получить модуль
А вот тут вы правы. и с новой функцией это еще удобнее писать. Вы же не виноваты, что сам хелпер написан малясь некорректно, хотя чего еще ожидать от хелпера который толком не правился еще с Joomla 1.5.
« Последнее редактирование: 17.11.2018, 15:21:41 от Septdir »
Не можете справиться с задачей сами пишите, решу ее за вас, не бесплатно*.
*Интересная задача, Деньги или Бартер. Натурой не беру!
CodersRank | Контакты | Мой GitHub | Workshop
*

Aleks.Denezh

  • Живу я здесь
  • 3406
  • 428 / 4
Re: Подгрузить параметры модуля
« Ответ #18 : 17.11.2018, 15:19:17 »
В моей практике сайты и с большим числом модулей попадались.
Это уже не сайт, это венегрет, тут уже ничего не поможет.. по моему даже хранение параметров модуля в отдельном файле не спасет...

А вот тут вы правы. и с новой функцией это еще удобнее писать. Вы же не виноваты, что сам хелпер написан малясь некорректно, хотя чего еще ожидать от хелпера который толком не правился еще с Joomla 1.5.
тут больше не понятно почему хелпер модулей вне фабрики, или не синглтон...
*

Septdir

  • Живу я здесь
  • 3370
  • 168 / 4
Re: Подгрузить параметры модуля
« Ответ #19 : 17.11.2018, 15:36:42 »
тут больше не понятно почему хелпер модулей вне фабрики, или не синглтон...
Ну это же всего лишь хелпер.


Это уже не сайт, это венегрет, тут уже ничего не поможет.. по моему даже хранение параметров модуля в отдельном файле не спасет...
Обычное дело для крупных сайтов на J. Главное юзать что нибудь для удобства поиска модулей в админке.
Не можете справиться с задачей сами пишите, решу ее за вас, не бесплатно*.
*Интересная задача, Деньги или Бартер. Натурой не беру!
CodersRank | Контакты | Мой GitHub | Workshop
*

Aleks.Denezh

  • Живу я здесь
  • 3406
  • 428 / 4
Re: Подгрузить параметры модуля
« Ответ #20 : 17.11.2018, 16:35:11 »
Обычное дело для крупных сайтов на J. Главное юзать что нибудь для удобства поиска модулей в админке.
уж простите не могу представить ни единого сайта на котором больше 50 модулей для фронта, притом прикидывая самые сложные сайты...
*

Septdir

  • Живу я здесь
  • 3370
  • 168 / 4
Re: Подгрузить параметры модуля
« Ответ #21 : 17.11.2018, 17:06:11 »
уж простите не могу представить ни единого сайта на котором больше 50 модулей для фронта, притом прикидывая самые сложные сайты...
Сложный не значит крупный и подавно не значить что так привольно, просто такое бывает.
Вот элементарный пример. 200 категорий. на каждой из них нужно сбоку(в позиции модуля выводить свой текст). Как это сделать штатными средствами?
Вот и получаем 200 пунктов меню и 200 модулей.

А когда начинают целые страницы модулями делать, так вообще можно караул кричать.

Вот 1000 на одной странице не бывает. Хотя как-то раз модулей 50 я видел(правда для разный уровней доступа.)

Или вот еще пример был. Был на одном сайте модуль обычных html выводился на главной, а содержание менялось довольно часть. Так место того чтобы просто менять текст. Админ копировал каждый раз модуль.

А вообще к тебе это уже не относиться ибо по теме уже все обсудили.
« Последнее редактирование: 17.11.2018, 17:15:17 от Septdir »
Не можете справиться с задачей сами пишите, решу ее за вас, не бесплатно*.
*Интересная задача, Деньги или Бартер. Натурой не беру!
CodersRank | Контакты | Мой GitHub | Workshop
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Счётчик полей в админке модуля

Автор zeus07

Ответов: 9
Просмотров: 557
Последний ответ 28.06.2021, 13:40:31
от zeus07
Не занимать место под пустой вывод модуля

Автор platonische

Ответов: 11
Просмотров: 658
Последний ответ 28.04.2020, 07:53:11
от sivers
Проблема вызова модели компонента из модуля

Автор platonische

Ответов: 1
Просмотров: 569
Последний ответ 24.04.2020, 18:32:32
от platonische
Pagination компонента и данные из формы модуля

Автор platonische

Ответов: 4
Просмотров: 622
Последний ответ 29.01.2020, 11:32:43
от mardok
Доступ к переменной модели из модуля

Автор platonische

Ответов: 18
Просмотров: 1593
Последний ответ 11.01.2020, 22:21:42
от robert