2015-04-30 5 views
0
<?php 
$needle= $_GET["singleid"]; 

$collection = Mage::getModel('catalog/product')->getCollection()->load(); 

$_productCollection = $collection->addAttributeToFilter('name', array(
    array('like' => '% '.$needle.' %'), //spaces on each side 
    array('like' => '% '.$needle), //space before and ends with $needle 
    array('like' => $needle.' %') // starts with needle and space after 
)); 
foreach ($_productCollection as $_product){ 
    echo $_product->getId().'</br>'; 
    echo $_product->getName().'</br>'; 
    **echo $_product->getProductUrl().'</br>';**//getting this only 
    echo $_product->getPrice().'</br>'; 
} 

?> 

Я пытаюсь получить коллекцию продуктов на основе названия продукта, но я получаю только URL-адрес продукта. Я пытаюсь получить другие атрибуты, такие как имя. Моя цель - создать страницу поиска.magento коллекция продуктов по названию

+0

Проблема заключается в том, что вы загрузили коллекции перед добавлением фильтров , Просто удалите -> load() из getCollection(). –

ответ

1

Вероятно, это могло бы помочь:

$searchstring = 'Slim fit'; 
$productCollection = Mage::getModel('catalog/product') 
         ->getCollection() 
         ->addAttributeToSelect('name') 
         ->addAttributeToFilter('name', array('like' => '%'.$searchstring.'%')); 

foreach ($productCollection as $_product){ 

      echo $_product->getId().'</br>'; 
      echo $_product->getName().'</br>'; 
      echo $_product->getProductUrl().'</br>'; 
      echo $_product->getPrice().'</br>'; 

     } 
+0

спасибо @manashvi birla, который работает –

+0

рад помочь вам :) –

0

Возможно, вы могли бы попробовать некоторые вещи, как

$ _category = Mage :: getModel ('каталог/категория') -> loadByAttribute ('имя', 'Некоторые Name');
$ _product = Mage :: getModel ('catalogue/product') -> loadByAttribute ('name', 'some name xyz');

Это может вам помочь

1

Вам необходимо выбрать эти атрибуты.

 $needle= $_GET["singleid"];   
     $collection = Mage::getModel('catalog/product')->getCollection()->addAttributeToFilter('name', array(
       array('like' => '% '.$needle.' %'), //spaces on each side 
       array('like' => '% '.$needle), //space before and ends with $needle 
       array('like' => $needle.' %') // starts with needle and space after 
     )); 
     $collection->addAttributeToSelect('name', 'entity_id', 'price'); 
     foreach ($collection as $_product){ 

      echo $_product->getId().'</br>'; 
      echo $_product->getName().'</br>'; 
      echo $_product->getProductUrl().'</br>';//getting this only 
      echo $_product->getPrice().'</br>'; 

     } 

Проверить here для получения дополнительной информации

+0

это возвращает нулевое значение. Мне нужно добавить дополнительный код. –

+0

Нулевое значение означает, пустое? Я просто проверил этот код, он дает всю информацию? –

+0

yes empty Фактически я ссылался на эту ссылку [проверить] (http://magento.stackexchange.com/questions/11082/filtering-results-using-like) –

0

Вы можете попробовать это

$searchstring = 'abc' // search string 
$product_collection = Mage::getResourceModel('catalog/product_collection') 
       ->addAttributeToSelect('*') 
       ->addAttributeToFilter('name', array('like' => '%'.$searchstring.'%')) 
       ->load(); 

foreach ($product_collection as $product) { 
    $ids[] = $product->getId(); 
} 
//return array of product ids 
+0

Результат пуст –

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