Magento «теряет» категории при входе в подкатегорию

Итак, я работаю с 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-го уровня? В этом примере будет показана категория 3 со всеми ее подкатегориями, как если бы я нажал только на категорию 3.

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

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

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

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

<?php if($_count): ?>

person Kojichan    schedule 21.11.2010    source источник


Ответы (3)


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

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

// 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)

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

person Kojichan    schedule 22.11.2010
comment
Итак, вы хотите меню с «сестринскими» категориями вместо дочерних категорий? - person Anders Thirsgaard Rasmussen; 22.11.2010

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

person clockworkgeek    schedule 21.11.2010

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

person Anders Thirsgaard Rasmussen    schedule 21.11.2010