2010-11-01 2 views
0

Hi У меня есть категория XXX под категорией У меня есть подкатегория yyy. Продукты присваиваются категории yyy. Также у меня есть крест, проданный 5 продуктов. Когда я нажимаю на yyy, мне нужно получить все перекрестные проданные имена продуктов, которые назначаются как перекрестные ссылки слева.magento cross продающая подкатегория

Категории

XXXXXXXX
YYYYYYY
ZZZZZZZ

CROSSSELLING ПРОДУКТЫ

Crosssell1 Crosssell2 Crosssell3

Как я могу это сделать?

ответ

2

Вам нужно будет создать блок, который появится в левом столбце. Давайте сделаем функцию, чтобы получить начальный список идентификаторов продуктов. Если ваш блок расширяет Mage_Catalog_Block_Product_List то это может как-то вроде этого:

public function getCurrentProductIds() 
{ 
    return $this->getLoadedProductCollection()->getAllIds(); 
} 

Но это будет работать только для продуктов, в настоящее время на странице. Если вам нужно, чтобы показать для всех связанных продуктов на последующих страницах в категории, то функция может быть, как это:

public function getCurrentProductIds() 
{ 
    return Mage::registry('current_category')->getProductCollection()->getAllIds(); 
} 

Либо функция возвращает список целых чисел.

Далее важная часть. Получение связанных продуктов.

public function getCrossSellsCollection() 
{ 
    $productIds = $this->getCurrentProductIds(); 
    $link = Mage::getSingleton('catalog/product_link') 
     ->useCrossSellLinks();   // very important, this sets the linkTypeId to 5 
    $collection = $link->getProductCollection() 
     ->addProductFilter($productIds)   // find products associated with these 
     ->addExcludeProductFilter($productIds) // don't let these sames ones be loaded twice, that's a guaranteed error 
     ->addAttributeToSelect(array('name', 'url_key, 'url_path')); // list as many attributes here as you need 
    return $collection; 
} 

Это возвращает объект Mage_Catalog_Model_Resource_Eav_Mysql4_Product_Link_Product_Collection, который вы можете перебор из шаблона точно так же, как список продуктов. Этот бит открыт для настройки и сортировки по своему усмотрению.

<?php $_crossSellsCollection = $this->getCrossSellsCollection(); ?> 
<?php if ($_crossSellsCollection->count()): ?> 
<ul> 
    <?php foreach ($_crossSellsCollection as $_product): ?> 
    <li> 
     <a href="<?php echo $_product->getProductUrl() ?>"><?php echo $_product->getName() ?></a> 
    </li> 
    <?php endforeach ?> 
</ul> 
<?php endif ?> 

(Надеюсь, вы недавно научились принимать ответы, но ваш счет 0% предполагает othewise)

+0

GOT IT СПАСИБО за помощь –

+0

Спасибо, clockworkgeek. Жаль, я не могу понизить автора вопроса (125 баллов репутации) :) – Wiseman

Смежные вопросы