2015-05-11 1 views
0

Привет, я добавил новое отношение продукта в magento, названное в качестве аксессуаров.сортировка и пейджер не работают над пользовательской коллекцией Magento

Как я есть основной продукт А, и я должен приложить B C и D с ней как аксессуарах

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

поэтому я решил вынести пользовательскую коллекцию в списке .phtml

для этого я вынести пользовательскую коллекцию в _getProductCollection()

по ниже кода

if($_GET['product_id']) 
     { 

      $productid=$_GET['product_id']; 
      $product = Mage::getModel('catalog/product_link') 
      ->getCollection() 
      ->addFieldToFilter('link_type_id', 6) 
      ->addFieldToFilter('product_id',$productid) 
      ->load(); 
      $LinkedProduct=$product->getData(); 
      foreach($LinkedProduct as $LinkedProducts) 
      { 
      $LinkedProductId[]= $LinkedProducts['linked_product_id']; 
      } 
      $productIds = array_values($LinkedProductId); 

      $_productCollection=Mage::getModel('catalog/product') 
      ->getCollection() 
      ->addAttributeToSelect('*') 
      ->addAttributeToFilter('entity_id', array('in' => $productIds)) 
      ->load(); 
      $this->_productCollection=$_productCollection; 

    }else{ 




     if (is_null($this->_productCollection)) { 
      $layer = $this->getLayer(); 
      /* @var $layer Mage_Catalog_Model_Layer */ 
      if ($this->getShowRootCategory()) { 
       $this->setCategoryId(Mage::app()->getStore()->getRootCategoryId()); 
      } 

      // if this is a product view page 
      if (Mage::registry('product')) { 
       // get collection of categories this product is associated with 
       $categories = Mage::registry('product')->getCategoryCollection() 
        ->setPage(1, 1) 
        ->load(); 
       // if the product is associated with any category 
       if ($categories->count()) { 
        // show products from this category 
        $this->setCategoryId(current($categories->getIterator())); 
       } 
      } 

      $origCategory = null; 
      if ($this->getCategoryId()) { 
       $category = Mage::getModel('catalog/category')->load($this->getCategoryId()); 
       if ($category->getId()) { 
        $origCategory = $layer->getCurrentCategory(); 
        $layer->setCurrentCategory($category); 
        $this->addModelTags($category); 
       } 
      } 
      $this->_productCollection = $layer->getProductCollection(); 

      $this->prepareSortableFieldsByCategory($layer->getCurrentCategory()); 

      if ($origCategory) { 
       $layer->setCurrentCategory($origCategory); 
      } 
     } 
} 
     return $this->_productCollection; 
    } 

The collection is working fine

, но проблема является сортировка и панель инструментов не работает

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

ответ

0

ОК я должен решить эту проблему путем добавления функции сортировки в коллекции, как показано ниже код

$productid=$_GET['product_id']; 
    $product = Mage::getModel('catalog/product_link') 
    ->getCollection() 
    ->addFieldToFilter('link_type_id', 6) 
    ->addFieldToFilter('product_id',$productid) 
    ->load(); 
    $LinkedProduct=$product->getData(); 
    foreach($LinkedProduct as $LinkedProducts) 
    { 
    $LinkedProductId[]= $LinkedProducts['linked_product_id']; 
    } 
    $productIds = array_values($LinkedProductId); 

    $_productCollection=Mage::getModel('catalog/product') 
    ->getCollection() 
    ->addAttributeToSelect('*') 
    ->addAttributeToFilter('entity_id', array('in' => $productIds)) 
    ->addAttributeToSort($_GET['order'],$_GET['dir']) 
    ->setPageSize($_GET['limit']) 
    ->load(); 
    echo $_productCollection->getSelect() ; 
    $this->_productCollection=$_productCollection; 

сортировкой не работает, потому что там wqas никакой функции сортировки, добавленной в colection

->addAttributeToSort($_GET['order'],$_GET['dir']) 
     ->setPageSize($_GET['limit']) 

теперь он отлично работает.

спасибо

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