Pregunta

Tl; DR: ¿Hay alguna razón por la cual los productos simples asociados a un producto configurable deben estar en el mismo conjunto de atributos que el producto configurable en sí? Quiero decir, ¿hay alguna técnico ¿razón? Conozco la razón del "sentido común". Si vendes un par de Zapatos entonces todas las versiones dependiendo del color y el tamaño tienen que ser Zapatos además.
Versión larga: Tenía la tarea de "fusionar" algunos productos configurables. Quiero decir de 2 o más para hacer solo uno. No quería hacerlo manualmente debido a la cantidad de productos y no quería pasar $product->load(..)->set...()->save() Debido a la cantidad de tiempo que tardó en ejecutar el guión. Así que cortocuité el proceso porque estaba seguro de que ninguno de los productos simples se superponía. Hubo una combinación única de tamaño y color. Hice esto:

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

dónde $simpleProductIds es una variedad de todas las ID de producto simples asociadas a los productos configurables que deben fusionarse.
Esto funcionó perfectamente para la mayoría de los productos, pero hubo algunos que tienen problemas.
Si llamaba

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

Obtendría todas las ID de producto simples, pero en el backend solo aparecieron unos pocos. Después de cavar durante algún tiempo, descubrí que los únicos que se mostraron eran los que estaban en el mismo conjunto de atributos que el producto configurable. El otro conjunto de atributos es muy similar al primero, solo algunas diferencias menores, pero contiene los atributos configurables (tamaño y color).
Y ahora lo extraño. En la frontend esperaba ver todos los productos ($ productids en el código anterior) o solo los productos en el mismo conjunto de atributos. Bueno, había algo entre.

  • 20 ID de producto asociados: 5 tamaños, 4 colores
  • 10 productos asociados en el backend - 5 tamaños, 2 colores - los otros 2 colores (10 productos) estaban en un conjunto de atributos diferente
  • 15 combinaciones en la frontend - 5 tamaños 3 colores (???)

Pude resolver el problema cambiando el conjunto de atributos para los productos que no aparecieron, pero todavía estoy desconcertado.

Nota: No intentes esto en casa. O puede probarlo en casa pero no en un servidor en vivo.

¿Fue útil?

Solución

Después de preguntar sobre esto, están las razones por las que tengo. Espero que sea satisfactorio para ti, aunque probablemente sea lo que esperabas.

  1. La interfaz AdminHTML se realizó con la intención de dificultar que los comerciantes se arruinen por completo.

Por esa razón, muchas características proporcionadas por Magento como marco no son posibles a través de la interfaz de usuario.
La razón por la cual solo los productos en el mismo conjunto de atributos se pueden seleccionar como productos simples asociados para configurables es porque eso es lo que estaba en las especificaciones.
Como dijiste, tiene sentido así.

  1. Otra razón es pensar en el propósito de los conjuntos de atributos. Una de las razones por las que existen es reducir la cantidad de atributos y opciones que deben cargarse y procesarse durante una solicitud. Aplicar este pensamiento a los configurables tiene sentido, ya que es un tipo de producto costoso relativamente recursos.

Debido a que el backend se construyó de esa manera, se esperaba que la lógica frontend para configurable nunca tratara con productos simples de diferentes conjuntos de atributos.
Es por eso que las restricciones no se implementan completamente allí.

Probablemente sería fácil hacer que los configurables funcionen con simples de diferentes conjuntos de atributos. Simplemente no se pretendía así.

No pregunté más y no me busqué para ver qué interacción de código produjo exactamente el extraño resultado en el interfaz. Probablemente no sea importante, ya que si lo entendí correctamente, pidiendo el razonamiento detrás de la decisión de excluir productos simples de los conjuntos de atributos diferentes a la explicación configurable, no del código.

Otros consejos

Utilizamos una extensión llamada RapidFlow por Unirgy (que no puedo recomendar lo suficiente) para la importación y exportación. Una de las características en la versión Pro permite el cambio de conjuntos de atributos. Otra es la creación de productos a través de la importación CSV. Ocasionalmente, creamos nuevos productos simples para configurables, y a veces, por accidente, esos productos simples tienen diferentes conjuntos de atributos que sus padres.

Rapidflow importará felizmente estos productos y cambiará los conjuntos de atributos. Tendemos no contentos con los resultados. Los productos configurables que están configurados por atributos fuera de su conjunto de atributos no se renderizan en el administrador del producto y deben repararse. Si no cambiamos el conjunto de atributos de los padres, como ha señalado, los niños simplemente no se asocian correctamente con sus padres. Existen como entidades Magento, se pueden editar, pero no aparecerán como niños en la página del producto front -end, o la lista de productos asociado de los padres configurables.

Entonces, desde un punto de vista puramente técnico, es posible que los productos simples estén en un conjunto de atributos diferente al de sus padres. Pero como este comportamiento no es compatible, incluso en EE, por lo que la navaja de afeitar de Occam dice que cuando estaban diseñando magento, los desarrolladores varianos no vieron la necesidad.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a magento.stackexchange
scroll top