Ordina i prodotti nella vista del catalogo di frontend in base a quale set di attributo appartiene a
-
12-12-2019 - |
Domanda
Usando Magento CE 1.9.0.1.
Stiamo cercando di trovare un modo per ordinare i prodotti sul nostro sito in base a quale set di attributi sono stati creati. Vendiamo vestiti sul nostro sito in modo da avere un numero di set di attributi come cappelli, pantaloni, tee, accessori, ecc.
Ho i mezzi per ordinare per attributo :
.
$_productCollection = Mage::getModel('catalog/product')->getCollection();
$_productCollection->addAttributeToSelect('*');
$_productCollection->addAttributeToSort('display_order', 'ASC');
$_helper = $this->helper('catalog/output');
Ma questo copre gli attributi all'interno di un set di attributi. C'è un modo per includere un campo "Attributo Set" nel modello del catalogo per l'ordinamento? Attualmente sto lavorando con app / design / frontend / mypackage / mitheme / template / catalogo / prodotto / lista.phtml.
Esempio: abbiamo una pagina "nuova" in cui i prodotti di tutte le varie categorie mostreranno. Vedrai un nuovo cappello, una nuova maglietta, nuovi pantaloni, ecc. Ma vorremmo che tutti i nuovi cappelli siano raggruppati insieme (che sarebbe stato fatto per ordinare il set di attributi), i pantaloni per stare insieme, le T-shirt, e così.
** Modifica: ** Ho trovato un modo per accedere al set di attributi dell'oggetto del prodotto ... https://stackoverflow.com/questions/2091375/how-do--get-attribute-set-name Ora devo solo sapere come ordinare per quel pezzo di dati.
Soluzione
Avevo usato l'osservatore per questo nella tua customModule e in questo ecc
<events>
<catalog_product_collection_load_after>
<observers>
<product_load_before>
<type>singleton</type>
<class>Yourpackagename_Yourmodulename_Model_Observer</class>
<method>load_productsby_attributesetid</method>
</product_load_before>
</observers>
</catalog_product_collection_load_after>
</events>
.
Anche in customModule / modello / obeserver.php sotto la cartella del modello Modules Aggiungi il codice seguente
<?php
class Yourpackagename_Yourmodulename_Model_Observer{
public function load_productsby_attributesetid($observer){
$collection = $observer->getCollection();
$collection->addAttributeToSelect('*')->addAttributeToSort('attribute_set_id', 'asc');
return $collection;
}
}
?>
. Altri suggerimenti
Puoi provare l'ordinamento per 'attribute_set_id'.