Меню из групп интернет-магазина: как начать вывод групп?

#
Меню из групп интернет-магазина: как начать вывод групп?
Есть вызов меню:


<?php
               // Вертикальное меню
               $Structure_Controller_Show = new Structure_Controller_Show(
                  Core_Entity::factory('Site', CURRENT_SITE));
               $Structure_Controller_Show->xsl(Core_Entity::factory('Xsl')
                  ->getByName('catalog_menu_tree')
               )
               ->menu(5)
               
               // Показывать группы магазина в меню
               ->showShopGroups(TRUE)
               // Показывать элементы товары магазина в меню
               ->showShopItems(FALSE)
               // СОРТИРОВКА ГРУПП
               //->param('OrderField' = 'information_items_selected')
               ;
            
               if (is_object(Core_Page::instance()->object)
               && get_class(Core_Page::instance()->object) == 'Shop_Controller_Show')
               {
                  if (Core_Page::instance()->object->group)
                  {
                     $Structure_Controller_Show->addEntity(
                        Core::factory('Core_Xml_Entity')
                           ->name('shop_group_id')
                           ->value(intval(Core_Page::instance()->object->group))
                     );
                  }
                  
                  if (Core_Page::instance()->object->item)
                  {
                     $Structure_Controller_Show->addEntity(
                        Core::factory('Core_Xml_Entity')
                           ->name('shop_item_id')
                           ->value(intval(Core_Page::instance()->object->item))
                     );
                  }
               }
            
               $Structure_Controller_Show->show();
            ?>


но выводит и ссылку на магазин, а очень хочется от неё избавиться

в общем-то, всего-то нужно выводить меню начиная с групп магазина - вопрос КАК?
Модератор
#
Re: Меню из групп интернет-магазина: как начать вывод групп?
Гость писал(а):
в общем-то, всего-то нужно выводить меню начиная с групп магазина - вопрос КАК?

Думаю для такого логичней использовать контроллер показа магазина Shop_Controller_Show. Например, так:

      if (Core::moduleIsActive('shop'))
      {
         $Shop_Controller_Show = new Shop_Controller_Show(
            Core_Entity::factory('Shop', 1)
         );
         $Shop_Controller_Show
            ->xsl(
               Core_Entity::factory('Xsl')->getByName('МагазинГруппыТоваровНаГлавной')
            )
            ->groupsMode('tree')
            ->group(0)
            ->limit(0)
            ->show();
      }
Вы только что начали читать предложение, чтение которого вы уже заканчиваете.
#
Re: Меню из групп интернет-магазина: как начать вывод групп?
так, допустим... Но подгруппы не выводит, не смотря на то, что
в XSL прописано:

   <xsl:template match="/">
      <xsl:apply-templates select="/shop"/>
   </xsl:template>
   
   <!-- Шаблон для магазина -->
   <xsl:template match="/shop">
      <!-- Получаем ID родительской группы и записываем в переменную $in_group -->
      <xsl:variable name="in_group" select="/shop/group" />
      <ul class="shop_list">
         <xsl:apply-templates select="shop_group"/>
      </ul>
   </xsl:template>
   
   <!-- Шаблон для вывода групп -->
   <xsl:template match="shop_group">
         <li>
            <a href="{url}">
               <xsl:value-of disable-output-escaping="yes" select="name"/>
            </a>
            <!-- Если есть подгруппы -->
            <xsl:if test="shop_group">
               <ul class="submenu">
                  <xsl:apply-templates select="shop_group"/>
               </ul>
            </xsl:if>
         </li>
   </xsl:template>

</xsl:stylesheet>


и, кстати, как в этом случае делать проверку на текущий пункт меню?
В общем, пытаемся сделать полностью нормальное меню...

p.s. первый пост от гостя - видимо авторизация устарела
Знания имеют свои пределы, и только глупость человеческая не знает границ...
Модератор
#
Re: Меню из групп интернет-магазина: как начать вывод групп?
1.
->groupsMode('tree')


меняете на:

->groupsMode('all')


2. EZ-Web писал(а):

и, кстати, как в этом случае делать проверку на текущий пункт меню?


В контроллер показа добавляете:

if (is_object(Core_Page::instance()->object)
&& get_class(Core_Page::instance()->object) == 'Shop_Controller_Show')
{
   $Shop_Controller_Show->addEntity(
      Core::factory('Core_Xml_Entity')
         ->name('current_group_id')
         ->value(intval(Core_Page::instance()->object->group))
   );
}


В XML пойдет тег current_group_id, с помощью которого и делается проверка на текущий пункт.
Вы только что начали читать предложение, чтение которого вы уже заканчиваете.
#
Re: Меню из групп интернет-магазина: как начать вывод групп?
В макете:

            <?php
               // Вертикальное меню
               if (Core::moduleIsActive('shop'))
                 {
                   $Shop_Controller_Show = new Shop_Controller_Show(
                     Core_Entity::factory('Shop', 3)
                   );
                  
                   $Shop_Controller_Show
                     ->xsl(
                        Core_Entity::factory('Xsl')->getByName('catalog_menu')
                     )
                     ->groupsMode('all')
                     ->group(0)
                     ->limit(3);
                     
                     // проверка на текущую группу
                     if (is_object(Core_Page::instance()->object)
                     && get_class(Core_Page::instance()->object) == 'Shop_Controller_Show')
                     {
                        $Shop_Controller_Show->addEntity(
                          Core::factory('Core_Xml_Entity')
                            ->name('current_group_id')
                            ->value(intval(Core_Page::instance()->object->group))
                        );
                     }
                     // проверка на текущую группу
                     
                  $Shop_Controller_Show   ->show();
                 }
            ?>


в XSL:

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE xsl:stylesheet>
<xsl:stylesheet version="1.0"
   xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
   xmlns:hostcms="http://www.hostcms.ru/"
   exclude-result-prefixes="hostcms">
   <xsl:output xmlns="http://www.w3.org/TR/xhtml1/strict" doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN" encoding="utf-8" indent="yes" method="html" omit-xml-declaration="no" version="1.0" media-type="text/xml"/>
   
   <!-- SHOP MENU (TREE) -->
   <xsl:template match="/">
      <xsl:apply-templates select="/shop"/>
   </xsl:template>
   
   <!-- Шаблон для магазина -->
   <xsl:template match="/shop">
      <ul class="menu">
         <xsl:apply-templates select="shop_group"/>
      </ul>
   </xsl:template>
   
   <!-- Шаблон для вывода групп -->
   <xsl:template match="shop_group">
      <!-- Получаем ID родительской группы и записываем в переменную $parent_group_id -->
      <xsl:variable name="parent_group_id" select="@current_group_id"/>
      <!-- Определяем стиль вывода ссылки в меню и субменю -->
      <xsl:variable name="item_style">
         <xsl:choose>
            <!-- Выделяем текущий пункт меню (если это текущая группа) -->
            <xsl:when test="@id = $parent_group_id">current</xsl:when>
            <!-- Иначе обычный вывод с неактивным стилем -->
            <xsl:otherwise>passive</xsl:otherwise>
         </xsl:choose>
      </xsl:variable>
      <li class="{$item_style}">
         <a href="{url}">
            <xsl:value-of disable-output-escaping="yes" select="@current_group_id" />
            <xsl:value-of disable-output-escaping="yes" select="name"/>
         </a>
         <!-- Если есть подгруппы -->
         <xsl:if test="shop_group">
            <ul class="submenu">
               <xsl:apply-templates select="shop_group"/>
            </ul>
         </xsl:if>
      </li>
   </xsl:template>

</xsl:stylesheet>

Всё верно?
Но не работает
Что делаем не так?
Знания имеют свои пределы, и только глупость человеческая не знает границ...
#
Re: Меню из групп интернет-магазина: как начать вывод групп?
Присоединяюсь к вопросу, в выводе стоит ->groupsMode('all'), в шаблоне

         <xsl:if test="shop_group">
            <ul class="submenu">
               <xsl:apply-templates select="shop_group"/>
            </ul>
         </xsl:if>
\
но группы второго и третьего уровня не выводятся..
Что не так?
skype: mcross82
Модератор
#
Re: Меню из групп интернет-магазина: как начать вывод групп?
EZ-Web,
Mcross,
Напишите в поддержку, взгляну на месте.
Вы только что начали читать предложение, чтение которого вы уже заканчиваете.
#
Re: Меню из групп интернет-магазина: как начать вывод групп?
написал запрос в тех.поддержку.
Знания имеют свои пределы, и только глупость человеческая не знает границ...
#
Re: Меню из групп интернет-магазина: как начать вывод групп?
Запрос отправлен.
skype: mcross82
Модератор
#
Re: Меню из групп интернет-магазина: как начать вывод групп?
Вопросы решены.
Для EZ-Web в XSL-шаблоне вместо

<xsl:variable name="parent_group_id" select="@current_group_id"/>


было указано:

<xsl:variable name="parent_group_id" select="/shop/current_group_id"/>



Для Mcross группы шли как нужно, но в XSL-шаблоне скрывались сами пункты через style="display:none;"
Вы только что начали читать предложение, чтение которого вы уже заканчиваете.
Авторизация