Magento «теряет» категории при входе в подкатегорию - PullRequest
0 голосов
/ 21 ноября 2010

Хорошо, так что я работаю с Magento около 1-2 месяцев, не слишком взволнован этим, но все еще пытаюсь учиться.

Мне удалось установить симпатичную тему шаблона для кого-то, и сейчас я настраиваю ее, чтобы она работала "правильно".

Но у меня возникла странная проблема ... во-первых, мой шаблон не отображает корневые категории в верхней панели навигации, а просто перечисляет первые подкатегории. Это хорошо.

Я захожу в подкатегорию и вижу подкатегории в левом блоке. Но когда я нажимаю на одну из подкатегорий, в левом блоке не отображаются никакие категории.

Я могу понять, что это поведение по умолчанию, потому что подкатегория, в которой я нахожусь, не имеет под-под-подкатегорий. Но мне было интересно, кто-нибудь знает хороший способ, когда вы находитесь в категории внуков, чтобы показать все категории в основной базе?

EX:
Default Category (Not seen)
  Cat 1 (Shown in top nav)
    Sub Cat 1
    Sub Cat 2
  Cat 2 (Shown in top nav)
    Sub Cat 1
    Sub Cat 2
  Cat 3 (Shown in top nav)
    Sub Cat 1
    Sub Cat 2

Скажем, например, я нажимаю на Sub Cat 2, в локации Cat 3, могу ли я заставить magento отображать ВСЕХ детей со 2-го уровня? В этом примере будет показан Cat 3 со всеми его подкатегориями, почти как если бы я нажал только на Cat 3.

Надеюсь, я объяснил это хорошо, я примерно так же запутался с Magento, как и следующий человек ...

(Вот бит перед циклом foreach для записи категорий в моем файле шаблона. В любом случае, чтобы заключить сделку типа getParent (), она всегда загружает категорию «top»?)

<?php $_categories=$this->getCurrentChildCategories(); ?>

<?php $_count = is_array($_categories)?count($_categories):$_categories->count(); ?>

<?php if($_count): ?>

Ответы [ 3 ]

2 голосов
/ 22 ноября 2010

Хорошо. Я посмотрел оба предоставленных ответа, однако ни один из них не пошел в том направлении, в котором я искал.

Они были хороши и сами по себе, однако я наткнулся на то, что дало мне лучшую подсказку, и запрограммировал этот отрывок:

// Get the current category's path, in array.
// Ex: [0] => '20', [1] => '4'
$_categorypath = $this->getCurrentCategoryPath();

// Use Mage to get a requested Category from the category path from above.
// (The last int in the array is the top-most category, so size-1 gets last int id)
$_parent_category = Mage::getModel('catalog/category')->load($_categorypath[count($_categorypath)-1]);

// Call the children categories from the loaded category
$_categories=$_parent_category->getChildrenCategories();

// Follow the rest of the loop... Success! No "Current/Active" handler yet.. 
$_count = is_array($_categories)?count($_categories):$_categories->count();

if($_count):
// ( Run your foreach code here, complete with html formatting)

Я надеюсь, что в будущем это поможет кому-то еще, кто ищет подобную функцию.

0 голосов
/ 21 ноября 2010

Идея левого блока категорий состоит в том, чтобы показать дочерние категории текущей категории. Похоже, вы хотите более статичное меню, которое всегда показывает то же дерево категорий. Это именно то, что делает верхняя навигация, так что вы можете просто скопировать код оттуда и использовать его как левый блок. Он даже имеет классы .active CSS, так что вы можете использовать его для свертывания / развертывания подкатегорий на основе активной категории.

0 голосов
/ 21 ноября 2010

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

...