Я собираюсь не согласиться с Хэнни .Я думаю, что ответ - нет, не так, как вы описали.
Шаблон знает, когда он достиг позиции модуля, и получает список модулей, назначенных на эту позицию, а затем вызывает их рендеринг.Но эта информация не передается.Он не хранится ни в JApplication, ни в JDocument и т. Д. (Например, ничего не хранится в том месте, где в шаблоне выполняется рендеринг или что-то в этом роде).
Есть несколько хакерских способов получить почти то, что вы хотите.Если вы знаете позиции шаблона, по которым нужно искать (к сожалению, нет простого способа получить это из шаблона - в противном случае вы можете проанализировать файл .XML вашего шаблона для <position>
элементов ...), тогда вы можете сделать что-то вроде:
<?php
$positions = array('left', 'right', 'top', 'bottom')
$found_in = false;
foreach ($positions as $cur_position)
{
$module_positions = JModuleHelper::getModules($cur_position);
foreach ($module_positions as $cur_module_in_pos)
{
if ($cur_module_in_pos->module == 'mod_MYMODULE')
{
$found_in = $cur_position;
}
}
}
if ($found_in)
...
Конечно, это не работает, если ваш модуль включен на страницу несколько раз, но, возможно, вы можете сделать такое предположение?
В противном случае это будетвзлом ядра - вы можете использовать вызов JDispatcher::trigger()
до того, как шаблон вызовет модуль, установить некоторую переменную и т. д. К сожалению, в ядре нет такого события для запуска (pre_module_render
или что-то в этом роде).