Qual é o procedimento correto - em vez de excluir o produto e começar novamente para adicionar ou remover atributos de produtos configuráveis existentes.
Ao criar um produto configurável, você é solicitado a escolher quais atributos usar para o produto.
Agora eu tenho muitos produtos para remover alguns atributos que foram selecionados inicialmente e alguns que também precisam de uma adição de atributos que não foram selecionados inicialmente.
Qualquer ajuda para isso é apreciada - pois excluir os produtos não parece ser a melhor abordagem para isso. Especialmente porque muitas outras coisas estão associadas aos produtos.
Respostas:
Aqui está o que costuras para trabalhar para remover um atributo do produto configurável.
Este é o cenário.
Todos os produtos configuráveis foram criados incorretamente com o atributo
brand
como atributo configurável para cerca de 50 produtos configuráveis com cerca de 200 produtos associados simples.Todos os produtos simples associados a um atributo configurável têm a mesma marca. A idéia é remover
brand
dos atributos configuráveis e atribuí-lo como um atributo simples ao produto configurável com o valor de um dos produtos simples.Aqui está o código que faz isso. O código é executado apenas uma vez. Ele pode ser adicionado em um script de atualização ou em um arquivo php simples.
Para os números listados acima, demorou cerca de 15 segundos para executar na minha máquina local (não uma poderosa). Tenho certeza de que isso pode ser otimizado. Provavelmente, não há necessidade de obter todos os produtos simples de um produto configurável para obter o
brand
valor, mas não me incomodei.fonte
catalog_product_super_attribute
funcionará? Ou então eu preciso modificar outras tabelas? Como em stackoverflow.com/a/13381381/1749007Isso requer edição direta do banco de dados, e a primeira lei do Magento é não editar diretamente o banco de dados .
Mas se você é louco o suficiente para continuar, isso foi abordado no StackOverflow há alguns meses:
ucts. Testei o hack da solução alternativa do banco de dados abaixo no CE 1.6.2 e parece estar funcionando:
Crédito: /programming/5658197/add-new-attribute-to-existing-configurable-product-magento
Não testado - YMMV.
fonte
Para remover um atributo de superproduto (como são chamados) de todos os produtos configuráveis, você pode executar esta consulta SQL no banco de dados:
Aqui está o ID do atributo armazenado na tabela eav_attribute em relação ao attribute_code. A tabela catalog_product_super_attribute vincula produtos a atributos de superprodutos. Você pode adicionar e remover atributos para criar produtos configuráveis lá.
fonte
DELETE FROM catalog_product_super_attribute WHERE attribute_id = <attribute_id> AND product_id = <product_id>;
Há um truque sujo para abrir o produto configurável, em seguida, escolha duplicar, selecione o atributo antigo e o novo, a duplicação é feita sem o SKU e exclua o produto configurável original e produtos simples. Depois disso, você pode dar o mesmo SKU para duplicar. Então você só precisa criar novos produtos simples.
É uma solução rápida, se não houver muitos produtos simples.
fonte
Acabei de fazer isso de forma mais limpa usando a ferramenta de exportação de importação Free Magmi no modo de atualização. (versão compreensiva)
Exporte os campos-chave, altere as configurações da coluna configurable_attributes para especificar atributos configuráveis no SKUS simples e configurável e depois reimporte usando o Magmi
Como ex-consultor da Oracle, eu concordo que não mexa com o banco de dados, especialmente um tão complexo quanto a estrutura de dados do Magento - melhor usar uma ferramenta que foi bem testada para fazer isso.
fonte
Eu precisava remover um atributo de ser um dos atributos "configuráveis" para um produto configurável.
As referências acima sobre catalog_product_super_attribute estavam corretas. Usando a ferramenta de banco de dados Navicat, fiz sequencialmente algumas coisas.
Para teste, foi alterado o Attribute_Id, que foi alterado para outro campo usado em outros produtos. (Confirmado que era o registro em questão). Escreveu, apenas no caso, o conjunto completo de dados de registro (product_super_attribute_id, product_id, attribute_id, position)
Finalmente, excluiu o registro todos juntos.
Isso fez o truque. Também anotei o que fiz, assumindo que precisaria fazer isso novamente.
Novamente: a exclusão do registro em "catalog_product_super_attribute" resolveu meu problema, que parecia relacionado aos outros acima.
Informações extras: para correlacionar "attribute_id" à lista nomeada correta, é importante olhar para: catalog_super_attribute_label -> e correlacionar via product_super_attribute_id.
Eu estava procurando por um campo "attribute_id" relacionado (ainda por encontrar).
"product_super_attribute_id" faz o truque para dizer o que realmente é o "attribute_id". (Gostaria de ainda encontrar o conjunto de dados "padrão" para "attribute_id" para ver como o atributo é definido pela primeira vez no banco de dados).
fonte