Posting in the Magento forums has been disabled pending the implementation of a new and improved forum solution which should better serve the community.

For new questions please post at magento.stackexchange.com, the community-run support site for the Magento community. We will be providing updates on the new forum solution soon. For questions or concerns please email community@magento.com.

Magento Forum

Come aggiungere le (sotto)categorie alla ricerca avanzata? 
 
mhcassa1
Jr. Member
 
Total Posts:  3
Joined:  2011-02-06
 

Salve ragazzi, qualcuno e’ riuscito ad aggiungere la ricerca per sottocategorie al form “ricerca avanzata” ??
Mi spiego meglio:
- ho una categoria A con zero prodotti che ha delle sotto categorie A1, A2, A3 ognuna con diversi prodotti;
- nella ricerca avanzata seleziono la categoria A ed il testo da cercare;

Comportamento attuale: zero risultati dato che in A non c’e’ nulla… giusto.
Comportamento voluto: la ricerca dovrebbe estendersi anche sulle sottocategorie di A e restituire i risultati.

Attualmente riesco a cercare i prodotti solamente nelle categorie di primo livello (A, B, C, ...) dato che il metodo
che utilizzo per filtrare i risultati e’ addCategoryFilter() che appunto prevede un unico parametro in ingresso.

Qualche idea?
Grazie in anticipo.

 
Magento Community Magento Community
Magento Community
Magento Community
 
duel78
Jr. Member
 
Total Posts:  7
Joined:  2010-07-14
 

O.T. Ragazzi incredibile :| !!! Mi sono ritrovato collegato nell’area utente di questo certo “marcos”.... vi posso assicurare al 1000% che questa domanda l’ho postata io qualche minuto fa!!!  Ora sono uscito da Firefox e ho aperto Opera per vedere come mi faceva entrare.. e sono di nuovo io… duel78!!! ... E’ normale sto fatto?! ... bah…

 
Magento Community Magento Community
Magento Community
Magento Community
 
duel78
Jr. Member
 
Total Posts:  7
Joined:  2010-07-14
 

!! RISOLTO !!

Mi rispondo da solo alla domanda e condivido con la community:

1) Per aggiungere la ricerca per categorie nella pagina “ricerca avanzata”, seguire i passi ottimamente descritti in questo articolo: http://www.magentocommerce.com/wiki/5_-_modules_and_development/search_and_advanced_search/how_to_add_search_by_category_to_advanced_search

2) Per ottenere una ricerca estesa anche alle sottocategorie di quella selezionata bisogna aggiungere le seguenti righe al file “app/code/core/Mage/Catalog/Model/Resource/Eav/Mysql4/Product/Collection.php”:

(cercare la funzione _applyProductLimitations())
Commentare questa riga
/*
$conditions[] = $this->getConnection()
->quoteInto(’cat_index.category_id=?’, $filters[’category_id’]);
*/

ed inserire queste successivamente al commento:
$subCategories = Mage::getModel(’catalog/category’)->load($filters[’category_id’])->getChildren();
if (strlen($subCategories)>0) $subCategories = ‘,’.$subCategories;
$conditions[] = $this->getConnection()->quoteInto(’cat_index.category_id IN (’.$filters[’category_id’].$subCategories.’)’, ‘’);

P.S. Voglio ricordare, come sempre, che assolutamente non sono responsabile di eventuali danni dovuti ad effetti collaterali del codice proposto e che tutte le modifiche sono state fatte e testate da me. Per questo non posso certificare in alcun modo che esse siano quelle “giuste” o, piu’ in generale, che siano coerenti con il modello di programmazione di Magento. (Anzi, a tal proposito sarebbe meglio scrivere dei moduli aggiuntivi in modo da aggiungere/rimuovere la funzionalita’ descritta tramite il pannello di controllo...)

 
Magento Community Magento Community
Magento Community
Magento Community
 
duel78
Jr. Member
 
Total Posts:  7
Joined:  2010-07-14
 

c.v.d.... bisogna controllare che la categoria selezionata non sia la Madre, altrimenti va in errore!!
Riepilogo quindi il codice da me inserito:

$selectedCategory Mage::getModel('catalog/category')->load($filters['category_id']);
        if(
$selectedCategory->isInRootCategoryList()){
            $subCategories 
$selectedCategory->getChildren();
            if (
strlen($subCategories)>0$subCategories ','.$subCategories;
            
$conditions[] $this->getConnection()->quoteInto('cat_index.category_id IN ('.$filters['category_id'].$subCategories.')''');
        
else {
            $conditions[] 
$this->getConnection()->quoteInto('cat_index.category_id=?'$filters['category_id']);
        
}

P.S. ..stesso del precedente messaggio!! wink

 
Magento Community Magento Community
Magento Community
Magento Community
Magento Community
Magento Community
Back to top