добавление товаров сравнивается с magento с использованием атрибутов товаров (категория) - PullRequest
0 голосов
/ 13 декабря 2011

Hy ,, Я пытаюсь заставить Magento сравнивать продукты, группируя все продукты с одной и той же категрией и сравнивая их вместе, а также группируя другие и сравнивая их вместе… и т. Д. Вместо того, чтобы сравнивать их все вместе, я попробовал этот код

      collection.php

      class Mage_Catalog_Model_Resource_Product_Collection extends   Mage_Catalog_Model_Resource_Collection_Abstract

      public function addCategoryFilterH($request)
      {

        $this->_productLimitationFilters['category_id'] =$request;
        unset($this->_productLimitationFilters['category_is_anchor']);


        $this->_applyZeroStoreProductLimitations();

        $this->_applyProductLimitations();

            return $this;


}

тогда я в продуктах сравниваю это:

          list.phtml
          $this_original=$this;
          $cat15=$this->getItems()->addCategoryFilterH(15);
           ...for loop throw this products ....
          $this=$this_original;
          $cat8=$this->getItems()->addCategoryFilterH(8);
          ...for loop throw this products ....
          ...next category id ... 
          ...for loop ... etc 

но мой код не работает, любая справка?

Ответы [ 4 ]

1 голос
/ 13 декабря 2011
yes ,, it give me the same output .. filter only work for the first time ..

Попробуйте перезагрузить коллекции. Подобная проблема может быть здесь

$collection->clear();
$collection->....//here you add some logic for filtering;
$collection->load();//here collection with new filters will be loaded. 

ОБНОВЛЕНИЕ 1

Так что мой совет - создать в вашем блоке другой метод, который сбрасывает коллекцию. Или даже добавить сброс в функцию загрузки категории. Ну, это зависит от вас.

0 голосов
/ 25 декабря 2011

в collection.php добавьте эту функцию, вам не нужно писать имя класса, как я, я написал это, чтобы убедиться, что вы изменяете правильный файл

  class Mage_Catalog_Model_Resource_Product_Collection extends   Mage_Catalog_Model_Resource_Collection_Abstract

  public function addCategoryFilterH($request)
  {

    $this->_productLimitationFilters['category_id'] =$request;
    unset($this->_productLimitationFilters['category_is_anchor']);


    $this->_applyZeroStoreProductLimitations();

    $this->_applyProductLimitations();

        return $this;

в list.php "app/design/frontend/base/default/template/catalog/product/compare/list.phtml "добавьте этот код в начало вашего файла

<?php
$thiscount=clone $this;
$this1=clone $this;
$comparecats=array();
?>
 <?php foreach($thiscount->getItems() as $_item): ?>
        <?php


$att=$_item->getCategoryIds();
array_push($comparecats,$att[0]);

 ?>
  <?php endforeach;

echo "<br>";

 ?>

<?php

$comparecats = array_unique($comparecats);

$this2= clone $this;

?>

<?php foreach ($comparecats  as $cateid):
unset($this);
$this2=clone $this1;
$this2->getItems()->addCategoryFilterByCategoryId($cateid);
echo "<br>";
?>
.........for loop your products using this ...............
0 голосов
/ 25 декабря 2011

в collection.php добавьте эту функцию, вам не нужно писать имя класса, как я, я написал это, чтобы убедиться, что вы изменяете правильный файл

  class Mage_Catalog_Model_Resource_Product_Collection extends   Mage_Catalog_Model_Resource_Collection_Abstract

  public function addCategoryFilterH($request)
  {

    $this->_productLimitationFilters['category_id'] =$request;
    unset($this->_productLimitationFilters['category_is_anchor']);


    $this->_applyZeroStoreProductLimitations();

    $this->_applyProductLimitations();

        return $this;

в list.php "app/design/frontend/base/default/template/catalog/product/compare/list.phtml "добавьте этот код в начало вашего файла

<?php
$thiscount=clone $this;
$this1=clone $this;
$comparecats=array();
?>
 <?php foreach($thiscount->getItems() as $_item): ?>
        <?php


$att=$_item->getCategoryIds();
array_push($comparecats,$att[0]);

 ?>
  <?php endforeach;

echo "<br>";

 ?>

<?php

$comparecats = array_unique($comparecats);

$this2= clone $this;

?>

<?php foreach ($comparecats  as $cateid):
unset($this);
$this2=clone $this1;
$this2->getItems()->addCategoryFilterByCategoryId($cateid);
echo "<br>";
?>
.........for loop your products using this ...............
0 голосов
/ 13 декабря 2011

У меня есть только одна идея. Импортируйте продукт через Менеджер магазина для Magento в CSV, а затем сравните их. Я не уверен, что ваш код достаточно хорош для этого действия.

...