Salut.
Uite cum am facut eu.
Am agaugat un nou atribut de tip da/nu pe produs. (cred ca se poate si fara dar e mai usor de facut selecturi cu atributul respectiv).
Sa ul numim ‘has_zero_price’.
Atributul e global (sau la are scop ‘website’ daca atributul pret are scop ‘website’) si are ‘use_in _product_listing’ true.
Am facut un observer care la salvarea produsului, in cazul in care pretul este 0 atunci seteaza acest atribut pe ‘Da’(1). Daca pretul e diferit atunci atributul are valoare ‘Nu’(0).
Apoi am suprascris clasa Mage_Catalog_Model_Resource_Product_Collection.
(ghid pentru a suprascrie un model)
Mai exact metoda addAttributeToSort.
Arata asa in clasa mea:
public function addAttributeToSort($attribute, $dir = self::SORT_ORDER_ASC) { if ($attribute == 'price'){ parent::addAttributeToSort('has_zero_price', 'asc'); } return parent::addAttributeToSort($attribute, $dir); }
Totul functioneaza fara nici o problema.
Dezavantajul e ca trebuie salvate (manual sau print-un script) produsele care au deja pret 0 la momentul adaugarii atributului. pentru ca acesta sa se seteze pe ‘Da’.
OK...uita ce am scris mai sus.
Functioneaza si codul ala, dar dupa ce am scris post-ul am incercat sa gesesc o metoda mai simpla fara alte atribute aditionale.
Iata ce mi-a iesit.
Trebue suprascrisa metods Mage_Catalog_Model_Resource_Product_Collection::addAttributeToSort().
Pentru asta poti crea o extensie noua.
O sa o numim Easylife_Catalog. (poti schimba Easylife in ce vrei tu, doar sa a grija sa schimbi peste tot.)
Ai nevoie de urmatoarele fisiere:
app/code/local/Easylife/Catalog/etc/config.xml:
Inca un “tip”.
Daca vrei ca pentru produsele cu pret 0 sa se afiseze mesajul ‘Produsul este disponibil’ ar fi mai bine sa modifici direct app/design/{interface}/{theme}/catalog/product/price.phtml
<?php $_product = $this->getProduct(); if ($_product->getPrice() == 0){ echo \'<div class="price-box"><span>Produsul este disponibil</span></div>'; } else{ //continutul initial al fisierului aici. }
Asta iti asigura ca oriunde ar aparea produsul (lista, detalii produs, related products, upsells, crosssells, search) in locul pretului va aparea mesajul tau.
Bafta,
Marius.
Salut
Mda...se pare ca pentru Magento 1.5 e putin diferit.
Pentru mine a mers in felul urmator.
Fisierele de creat sunt aceleasi. Doar continutul a doua dintre ele difera.
app/code/local/Easylife/Catalog/etc/config.xml: