recensioni di visualizzazione di attributo specifico
-
16-10-2019 - |
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
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.