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

Discussion in 'VirtueMart' started by AKopytenko, Jul 5, 2012.

  1. AKopytenko
    Offline

    AKopytenko Russian Joomla! Team Staff Member

    Joined:
    Sep 1, 2011
    Messages:
    1,963
    Likes Received:
    168
    Gender:
    Male
    Для вывода модулей на разных страницах использую 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 начинает любую страницу как главную видеть...
     
    Last edited: Jul 10, 2012
  2.  
  3. OlegK
    Offline

    OlegK Russian Joomla! Team Staff Member ⇒ Профи ⇐

    Joined:
    Jan 17, 2011
    Messages:
    7,812
    Likes Received:
    771
    Gender:
    Male
    <?php
    $menu = & JSite::getMenu();
    if ($this->countModules('middle-left') && $menu->getActive() !== $menu->getDefault())
     
  4. AKopytenko
    Offline

    AKopytenko Russian Joomla! Team Staff Member

    Joined:
    Sep 1, 2011
    Messages:
    1,963
    Likes Received:
    168
    Gender:
    Male
    Не помогло. Непонятно кстати, почему! :(
    Получается, Joomla не видит навигации по страницам Virtuemart в режиме включённого SEO?
     
    Last edited: Jul 6, 2012
  5. OlegK
    Offline

    OlegK Russian Joomla! Team Staff Member ⇒ Профи ⇐

    Joined:
    Jan 17, 2011
    Messages:
    7,812
    Likes Received:
    771
    Gender:
    Male
    попробуй
    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 Staff Member

    Joined:
    Sep 1, 2011
    Messages:
    1,963
    Likes Received:
    168
    Gender:
    Male
    Да в любом случае - это полумеры, т.к. при создании новых страниц нужно будет прописывать условия в php и для них, а это не вариант совсем.
     
  7. OlegK
    Offline

    OlegK Russian Joomla! Team Staff Member ⇒ Профи ⇐

    Joined:
    Jan 17, 2011
    Messages:
    7,812
    Likes Received:
    771
    Gender:
    Male
    Да при чем создание новых страниц? Ты же проверяешь вывод модуля по главной странице,в index.php шаблона
     
  8. AKopytenko
    Offline

    AKopytenko Russian Joomla! Team Staff Member

    Joined:
    Sep 1, 2011
    Messages:
    1,963
    Likes Received:
    168
    Gender:
    Male
    А, да, точно.
    Мозг плавится.
     
  9. AKopytenko
    Offline

    AKopytenko Russian Joomla! Team Staff Member

    Joined:
    Sep 1, 2011
    Messages:
    1,963
    Likes Received:
    168
    Gender:
    Male
    Вернулся к проблеме - НЕ ПОМОГЛО.

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

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

    :(
     
  10. DKraev
    Offline

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

    Joined:
    Aug 16, 2008
    Messages:
    1,627
    Likes Received:
    219
    Gender:
    Male
    Виртуемарт прописан в меню отдельной ссылкой? Т.е. ссылка не на категорию или товар, а именно в корень вирта присутствует?
     
  11. AKopytenko
    Offline

    AKopytenko Russian Joomla! Team Staff Member

    Joined:
    Sep 1, 2011
    Messages:
    1,963
    Likes Received:
    168
    Gender:
    Male
    Да.
    "Virtuemart - Главная" ссылка в меню установлена как главная страница сайта.

    :gam3::gam3:
     
  12. DKraev
    Offline

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

    Joined:
    Aug 16, 2008
    Messages:
    1,627
    Likes Received:
    219
    Gender:
    Male
    Если вирт стоит как главная, то на нем и не будет отображаться модуль, который назначен "Отображение на всех, кроме главной"
     
  13. AKopytenko
    Offline

    AKopytenko Russian Joomla! Team Staff Member

    Joined:
    Sep 1, 2011
    Messages:
    1,963
    Likes Received:
    168
    Gender:
    Male
    ААА!! :gam3:
    Он и НЕ ОТОБРАЖАЕТСЯ!
    Вопрос в другом) Читай первое сообщение!
     
  14. DKraev
    Offline

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

    Joined:
    Aug 16, 2008
    Messages:
    1,627
    Likes Received:
    219
    Gender:
    Male
    Заинтриговал. Какие начальные данные. Joomla и вирт какие? Попробую у себя воспроизвести.
     
  15. AKopytenko
    Offline

    AKopytenko Russian Joomla! Team Staff Member

    Joined:
    Sep 1, 2011
    Messages:
    1,963
    Likes Received:
    168
    Gender:
    Male
    Модуль должен отображаться везде, кроме главной.

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

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

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

    Joomla 2.5.4
    VM 2.0.6

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

    Attached Files:

    • 1.png
      1.png
      File size:
      1.5 KB
      Views:
      2
    • 2.png
      2.png
      File size:
      1.6 KB
      Views:
      2
    Last edited: Jul 10, 2012
  16. OlegK
    Offline

    OlegK Russian Joomla! Team Staff Member ⇒ Профи ⇐

    Joined:
    Jan 17, 2011
    Messages:
    7,812
    Likes Received:
    771
    Gender:
    Male
    Держи
    Код (CODE):
    1. <?php
    2. if (view=='virtuemart' or $menu->getActive() !== $menu->getDefault()) {
    3. твой модуль
    4. } ?>
     
  17. AKopytenko
    Offline

    AKopytenko Russian Joomla! Team Staff Member

    Joined:
    Sep 1, 2011
    Messages:
    1,963
    Likes Received:
    168
    Gender:
    Male
    Вобщем понял - не отображается, потому что нет соответствующих пунктов меню...

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

    OlegK Russian Joomla! Team Staff Member ⇒ Профи ⇐

    Joined:
    Jan 17, 2011
    Messages:
    7,812
    Likes Received:
    771
    Gender:
    Male
    Ну весь блок
    Код (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 Staff Member

    Joined:
    Sep 1, 2011
    Messages:
    1,963
    Likes Received:
    168
    Gender:
    Male
    да не работает. говорю же - получается, что без создания пунктов меню для каждой основной категории никак...

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

    OlegK Russian Joomla! Team Staff Member ⇒ Профи ⇐

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

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

    Joined:
    Aug 16, 2008
    Messages:
    1,627
    Likes Received:
    219
    Gender:
    Male
    + 1000 Пришел к такому же мнению несколько ранее ))
     

Share This Page

Loading...