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.

È stato utile?

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à:

entrare descrizione dell'immagine qui

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;
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a magento.stackexchange
scroll top