Prodotti configurabili e set di attributi


18

TL; DR : C'è qualche motivo per cui i prodotti semplici associati a un prodotto configurabile devono trovarsi nello stesso set di attributi del prodotto configurabile stesso? Voglio dire, c'è qualche motivo tecnico ? Conosco la ragione del "buon senso". Se vendi un paio di scarpe, anche tutte le versioni a seconda del colore e delle dimensioni devono essere scarpe .
Versione lunga : avevo il compito di "unire" alcuni prodotti configurabili. Voglio dire da 2 o più per fare solo uno. Non volevo farli manualmente a causa della quantità di prodotti e non volevo esaminarli$product->load(..)->set...()->save()a causa del tempo impiegato per eseguire lo script. Quindi ho messo in corto circuito il processo perché ero sicuro che nessuno dei prodotti semplici si sovrapponesse. C'era una combinazione unica di dimensioni e colore. L'ho fatto:

Mage::getResourceSingleton('catalog/product_type_configurable')
    ->saveProducts($mainConfigrableProduct, $simpleProductIds);

dove $simpleProductIdsè presente una matrice di tutti gli ID prodotto semplici associati a tutti i prodotti configurabili che devono essere uniti.
Questo ha funzionato perfettamente per la maggior parte dei prodotti, ma ce n'erano alcuni che presentavano problemi.
Se ho chiamato

$productIds = $product->getTypeInstance()->getUsedProductIds() 

Vorrei ottenere tutti i semplici ID prodotto, ma nel backend ne sono apparsi solo alcuni. Dopo aver scavato per un po 'di tempo, ho scoperto che gli unici mostrati erano quelli nello stesso set di attributi del prodotto configurabile. L'altro set di attributi è molto simile al primo, solo alcune differenze minori ma contiene gli attributi configurabili (dimensioni e colore).
E ora la cosa strana. Nel frontend mi aspettavo di vedere tutti i prodotti ($ productIds nel codice sopra) o solo i prodotti nello stesso set di attributi. Beh, c'era qualcosa tra.

  • 20 ID prodotto associati - 5 taglie, 4 colori
  • 10 prodotti associati nel backend - 5 taglie, 2 colori - gli altri 2 colori (10 prodotti) erano in un set di attributi diverso
  • 15 combinazioni nel frontend - 5 taglie 3 colori (???)

Sono stato in grado di risolvere il problema modificando il set di attributi per i prodotti che non venivano visualizzati, ma sono ancora perplesso.

Nota : non provarlo a casa. Oppure puoi provarlo a casa ma non su un server live.

Risposte:


13

Dopo aver chiesto in giro questo sono i motivi che ho. Spero sia soddisfacente per te, anche se probabilmente è quello che ti aspettavi.

  1. L'interfaccia adminhtml è stata creata con l'intenzione di rendere difficile per i commercianti rovinare totalmente.

Per questa ragione molte funzionalità fornite da Magento come Framework non sono possibili attraverso l'interfaccia utente.
Il motivo per cui solo i prodotti nello stesso set di attributi sono selezionabili come prodotti semplici associati per configurabili è perché è quello che era nelle specifiche.
Come hai detto, in un certo senso ha senso in questo modo.

  1. Un altro motivo è pensare allo scopo degli insiemi di attributi. Uno dei motivi per cui esistono è la riduzione del numero di attributi e opzioni che devono essere caricati ed elaborati durante una richiesta. Applicare questo pensiero ai configurabili ha senso, poiché è un tipo di prodotto relativamente costoso.

Poiché il back-end è stato creato in questo modo, la logica del front-end configurabile non avrebbe mai dovuto gestire prodotti semplici da diversi set di attributi.
Ecco perché le restrizioni non sono state implementate completamente lì.

Probabilmente sarebbe facile far funzionare i configurabili con semplici da diversi set di attributi. Semplicemente non era destinato in questo modo.

Non ho chiesto altro e non ho guardato me stesso per vedere quale interazione di codice ha prodotto esattamente lo strano risultato sul frontend. Probabilmente non è importante, poiché se avessi capito bene dove chiedevi il ragionamento dietro la decisione di escludere prodotti semplici da insiemi di attributi diversi da quelli configurabili, non dalla spiegazione del codice.


Grazie Vinai. Speravo profondamente nella mia mente per una ragione "strabiliante". Sarebbe stato divertente :). Questa è una spiegazione soddisfacente. Per quanto riguarda lo "strano risultato", non è necessario scavare nel codice. Lo farò quando mi annoierò. Ho ancora il dump del DB e il modo di riprodurre lo stesso risultato. Molto probabilmente è perché stavo avvitando direttamente nel database. Pubblicherò un risultato quando / se ne troverò uno.
Marius

2
Tsk tsk, @Marius - non toccare il db;)
Philwinkle,

4
@philwinkle. Lo so, lo so, l'universo esploderà se lo fa. Cosa posso dire? Mi piace vivere pericolosamente. A mia difesa, ho detto "non provarlo su un server live".
Marius

1
Sto ancora aspettando di farmi esplodere la mente ... :)
Vinai,

2

Usiamo un'estensione chiamata RapidFlow di Unirgy (che non posso consigliare vivamente) per l'importazione e l'esportazione. Una delle funzionalità della versione Pro consente di modificare i set di attributi. Un altro è la creazione di prodotti tramite importazione CSV. Occasionalmente creiamo nuovi prodotti semplici per configurabili, e talvolta per caso quei prodotti semplici hanno set di attributi diversi rispetto ai loro genitori.

Rapidflow importerà felicemente questi prodotti e cambierà i set di attributi. Tendiamo a non essere contenti dei risultati. I prodotti configurabili configurati da attributi al di fuori del loro set di attributi non vengono visualizzati nell'amministratore del prodotto e devono essere riparati. Se non cambiamo il set di attributi del genitore, come hai notato, i figli non riescono a essere associati correttamente al genitore. Esistono come entità Magento, possono essere modificati, ma non verranno visualizzati come elementi secondari nella pagina del prodotto front-end o nell'elenco dei prodotti associati configurabili.

Quindi, da un punto di vista puramente tecnico, è possibile che prodotti semplici si trovino in un set di attributi diverso rispetto al loro genitore. Ma poiché questo comportamento non è supportato, nemmeno in EE, e così Occam's Razor afferma che quando progettavano Magento gli sviluppatori Varien non ne vedevano la necessità.


1
Grazie per la risposta (e la raccomandazione di estensione) ma questo non risponde alla mia domanda. Ho detto che sono riuscito a risolvere il mio problema modificando direttamente il database. So che non dovrei farlo, ma avevo una buona conoscenza di ciò che stavo facendo - e un backup del database :). Ero solo curioso di sapere perché esiste questa restrizione. Per quanto riguarda "Gli sviluppatori Varien non hanno visto la necessità" Ho la sensazione che ti sbagli. Se si applica una restrizione, questa deve essere una ragione.
Marius
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.