Модуль Почему двойной заголовок модуля в материале?

d0ublezer0

Мой дом здесь!
Регистрация
21 Май 2009
Сообщения
367
Реакции
201
Я с ума сойду, вероятно.
Такая фигня:
Создал в админке модуль произвольный HTML
вставил в материал через {loadposition module_name}

И не могу понять, почему у меня выводится два заголовка:
BjmZEfFZRDO7JxpxPxdzYA.png

Почему обертка модуля выведена два раза и вложена друг в друга?

html\mod_custom\default.php:
PHP:
<?php

defined('_JEXEC') or die;
echo $module->content;
?>

а это в modules.php:

PHP:
function modChrome_action($module, &$params, &$attribs)
{
   if (!empty ($module->content)) { ?>
       <div id="m00dule_<?= $module->id ?>"
             class="m00dule <?php echo htmlspecialchars($params->get('moduleclass_sfx'), ENT_COMPAT, 'UTF-8'); ?> <?= $module->name; ?>">
           <?
           echo "<h3>".$module->title."</h3>";
           echo $module->content;
           ?>
       </div>
        <?
    }
}

Содержимое модуля выводится всегда один раз.
Обертка и заголовок - два.
Какого?
 
Отключить вывод заголовка модуля пробовал?
 
Отключить вывод заголовка модуля пробовал?
Ну конечно. Опция вывода заголовка управляет кодом
PHP:
<?php if ($module->showtitle) : ?>
            <h<?php echo $headerLevel; ?>><?php echo $module->title; ?></h<?php echo $headerLevel; ?>>
        <?php endif; ?>
Который у меня вообще не используется.
Тут косяк в том, что модуль как бы вызывается два раза внутри себя. И вся обёртка, которая прописана в modules.php - тоже два раза.

Думал, может я в шаблоне что-то накосячил - нет, в стандартных шаблонах то же самое, проверил

Думаю, виноват ModuleHelper.php с его функцией renderModule:
PHP:
if (function_exists($chromeMethod))
            {
                $module->style = $attribs['style'];

                ob_start();
                $chromeMethod($module, $params, $attribs);
                $module->content = ob_get_contents();
                ob_end_clean();
            }
Получается, выводится обёртка, потом вызывается рендерер, который вызывает модуль отдельно от потока и вставляет результат вывода объекта внутрь него же. Кабздец.
 
Последнее редактирование модератором:
ну так убери один тайтл из кода, в чем проблема то?
а вообще если так то лучше сделать дубликат модуля и убрать там
 
ну так убери один тайтл из кода, в чем проблема то?
а вообще если так то лучше сделать дубликат модуля и убрать там
Вы невнимательно прочитали условия этой кривой задачи.
Всё, что не касается $module->content будет выведено два раза, до и после
Не пойму, почему.
Провожу эксперименты на других сайтах, пока не нашел зависимости
 
Назад
Сверху