подкатегория перекрестных продаж magento - PullRequest
0 голосов
/ 01 ноября 2010

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

Категория

XXXXXXXX
YYYYYYY
ZZZZZZZ

ПРОДУКТЫ КРОССЕЛЛОВСТВА

Crosssell1 Crosssell2 Crosssell3

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

1 Ответ

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

Вам нужно будет создать блок, который появится в левом столбце.Давайте создадим функцию для получения начального списка идентификаторов продуктов.Если ваш блок расширяется 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% -ный показатель говорит о другом)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...