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 и снова получаем все модули, а затем "крутим" цикл(ы).
Вроде довольно подробно ответил.