¿Cuál es el procedimiento correcto? En lugar de eliminar el producto y comenzar de nuevo para agregar o eliminar atributos a productos configurables existentes.
Al crear un producto configurable, se le pide que elija qué atributos usar para el producto.
Tengo muchos productos, ahora necesito eliminar algunos atributos para los que se seleccionaron inicialmente, y algunos que también necesitan agregar un atributo que no se seleccionaron inicialmente.
Se agradece cualquier ayuda con esto, ya que eliminar los productos no parece ser el mejor enfoque para esto. Especialmente porque muchas otras cosas están asociadas a los productos.
Respuestas:
Esto es lo que me funciona para eliminar un atributo del producto configurable.
Este es el escenario.
Todos los productos configurables se crearon incorrectamente con el atributo
brand
como un atributo configurable para aproximadamente 50 productos configurables que tienen aproximadamente 200 productos simples asociados.Todos los productos simples asociados a un atributo configurable tienen la misma marca. La idea es eliminar
brand
de los atributos configurables y asignarlo como un atributo simple al producto configurable con el valor de uno de los productos simples.Aquí está el código que hace esto. El código se ejecuta solo una vez. Se puede agregar en un script de actualización o en un simple archivo php.
Para los números enumerados anteriormente, esto tardó aproximadamente 15 segundos en ejecutarse en mi máquina local (no potente). Estoy seguro de que esto se puede optimizar. Lo más probable es que no sea necesario obtener todos los productos simples de un producto configurable para obtener el
brand
valor, pero no me molesté.fuente
catalog_product_super_attribute
funcionará? ¿O de lo contrario necesito modificar otras tablas? Como en stackoverflow.com/a/13381381/1749007Esto requiere la edición directa de la base de datos, y la primera ley de Magento es no editar directamente la base de datos .
Pero si está lo suficientemente loco como para continuar, esto fue cubierto en StackOverflow hace unos meses:
ucts. He probado el siguiente truco de solución de problemas de DB en CE 1.6.2 y parece estar funcionando:
Crédito: /programming/5658197/add-new-attribute-to-existing-configurable-product-magento
No probado - YMMV.
fuente
Para eliminar un atributo de superproducto (como se les llama) de todos los productos configurables, puede ejecutar esta consulta SQL en la base de datos:
Aquí, está la identificación del atributo almacenado en la tabla eav_attribute con respecto a attribute_code. La tabla catalog_product_super_attribute vincula productos a atributos de superproductos. Puede agregar y eliminar atributos para crear productos configurables allí.
fuente
DELETE FROM catalog_product_super_attribute WHERE attribute_id = <attribute_id> AND product_id = <product_id>;
Hay un truco sucio para abrir un producto configurable, luego elija duplicar, seleccione el atributo antiguo y nuevo, el duplicado se realiza sin SKU, luego elimine el producto configurable original y los productos simples. Después de eso, puede dar el mismo SKU para duplicar. Entonces solo necesita hacer nuevos productos simples.
Es una solución rápida si no hay tantos productos simples.
fuente
Acabo de hacer esto de manera más limpia usando la herramienta de exportación de importación Free Magmi en modo de actualización. (versión de comprensión)
Exporte campos clave, cambie la configuración de la columna configurable_attributes para especificar atributos configurables en SKUS simples y configurables y luego vuelva a importar utilizando Magmi
Como ex Consultor de Oracle, estoy de acuerdo en no meterse con la base de datos, especialmente una tan compleja como la estructura de datos de Magento, mejor usar una herramienta que haya sido probada para hacer esto.
fuente
Necesitaba eliminar un atributo de ser uno de los atributos "configurables" para un producto configurable.
Las referencias anteriores sobre catalog_product_super_attribute fueron correctas. Usando la herramienta de base de datos Navicat hice secuencialmente algunas cosas.
Para probar Cambió el Id. De atributo, eso lo cambió a otro campo que se usa en otros productos. (Confirmado que era el registro en cuestión). Anotó, por si acaso, el conjunto completo de datos de registro (product_super_attribute_id, product_id, attribute_id, position)
Finalmente borré el registro todos juntos.
Eso hizo el truco. También mantuve una nota de lo que hice asumiendo que tendría que hacer esto nuevamente.
Nuevamente: Eliminar el registro en "catalog_product_super_attribute" resolvió mi problema que parecía relacionado con otros anteriores.
Información adicional: para correlacionar "attribute_id" con la lista correcta con nombre, es importante mirar: catalog_super_attribute_label -> y correlacionar a través de product_super_attribute_id.
Había estado buscando un campo relacionado "id_atributo" (aún no lo había encontrado).
"product_super_attribute_id" hace el truco para decirte qué es realmente el "attribute_id". (Me gustaría encontrar el conjunto de datos "predeterminado" para "attribute_id" para ver cómo se define por primera vez un atributo en la base de datos).
fuente