2017-05-21 4 views
0

Mein PHP-Wissen ist etwas begrenzt und ich arbeite mit Magento 1.9.3.Magento-Tags-Sammlung für mehrere Produkte

Ich brauche eine Tags Sammlung von mehreren Produkten anzuzeigen und ich verstehe nicht, warum dieser Code nicht funktioniert:

//List of my products 
$displayProduct = $this->getCollection(); 
ob_start(); 
foreach ($displayProduct as $_product) { 
    echo ($_product->getId().','); 
} 
$output = substr(ob_get_clean(), 0, -1); 
echo $output; 

// Tags list 
$model = Mage::getModel('tag/tag'); 
$TaGCollection = $model->getResourceCollection() 
    ->addPopularity() 
    ->addProductFilter(array($output)) 
    ->setFlag('relation', true) 
    ->addStoreFilter(Mage::app() 
    ->getStore()->getId()) 
    ->limit(30) 
    ->setActiveFilter() 
    ->load(); 

Die erste Kollektion zeigt diese Liste von Produkten ids richtig:

548,549,650,675,676,686,761,534,535,533,766,767,768,772,778,783,786,790,794,814,818 

Wenn ich diese Liste als Array-Werte in der zweiten Sammlung einfügen, funktioniert es. Aber wenn ich die Variable $output in die zweite Sammlung einfügen, funktioniert es nicht.

Was habe ich vermisst?

Antwort

0
//List of my products 
    $displayProduct = $this->getCollection(); 
    $output = array(); /declaration as an arraY 
    foreach ($displayProduct as $_product) { 
     array_push($output,$_product); //PUSH Product Ids in $output 
    } 



    // Tags list 
    $model = Mage::getModel('tag/tag'); 
    $TaGCollection = $model->getResourceCollection() 
      ->addPopularity() 
      ->addProductFilter($output) 
      ->setFlag('relation', true) 
      ->addStoreFilter(Mage::app() 
      ->getStore()->getId()) 
      ->limit(30) 
      ->setActiveFilter() 
      ->load(); 
0

// die Sammlung von Produkten Get

$displayProduct = $this->getCollection(); 
$output = array(); //declaration as an array 
foreach ($displayProduct as $_product) { 
array_push($output,$_product->getId()); //PUSH Product Ids in $output 
} 

// Get Stichworte von Produkt-IDs, ist, dass basierend auf $ Ausgangsgröße

$model = Mage::getModel('tag/tag'); 
$TagCollection = $model->getResourceCollection() 
->addPopularity() 
->addProductFilter($output) 
->setFlag('relation', true) 
->addStoreFilter(Mage::app() 
->getStore()->getId()) 
->limit(30) 
->setActiveFilter() 
->load(); 

Dann Schleife durch den $ TagCollection zu Holen Sie sich die Tags einzeln.

0

Nun, diese Lösung wirklich funktioniert:

//List of my products 
$displayProduct = $this->getCollection(); 
ob_start(); 
foreach ($displayProduct as $_product) { 
    echo ($_product->getId().', '); 
} 
$output = substr(ob_get_clean(), 0, -2); 
$productIds = explode(', ', trim($output)); 

// Tags list 
$model = Mage::getModel('tag/tag'); 
$TaGCollection = $model->getResourceCollection() 
    ->addPopularity() 
    ->addFieldToFilter('product_id', array('in' => $productIds)) 
    ->setFlag('relation', true) 
    ->addStoreFilter(Mage::app() 
    ->getStore()->getId()) 
    ->limit(30) 
    ->setActiveFilter() 
    ->load(); 

Vielen Dank für Ihre Antworten !! :)

Verwandte Themen