Produttore non funziona in cerca
-
16-10-2019 - |
Domanda
Nella lista dei prodotti, mi mostrano il produttore e il tutto funziona bene. Ma quando faccio una ricerca, invece di mostrare il nome del fabbricante mostra No. Io uso il seguente codice per mostrare i marchi:
$_product->getResource()->getAttribute('manufacturer')->getFrontend()->getValue($_product)
sto usando Magento 1.7.0.2.
Soluzione
Diagnosticare il problema reale:
- Assicurarsi che la raccolta del prodotto utilizzato per la ricerca include l'attributo produttore o produttore che l'attributo è impostato nel backend per la visualizzazione sul frontend (vedi screenshot qui sotto).
- Assicurarsi che l'attr
manufacturer
è impostato per il appropriato vista negozio ! Nel gestire catalogo di modifica Apri, assicurarsi che la discesa viene impostata per il valore della vista negozio, non la vista negozio / sito / default . - Assicurarsi che si sta reindicizzazione. Se siete su CE, eseguire l'indicizzatore manualmente. Se da EE assicurarsi che gli indici vengono aggiornati da cron o via
$ php shell/indexer.php reindexall
. - Cancella tutte le cache. memoria cache a filo.
rm -rf var/cache
e tutte le cose distruttive. Controllare l'esistenza di una cartella/tmp/magento
. - blocco / abilitazione catalogo piatta e reindex.
Attivazione di un attributo per la pagina di frontend / prodotto / collezione visibilità:
Perché questo accade:
Quindi, non v'è un motivo valido il motivo per cui i rendimenti Magento "No" quando non ci sono dati disponibili. Il metodo getFrontend
restituisce un oggetto che è una sottoclasse di Mage_Eav_Model_Entity_Attribute_Frontend_Abstract
.
Nel metodo getValue
, se non ci sono opzioni disponibili / set, il valore predefinito è booleano uscita. Così, il valore di "No" - che è il frontend equivalente booleano di false
:
public function getValue(Varien_Object $object)
{
$value = $object->getData($this->getAttribute()->getAttributeCode());
if (in_array($this->getConfigField('input'), array('select','boolean'))) {
$valueOption = $this->getOption($value);
if (!$valueOption) {
$opt = Mage::getModel('eav/entity_attribute_source_boolean');
//....
Una volta che il sopra di punti di risoluzione dei problemi sono fatto - se si continua a ricevere "No" ed è una risposta adeguata (per esempio non avete impostato produttore su un prodotto, e di proposito) si consiglia di testare in modo condizionale l'uscita prima eco:
$value = $_product->getResource()->getAttribute('manufacturer')->getFrontend()->getValue($_product);
echo $value=="No" ? "" : $value;