PS PrestaShop Intermédio

Duplicação multiloja de uma categoria completa: PrestaShop 8 e 9

Instalar e usar o assistente de duplicação multiloja: origem, mapeamento das lojas de destino, opções de cópia e execução por lotes.

Atualizado Versão do módulo 1.0.0

Este módulo acrescenta ao back-office um assistente que duplica uma categoria inteira, com todos os seus produtos, declinações, imagens, atributos, preços específicos e stock, de uma loja para uma ou várias outras lojas de um mesmo PrestaShop em multiloja. Esta documentação cobre a instalação, o funcionamento interno e a utilização passo a passo do assistente.

Pré-requisitos

  • PrestaShop 8.0 a 9.x.
  • O modo multiloja deve estar ativado (Parâmetros avançados, depois Multiloja), com pelo menos duas lojas.
  • Um perfil de colaborador com acesso de escrita ao catálogo.

Se o multiloja estiver desativado ou existir uma única loja, o assistente mostra uma mensagem e não autoriza a duplicação: não haveria nenhuma loja de destino.

Instalação

  1. No back-office, abra Módulos e depois Gestor de módulos.
  2. Clique em « Carregar um módulo » e carregue o ficheiro ZIP.
  3. Depois de instalado, aparece um separador em Catálogo, chamado « DF Shop Duplicator ».

Como funciona

Ao contrário de um simples duplicador de produtos, o módulo não cria novas entidades de produto. Apoia-se no mecanismo de associação multiloja nativo do PrestaShop: um produto continua a ser uma entidade partilhada, e só os dados próprios de cada loja são copiados para a loja de destino.

Concretamente, para cada produto duplicado, o módulo recopia as linhas por loja: product_shop, product_lang, image_shop, product_attribute_shop, stock_available, specific_price (limitado à loja, excluindo o carrinho), bem como as associações de transportadoras e as tabelas de correspondência necessárias (atributos, grupos de atributos, características, marca, fornecedor, grupo de impostos).

Consequência direta: nenhuma referência de produto duplicada, nenhuma imagem recopiada no disco, e as alterações globais futuras de um produto continuam a propagar-se a todas as lojas que o partilham.

As categorias, em contrapartida, são tratadas de forma diferente. Sendo o identificador do pai de uma categoria (id_parent) global, não é possível simplesmente « associar » uma árvore sob outro pai. O módulo cria portanto novas categorias sob o pai de destino que designou, ou reutiliza as que já existem, consoante a opção escolhida.

Usar o assistente em 3 passos

Passo 1: loja e categoria de origem

Selecione a loja de partida e depois a categoria a duplicar na árvore. Marque « incluir as subcategorias » se quiser tratar todo o ramo e não só a categoria selecionada. O número de produtos em causa é apresentado para orientação.

Passo 2: lojas de destino e mapeamento

Marque a ou as lojas de destino. Para cada loja marcada, aparece uma árvore de categorias: designe aí a categoria de destino sob a qual os produtos (e eventualmente a árvore) serão colocados. Por defeito, a raiz da loja de destino está pré-selecionada.

Passo 3: opções e execução

Defina as opções de cópia (ver a secção seguinte), verifique o resumo e lance a duplicação. Uma barra de progresso e um diário em direto mostram o avanço, produto a produto, bem como os eventuais avisos.

As opções em detalhe

  • Copiar a árvore: recria as subcategorias sob a categoria de destino respeitando a hierarquia. Desmarcada, todos os produtos são colocados diretamente sob a categoria de destino (modo « flatten »).
  • Reutilizar as categorias existentes: em vez de recriar categorias, o módulo encontra as já presentes sob o pai de destino por correspondência da sua reescrita de URL. É o que torna a duplicação idempotente.
  • Copiar as quantidades: duplica o stock para a loja de destino (ver a gestão do stock abaixo).
  • Preços específicos: recopia os preços específicos limitados à loja.
  • Produtos de packs (recursivo): associa também os produtos filhos dos packs presentes na seleção.
  • Reindexação da pesquisa: reindexa cada produto copiado para a pesquisa do front-office. Útil mas mais lento em grandes volumes.
  • Tamanho do lote: número de produtos processados por passagem AJAX (20 por defeito, até 200). Reduza-o num alojamento limitado, aumente-o para ir mais depressa.

Recriação e reutilização das categorias

Quando « Reutilizar as categorias existentes » está ativada, o módulo procura sob o pai de destino uma categoria cuja reescrita de URL corresponda à da origem. Se encontrar uma, usa-a; caso contrário, cria uma nova. Pode assim relançar a duplicação tantas vezes quantas forem necessárias sem acumular duplicados de categorias, por exemplo depois de ter adicionado novos produtos à origem.

Para uma primeira sincronização « plana » em que todos os produtos devem aterrar sob uma única categoria de destino, desmarque « Copiar a árvore » e deixe « Reutilizar as categorias existentes » marcada.

Gestão do stock e partilha entre lojas

A cópia do stock tem em conta o parâmetro de partilha do stock do grupo de lojas. Se a loja de origem e a loja de destino já partilharem o mesmo pool de stock, a cópia é ignorada: duplicar as quantidades criaria incoerências. Caso contrário, as quantidades são recopiadas para a loja de destino. Estas decisões ficam registadas no diário de execução.

Produtos de packs

Se a seleção contiver packs e a opção correspondente estiver ativada, o módulo associa recursivamente os produtos filhos de cada pack à loja de destino, para que o pack continue vendável. Uma proteção evita os ciclos em caso de packs aninhados.

Grandes catálogos e retoma

A execução decorre por lotes AJAX sucessivos: o navegador encadeia as chamadas até ao fim, o que evita qualquer timeout PHP mesmo com vários milhares de produtos e declinações. O job é persistido na base de dados (tabela dedicada), com um ponteiro de posição: se o processamento for interrompido (fecho do separador, quebra de rede), pode retomar onde parou em vez de recomeçar tudo.

Resolução de problemas

O assistente indica que o multiloja não está disponível

Verifique que o modo multiloja está ativado e que existem pelo menos duas lojas. O assistente precisa de uma loja de origem e de pelo menos uma loja de destino distinta.

Alguns produtos parecem « em falta » na loja de destino

Certifique-se de que a categoria de destino está corretamente mapeada no passo 2 e que os produtos estão ativos. Em modo « flatten », os produtos são colocados sob a categoria de destino única, não sob uma árvore recriada.

O stock não foi copiado

É o comportamento esperado se as duas lojas partilharem o mesmo pool de stock. O diário de execução assinala-o com um aviso.

Depois de uma segunda execução, vejo categorias em duplicado

Ative « Reutilizar as categorias existentes ». Sem esta opção, cada execução recria novas categorias sob o pai de destino.

Esta página foi útil?

Ainda com dúvidas? Contacte o suporte