Не работает countModules при включённом SEO

Тема в разделе "VirtueMart", создана пользователем AKopytenko, 05.07.2012.

  1. AKopytenko
    Offline

    AKopytenko Russian Joomla! Team Команда форума

    Регистрация:
    01.09.2011
    Сообщения:
    1 963
    Симпатии:
    168
    Пол:
    Мужской
    Для вывода модулей на разных страницах использую countModules:

    Код (PHP):
    1. <?php if ($this->countModules('middle-left')) { ?>
    2. <div id="middle">  
    3. <jdoc:include type="modules" name="middle-left" style="simple" />
    4.     <div id="middle-right">
    5.         <jdoc:include type="modules" name="middle-right" style="none" />
    6.         <jdoc:include type="component" />
    7.     </div>
    8.     <div class="clear"></div>
    9. </div>  
    10. <?php } else { ?>
    11. <div id="middle" class="main">
    12.     <jdoc:include type="modules" name="middle-right" style="simple" />
    13.     <jdoc:include type="component" />
    14. </div>
    15. <?php } ?>


    Есть модуль левого меню. Его позиция - middle-left.
    В настройках модуля - отображать везде, кроме главной страницы.

    Соответственно, не найдя на главной страницы модуль в позиции middle-left, countModules вместо двух блоков выводится один - div id="middle".

    При выключенном SEO всё работает корректно. Как только SEO включается - меню перестаёт отображаться, а вместо него всё содержимое помещается в div id="middle".

    Если кто-то уловил сеть проблемы - давайте вместе подумаем почему может быть такой глюк!
    Никак не пойму в чём дело! ]{:>

    Или может это просто Joomla начинает любую страницу как главную видеть...
     
    Последнее редактирование: 10.07.2012
  2.  
  3. OlegK
    Offline

    OlegK Russian Joomla! Team Команда форума ⇒ Профи ⇐

    Регистрация:
    17.01.2011
    Сообщения:
    7 812
    Симпатии:
    771
    Пол:
    Мужской
    <?php
    $menu = & JSite::getMenu();
    if ($this->countModules('middle-left') && $menu->getActive() !== $menu->getDefault())
     
  4. AKopytenko
    Offline

    AKopytenko Russian Joomla! Team Команда форума

    Регистрация:
    01.09.2011
    Сообщения:
    1 963
    Симпатии:
    168
    Пол:
    Мужской
    Не помогло. Непонятно кстати, почему! :(
    Получается, Joomla не видит навигации по страницам Virtuemart в режиме включённого SEO?
     
    Последнее редактирование: 06.07.2012
  5. OlegK
    Offline

    OlegK Russian Joomla! Team Команда форума ⇒ Профи ⇐

    Регистрация:
    17.01.2011
    Сообщения:
    7 812
    Симпатии:
    771
    Пол:
    Мужской
    попробуй
    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>
     
  6. AKopytenko
    Offline

    AKopytenko Russian Joomla! Team Команда форума

    Регистрация:
    01.09.2011
    Сообщения:
    1 963
    Симпатии:
    168
    Пол:
    Мужской
    Да в любом случае - это полумеры, т.к. при создании новых страниц нужно будет прописывать условия в php и для них, а это не вариант совсем.
     
  7. OlegK
    Offline

    OlegK Russian Joomla! Team Команда форума ⇒ Профи ⇐

    Регистрация:
    17.01.2011
    Сообщения:
    7 812
    Симпатии:
    771
    Пол:
    Мужской
    Да при чем создание новых страниц? Ты же проверяешь вывод модуля по главной странице,в index.php шаблона
     
  8. AKopytenko
    Offline

    AKopytenko Russian Joomla! Team Команда форума

    Регистрация:
    01.09.2011
    Сообщения:
    1 963
    Симпатии:
    168
    Пол:
    Мужской
    А, да, точно.
    Мозг плавится.
     
  9. AKopytenko
    Offline

    AKopytenko Russian Joomla! Team Команда форума

    Регистрация:
    01.09.2011
    Сообщения:
    1 963
    Симпатии:
    168
    Пол:
    Мужской
    Вернулся к проблеме - НЕ ПОМОГЛО.

    Итак: модуль, на настройках которого стоит "Отображение на всех, кроме главной" не отображается ни на одной странице в VM2.

    Выводится на всех страницах блок, который по ответу от countModule должен отображаться только на главной.

    :(
     
  10. DKraev
    Offline

    DKraev <i>(aka gft)</i> => Cпециалист <=

    Регистрация:
    16.08.2008
    Сообщения:
    1 627
    Симпатии:
    219
    Пол:
    Мужской
    Виртуемарт прописан в меню отдельной ссылкой? Т.е. ссылка не на категорию или товар, а именно в корень вирта присутствует?
     
  11. AKopytenko
    Offline

    AKopytenko Russian Joomla! Team Команда форума

    Регистрация:
    01.09.2011
    Сообщения:
    1 963
    Симпатии:
    168
    Пол:
    Мужской
    Да.
    "Virtuemart - Главная" ссылка в меню установлена как главная страница сайта.

    :gam3::gam3:
     
  12. DKraev
    Offline

    DKraev <i>(aka gft)</i> => Cпециалист <=

    Регистрация:
    16.08.2008
    Сообщения:
    1 627
    Симпатии:
    219
    Пол:
    Мужской
    Если вирт стоит как главная, то на нем и не будет отображаться модуль, который назначен "Отображение на всех, кроме главной"
     
  13. AKopytenko
    Offline

    AKopytenko Russian Joomla! Team Команда форума

    Регистрация:
    01.09.2011
    Сообщения:
    1 963
    Симпатии:
    168
    Пол:
    Мужской
    ААА!! :gam3:
    Он и НЕ ОТОБРАЖАЕТСЯ!
    Вопрос в другом) Читай первое сообщение!
     
  14. DKraev
    Offline

    DKraev <i>(aka gft)</i> => Cпециалист <=

    Регистрация:
    16.08.2008
    Сообщения:
    1 627
    Симпатии:
    219
    Пол:
    Мужской
    Заинтриговал. Какие начальные данные. Joomla и вирт какие? Попробую у себя воспроизвести.
     
  15. AKopytenko
    Offline

    AKopytenko Russian Joomla! Team Команда форума

    Регистрация:
    01.09.2011
    Сообщения:
    1 963
    Симпатии:
    168
    Пол:
    Мужской
    Модуль должен отображаться везде, кроме главной.

    Если модуль отображается - на странице 2 блока - LEFT и RIGHT.

    Если модуль НЕ отображается - вместо двух блоков на странице выводится один - MIDDLE.

    При включённом SEO модуль не отображается нигде и на всех страницах выводится блок MIDDLE. То есть Joomla перестаёт видеть навигацию по страницам ВНУТРИ VIRTUEMART! При этом, на страницах, которые прописаны отдельными пунктами меню модуль отображается.

    Joomla 2.5.4
    VM 2.0.6

    см.вложение:
     

    Вложения:

    • 1.png
      1.png
      Размер файла:
      1.5 КБ
      Просмотров:
      2
    • 2.png
      2.png
      Размер файла:
      1.6 КБ
      Просмотров:
      2
    Последнее редактирование: 10.07.2012
  16. OlegK
    Offline

    OlegK Russian Joomla! Team Команда форума ⇒ Профи ⇐

    Регистрация:
    17.01.2011
    Сообщения:
    7 812
    Симпатии:
    771
    Пол:
    Мужской
    Держи
    Код (CODE):
    1. <?php
    2. if (view=='virtuemart' or $menu->getActive() !== $menu->getDefault()) {
    3. твой модуль
    4. } ?>
     
  17. AKopytenko
    Offline

    AKopytenko Russian Joomla! Team Команда форума

    Регистрация:
    01.09.2011
    Сообщения:
    1 963
    Симпатии:
    168
    Пол:
    Мужской
    Вобщем понял - не отображается, потому что нет соответствующих пунктов меню...

    соответственно, оставлю стандартный if ($this->countModules('middle-left')) { ... }
     
  18. OlegK
    Offline

    OlegK Russian Joomla! Team Команда форума ⇒ Профи ⇐

    Регистрация:
    17.01.2011
    Сообщения:
    7 812
    Симпатии:
    771
    Пол:
    Мужской
    Ну весь блок
    Код (CODE):
    1. <?php
    2. $menu = & JSite::getMenu();
    3. if (view=='virtuemart' or $menu->getActive() !== $menu->getDefault()) {
    4.  if ($this->countModules('middle-left')) { ?>
    5. <div id="middle">  
    6. <jdoc:include type="modules" name="middle-left" style="simple" />
    7.     <div id="middle-right">
    8.         <jdoc:include type="modules" name="middle-right" style="none" />
    9.         <jdoc:include type="component" />
    10.     </div>
    11.     <div class="clear"></div>
    12. </div>  
    13. <?php }
    14. }
    15.  else { ?>
    16. <div id="middle" class="main">
    17.     <jdoc:include type="modules" name="middle-right" style="simple" />
    18.     <jdoc:include type="component" />
    19. </div>
    20. <?php } ?>
     
  19. AKopytenko
    Offline

    AKopytenko Russian Joomla! Team Команда форума

    Регистрация:
    01.09.2011
    Сообщения:
    1 963
    Симпатии:
    168
    Пол:
    Мужской
    да не работает. говорю же - получается, что без создания пунктов меню для каждой основной категории никак...

    p.s.: это был последний пинок. больше не занимаюсь VM.
     
  20. OlegK
    Offline

    OlegK Russian Joomla! Team Команда форума ⇒ Профи ⇐

    Регистрация:
    17.01.2011
    Сообщения:
    7 812
    Симпатии:
    771
    Пол:
    Мужской
    попробуй объяви переменную раньше
    $menu = & JSite::getMenu();
    у меня почти сразу после
    // No direct access.
    defined('_JEXEC') or die;
    И всего два пункта меню ВМ,основной и модуль входа ВМ.
    Правда,я тест проводил просто с выводом echo . Сейчас попробую с твоим модулем.
     
  21. DKraev
    Offline

    DKraev <i>(aka gft)</i> => Cпециалист <=

    Регистрация:
    16.08.2008
    Сообщения:
    1 627
    Симпатии:
    219
    Пол:
    Мужской
    + 1000 Пришел к такому же мнению несколько ранее ))
     

Поделиться этой страницей

Загрузка...