Domanda

Sto cercando di creare la collezione di tutte le 5 recensioni dei prodotti con attributo specifico (ad esempio - brand). Qui è il mio codice corrente che visualizza solo le ultime 5 recensioni:

<?php 
$reviews = Mage::getModel('review/review')->getResourceCollection();
$reviews->addStoreFilter( Mage::app()->getStore()->getId() )
                ->addStatusFilter( Mage_Review_Model_Review::STATUS_APPROVED )
                ->setDateOrder()
                ->addRateVotes()
                ->setPageSize(5)
                        ->setCurPage(1)
                ->load();


?>
<!-- Print reviews -->
<ol>
<?php
foreach($reviews as $review) {
    $review_data = $review->getData();
    $product = Mage::getModel('catalog/product')->load( $review_data['entity_pk_value'] );
    ?>
    <li>
        <h4>Review of: <?php echo $product->getName() ?></h4>
        <p><?php echo $review_data['detail']; ?></p>
    </li>
    <?php
}
?>
</ol>

C'è un modo di applicare alcuni filtri per la raccolta $reviews in modo che sarà contiene solo recensioni specifico nome di attributo?

Grazie per l'aiuto.

UPD: codice che funziona: https://gist.github.com / dimsemenov / 5845535

È stato utile?

Soluzione

Supponiamo che il vostro tipo di attributo ha int. In questo caso si può fare qualcosa di simile:

$collection = Mage::getModel('review/review')->getCollection()
    ->addStoreFilter(Mage::app()->getStore()->getId())
    ->addStatusFilter(Mage_Review_Model_Review::STATUS_APPROVED)
    ->setDateOrder()
    ->addRateVotes()
    ->setPageSize(5)
    ->setCurPage(1);

$collection->getSelect()
    ->join(array('attr' => 'catalog_product_entity_int'), 'attr.entity_id = main_table.entity_pk_value', array('*'))
    ->where('attr.attribute_id = 272');

Dove 272 è il del vostro attributo id.

Se si vuole anche limitare una raccolta di recensioni di prodotti con set di attributi specifici per valore specifico è possibile aggiungere qualcosa di simile alla fine

->where('attr.value = 24')

Dove 24 è il valore della vostra attributo.

Se l'attributo è di tipo diverso allora basta sostituire catalog_product_entity_int con tavolo EAV del attributo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a magento.stackexchange
scroll top