HostCMS 6: раскрывающееся меню для групп магазина. Вывод подгрупп текущего раздела

Sep 13, 2012 00:16

Сделал версию xsl шаблона для Host CMS 6.
Следующий код выводит группы магазина, при этом вложенные группы отображаются только у текущей группы.

Вывод подгрупп до любого уровня вложенности - основанно на коде от html
Улучшения для стилизации
Для вложенных сприсков ul через CSS класс указывается уровень вложенностьи level-1, level-2 и т.д.
Для текущего элемента li устанавливается CSS класс active, и если есть подгруппы - добавляется класс sub.

CSS классы могут быть использованны для улучшения вида дерева, например, можно специальным знаком помечать группы с подгруппами, чтобы было понятно - этот пункт меню можно развернуть. Вы можете настроить отображение каждого уровня меню в отдельностьи, используя стили для level-1..level-n.



В код основного шаблона добавить вставку в xml узла /shop/ТекущаяГруппа.
Добавть в шаблон в месте вывода групп код:

// Разделы магазина 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('МагазинГруппыТоваровНаГлавной') ); $Current_Shop_Controller = Core_Page::instance()->object; if (is_object($Current_Shop_Controller) && get_class($Current_Shop_Controller) == 'Shop_Controller_Show' && $Current_Shop_Controller->group) { $Shop_Controller_Show ->addEntity( Core::factory('Core_Xml_Entity') ->name('ТекущаяГруппа')->value(intval($Current_Shop_Controller->group)) ); } $Shop_Controller_Show ->groupsMode('all') //->itemsForbiddenTags(array('text')) ->group(0) ->limit(0) ->show(); }

Код XSL для Host CMS 6:

                         
                                                                                                  -1                                                                       level-                                                  sub              active                           
  •                                                                                                                                                                                                                                                                                                           
                                                                                                                                                                    
                         
  •     Получаем на выходе HTML:
    • http://www.hostcms.ru/" href="/shop/costume-jewellery/" title="Бижутерия" hostcms:id="593" hostcms:field="name" hostcms:entity="shop_group">Бижутерияa> li>
    • http://www.hostcms.ru/" href="/shop/handmade/" title="Handmade" hostcms:id="592" hostcms:field="name" hostcms:entity="shop_group">Handmadea> li>
    • http://www.hostcms.ru/" title="Для волос" hostcms:id="591" hostcms:field="name" hostcms:entity="shop_group">Для волосspan>
      • http://www.hostcms.ru/" href="/shop/for-the-hair/gum/" title="Резинки" hostcms:id="598" hostcms:field="name" hostcms:entity="shop_group">Резинкиa> li>
      • http://www.hostcms.ru/" href="/shop/for-the-hair/barrettes/" title="Заколки" hostcms:id="599" hostcms:field="name" hostcms:entity="shop_group">Заколкиa> li>
      • http://www.hostcms.ru/" href="/shop/for-the-hair/crabs/" title="Крабы" hostcms:id="600" hostcms:field="name" hostcms:entity="shop_group">Крабыa> li>
      • http://www.hostcms.ru/" href="/shop/for-the-hair/combs/" title="Гребни" hostcms:id="601" hostcms:field="name" hostcms:entity="shop_group">Гребниa> li> ul> li>
      • http://www.hostcms.ru/" href="/shop/accessories/" title="Аксессуары" hostcms:id="590" hostcms:field="name" hostcms:entity="shop_group">Аксессуарыa> li> ul>

    xsl, веб-разработка, заготовки, hostcms, hostcms6

    Previous post Next post
    Up