Для вывода модулей на разных страницах использую countModules: Код (PHP): <?php if ($this->countModules('middle-left')) { ?> <div id="middle"> <jdoc:include type="modules" name="middle-left" style="simple" /> <div id="middle-right"> <jdoc:include type="modules" name="middle-right" style="none" /> <jdoc:include type="component" /> </div> <div class="clear"></div> </div> <?php } else { ?> <div id="middle" class="main"> <jdoc:include type="modules" name="middle-right" style="simple" /> <jdoc:include type="component" /> </div> <?php } ?> Есть модуль левого меню. Его позиция - middle-left. В настройках модуля - отображать везде, кроме главной страницы. Соответственно, не найдя на главной страницы модуль в позиции middle-left, countModules вместо двух блоков выводится один - div id="middle". При выключенном SEO всё работает корректно. Как только SEO включается - меню перестаёт отображаться, а вместо него всё содержимое помещается в div id="middle". Если кто-то уловил сеть проблемы - давайте вместе подумаем почему может быть такой глюк! Никак не пойму в чём дело! Или может это просто Joomla начинает любую страницу как главную видеть...
<?php $menu = & JSite::getMenu(); if ($this->countModules('middle-left') && $menu->getActive() !== $menu->getDefault())
Не помогло. Непонятно кстати, почему! Получается, Joomla не видит навигации по страницам Virtuemart в режиме включённого SEO?
попробуй if ($this->countModules('middle-left') && $view !== 'frontpage') или if ($this->countModules('middle-left') && !($view == 'frontpage')) или <?php $menu = & JSite::getMenu(); if ($this->countModules('middle-left') && !($menu->getActive() == $menu->getDefault())) Пробуй объявить переменную в <head>$menu = & JSite::getMenu();</head>
Да в любом случае - это полумеры, т.к. при создании новых страниц нужно будет прописывать условия в php и для них, а это не вариант совсем.
Да при чем создание новых страниц? Ты же проверяешь вывод модуля по главной странице,в index.php шаблона
Вернулся к проблеме - НЕ ПОМОГЛО. Итак: модуль, на настройках которого стоит "Отображение на всех, кроме главной" не отображается ни на одной странице в VM2. Выводится на всех страницах блок, который по ответу от countModule должен отображаться только на главной.
Виртуемарт прописан в меню отдельной ссылкой? Т.е. ссылка не на категорию или товар, а именно в корень вирта присутствует?
Если вирт стоит как главная, то на нем и не будет отображаться модуль, который назначен "Отображение на всех, кроме главной"
Модуль должен отображаться везде, кроме главной. Если модуль отображается - на странице 2 блока - LEFT и RIGHT. Если модуль НЕ отображается - вместо двух блоков на странице выводится один - MIDDLE. При включённом SEO модуль не отображается нигде и на всех страницах выводится блок MIDDLE. То есть Joomla перестаёт видеть навигацию по страницам ВНУТРИ VIRTUEMART! При этом, на страницах, которые прописаны отдельными пунктами меню модуль отображается. Joomla 2.5.4 VM 2.0.6 см.вложение:
Держи Код (CODE): <?php if (view=='virtuemart' or $menu->getActive() !== $menu->getDefault()) { твой модуль } ?>
Вобщем понял - не отображается, потому что нет соответствующих пунктов меню... соответственно, оставлю стандартный if ($this->countModules('middle-left')) { ... }
Ну весь блок Код (CODE): <?php $menu = & JSite::getMenu(); if (view=='virtuemart' or $menu->getActive() !== $menu->getDefault()) { if ($this->countModules('middle-left')) { ?> <div id="middle"> <jdoc:include type="modules" name="middle-left" style="simple" /> <div id="middle-right"> <jdoc:include type="modules" name="middle-right" style="none" /> <jdoc:include type="component" /> </div> <div class="clear"></div> </div> <?php } } else { ?> <div id="middle" class="main"> <jdoc:include type="modules" name="middle-right" style="simple" /> <jdoc:include type="component" /> </div> <?php } ?>
да не работает. говорю же - получается, что без создания пунктов меню для каждой основной категории никак... p.s.: это был последний пинок. больше не занимаюсь VM.
попробуй объяви переменную раньше $menu = & JSite::getMenu(); у меня почти сразу после // No direct access. defined('_JEXEC') or die; И всего два пункта меню ВМ,основной и модуль входа ВМ. Правда,я тест проводил просто с выводом echo . Сейчас попробую с твоим модулем.