Domanda

Ho un sistema di sviluppo, qui è tutto funziona come previsto. E ho un sistema di stadiazione, qui l'attributo non viene caricato. Ci si sente come, sytem non lo so, che l'attributo non esiste nel negozio / attribute_set / ...?

Ho un artist_id attributi e questo attributo non viene caricato.

Le collezioni vengono inizializzati con l'attributo:

if (!is_null($this->_productCollection)) {
    return $this->_productCollection;
}
$collection = parent::_getProductCollection();
$collection->addAttributeToSelect('artist_id');

ho controllato castrato l'attributo è nella raccolta e che è:

[_selectAttributes:protected] => Array
    (
        [name] => 71
        [short_description] => 73
        [price] => 75
        [special_price] => 76
        [special_from_date] => 77
        [special_to_date] => 78
        [small_image] => 86
        [thumbnail] => 87
        [news_from_date] => 93
        [news_to_date] => 94
        [status] => 96
        [url_key] => 97
        [required_options] => 110
        [image_label] => 112
        [small_image_label] => 113
        [thumbnail_label] => 114
        [msrp_enabled] => 118
        [msrp_display_actual_price_type] => 119
        [msrp] => 120
        [tax_class_id] => 122
        [price_type] => 124
        [weight_type] => 126
        [price_view] => 127
        [shipment_type] => 128
        [links_purchased_separately] => 129
        [links_exist] => 132
        [artist_id] => 146
    )

Ma quando provo ad ottenere $_product->getArtistId() non v'è alcun id.

Debug su questo sistema è davvero difficile. Ho cercato di trovare la parte in cui la query è costruito, ma non ha trovato ancora.

UPDATE :. Tavole piatte sono OFF

E ora la parte cattiva: Un po '

<?php $_product->load($_product->getId()); ?>

nel foreach delle correzioni product/list.phtml del problema; -)

Per essere onesti:. Penso che ho rotto qualcosa nel database, mentre la modifica delle impostazioni directy nelle tabelle

Esiste un collegamento tra gli attributi e negozi?
Tutte le idee su questo problema?

È stato utile?

Soluzione 4

Ho abssolutely idea di come questo è accaduto, qui è la fine della storia:

Il backend_type stato varchar invece di int.

E 'ovvio per me, che la collezione non può caricare il artist_id se Magento non sanno dove cercare il valore, ma perché è un $_product->load() in grado di ottenere il valore? Devo indagare su questo.

Altri suggerimenti

Date un'occhiata a impostazioni degli attributi, assicurarsi che 'Visibile VAI pagina su Front-end' è sì e 'Usa in strati di navigazione' è sì troppo (solo se l'attributo è a discesa)

UPDATE:

Un'altra cosa che si può provare è l'aggiunta di:

    <product>
        <collection>
            <attributes>
                <artist_id/>
            </attributes>
        </collection>
    </product>

In config.xml di un modulo, nel sezione.

Se funziona su dev ma non su messa in scena - e il codice di base è una copia esatta -. Allora il problema è il vostro stesso DB

Si potrebbe facilmente confermare sostituendo la vostra messa in scena DB con quello del vostro sviluppo DB e vedere se succede ancora.

Quello che si sta descrivendo solo che non dovrebbe accadere a meno che non sei stato facendo modifiche manuali nel DB -. Oppure il codice è diverso sui vostri due siti

C'è un valore predefinito per l'attributo nella tabella EAV? Date un'occhiata a questa domanda:

SELECT
  `t_d`.`entity_id`,
  `t_d`.`attribute_id`,
  `t_d`.`value` AS `default_value`,
  `t_s`.`value` AS `store_value`,
  IF(t_s.value_id IS NULL, t_d.value, t_s.value) AS `value`
FROM `catalog_product_entity_varchar` AS `t_d`
LEFT JOIN `catalog_product_entity_varchar` AS `t_s`
  ON t_s.attribute_id = t_d.attribute_id AND t_s.entity_id = t_d.entity_id AND t_s.store_id = 3
...

Questo è il modo di Magento carica ogni attributo EAV in collezioni. Come si vede, se non v'è alcun valore impostato per l'archivio predefinito (nessuna voce nel database, NULL sarebbe bene), la prima parte della query restituirà alcun risultato, il LEFT JOIN non funzionerà e l'attributo vinto' t ottenere caricato -., anche se si dispone di un valore specifico negozio

Purtroppo mi sono imbattuto in questo già una volta, abbiamo fatto qualcosa di sbagliato con un'importazione e ho dovuto eseguire il debug di un bel po 'fino a quando ho finalmente capito cosa è successo. Forse controllare il vostro DB.

Forse provare:

$product->getData('artist_id');

Verificare se viene aggiunto l'attributo ( 'artist_id') al set Abilità per cui il particolare prodotto appartiene.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a magento.stackexchange
scroll top