2013-12-18 21 views
7

Sto tentando di mostrare un prodotto nella visualizzazione comparativa, che è impostato come status = disabled tramite il pannello di amministrazione.Mostra prodotti disattivati ​​/ disabilitati nella visualizzazione comparativa

In Magento di default, questo non sembra possibile in quanto i prodotti con disabilità non sono visibili nella lista prodotto pagina così come i dettagli del prodotto pagina.

In qualche modo, sono riuscito a mostrare i prodotti disabili in pagina elenco prodotto e dettagli del prodotto pagina sovrascrivendo Mage_Catalog_Helper_Product. In che ho commentato il seguente codice:

// if (!$this->canShow($product)) { 
    //  return false; 
    // } 

Ora, per favore qualcuno mi aiuti su come mostrare il prodotto disattivato anche nella visualizzazione confronto?

+0

Ho cercato completo confronto sezione nel file core, ma non ho trovato nulla .. –

risposta

4

Dopo aver cercato per molto tempo e non riuscendo a estrarre una soluzione dai file core di mage, ho creato un attributo che corrisponde all'attributo status. Ho chiamato questo attributo come Archive (Sì/No). Questo nuovo attributo giustificherebbe se un prodotto è stato sospeso o meno.

Atlast, filtro tutto il mio elenco prodotti, i dettagli del prodotto e la home page relativi a questo nuovo attributo Archive.

sto progettando di scrivere un azione MVC, che cambierà tutti i prodotti status come enabled e allo stesso tempo far scattare il Archive come sì per i status = disabled prodotti. Condividerò il codice qui presto.

Codice:

Scrivi un controller manichino che gestisce il seguente codice quando l'URL si chiama:

public function updateproductsAction() { 
    Mage::app()->setCurrentStore(Mage_Core_Model_App::ADMIN_STORE_ID); 

    $collectionConfigurable = Mage::getResourceModel('catalog/product_collection') 
      ->addAttributeToFilter('type_id', array('eq' => 'configurable')) 
      ->addAttributeToFilter('entity_id', array('gt' => 0));  // This line should be removed to affect all the configurable products. (to avoid execution time-out) 

    echo 'Total are ' . count($collectionConfigurable) . '<br/>'; 
    $i = 1;       
    foreach($collectionConfigurable as $p) { 
     $product = Mage::getModel('catalog/product')->load($p->getId()); 
     $product->save(); 
     echo $i++ . ') The product Id with ' . $p->getId() . " is done...." . "<br/>"; // if the execution time-out occurs, note down the last product id and change the value above in addAttributeToFilter. so the execution runs from the last stopped product. 
    } 
} 
4

potrebbe voler controllare: funzione pubblica IsEnabled

in Magento \ app \ code \ Core \ Mage \ Catalog \ Helper \ prodotto \ Flat.php

+0

Si consiglia di prestare attenzione poiché si basa sullo store utilizzando tabelle piatte. Non tutti i negozi hanno abilitato questo per un motivo o un altro. –

4

io ho preso una rapida occhiata in quello che il blocco sta creando la lista. Un buon punto di partenza sarebbe il seguente file:

app/code/core/Mage/Catalogo/blocchi/prodotto/confronto/list.php

C'è una getItems funzione che è responsabile per ottenere gli articoli pronto per essere visualizzato sul front-end. Al termine di questa funzione passa gli articoli attraverso il metodo di visibilità:

Mage::getSingleton('catalog/product_visibility') 
       ->addVisibleInSiteFilterToCollection($this->_items); 

Im non sicuro al 100% se la rimozione di questa sezione finale del codice che ottiene ciò che si vuole, ma ad un livello molto di base è possibile modificare la collezione per ignorare lo stato che hai impostato.

+0

Se commento/rimuovo il codice precedente, posso ottenere 'prodotti semplici' nella mia sezione di confronto. Intendo dire che il codice è per abilitare i prodotti 'semplici prodotti' non' interrotti/disabilitati'.Sono sicuro al 100% perché l'ho fatto di recente nel mio progetto :) –

Problemi correlati