PS PrestaShop Iniciante

Posições de Produtos: guia completo

Instalar, configurar e utilizar o módulo de posições de produtos: arrastar e largar, ordenação automática multicritério, fixação das posições e proteção contra as importações de ERP para PrestaShop 8 e 9.

Atualizado Versão do módulo 1.2.0

Apresentação

O módulo Posições de Produtos oferece uma interface moderna de arrastar e largar para reorganizar os produtos nas suas categorias PrestaShop, acompanhada de ferramentas de ordenação automática e de um sistema de fixação que protege as posições escolhidas contra alterações automatizadas (importações de ERP, CSV, scripts de terceiros).

O módulo é compatível com PrestaShop 8 e 9, em loja única ou multiloja, e está traduzido em francês, inglês, espanhol, alemão e italiano. Escreve diretamente na coluna position padrão do PrestaShop: a ordem definida no back-office aparece de forma idêntica no front-office, sem configuração adicional nem integração no tema.

A interface do módulo é de back-office e o seu pacote de traduções não inclui o português: numa loja portuguesa, os ecrãs de gestão aparecem no idioma de recurso. Isto não afeta o front-office, onde só é visível a ordem dos produtos.

Compatibilidade e pré-requisitos

  • PrestaShop 8.0 a 9.x: um único pacote cobre os dois ramos, sem configuração específica.
  • PHP 8.0 a 8.4.
  • Loja única e multiloja.
  • Sem dependências Composer, sem serviços externos e sem JavaScript de terceiros: o jQuery e o jQuery UI são fornecidos nativamente pelo PrestaShop.
  • O PrestaShop 1.7 não é suportado: a API de administração e o sistema de hooks diferem demasiado para garantir um comportamento fiável.

A compatibilidade com o PrestaShop 9 está disponível a partir da versão 1.2.0 do módulo. Se migrar uma loja PrestaShop 8 para PrestaShop 9, instale a última versão do módulo antes ou depois da subida de versão: as suas posições e fixações são conservadas, uma vez que a tabela de fixação não é alterada pela atualização.

Instalação

  1. No back-office, abra Módulos > Gestor de módulos.
  2. Clique em Carregar um módulo e coloque o arquivo ZIP.
  3. Terminada a instalação, aparece a entrada Catálogo > Posições de produtos no menu.

Na instalação, o módulo cria uma tabela dedicada ao sistema de fixação e regista os hooks necessários ao restauro automático das posições bloqueadas.

Para atualizar o módulo, basta colocar o novo arquivo por cima do antigo: os scripts de migração executam-se automaticamente e as suas fixações e posições são preservadas.

Interface

O ecrã de gestão tem três zonas principais:

  • Árvore de categorias à esquerda: navegação completa na hierarquia, pesquisa instantânea, contador de produtos e contador de fixações para cada categoria.
  • Barra de ferramentas no canto superior direito: pesquisa na categoria atual, menu Bloqueio (laranja) e menu Ordenação automática (roxo).
  • Lista de produtos ao centro: cada produto tem uma pega de arrastar e largar, um número de posição editável com um clique e quatro ações rápidas, que são fixar, enviar para o topo, enviar para o fundo e editar a ficha.

Os seletores de loja e de idioma no topo do ecrã permitem trocar de contexto sem sair da página.

Reorganizar os produtos manualmente

Arrastar e largar

Agarre a pega à esquerda de um produto e arraste-o para o local pretendido. As posições são gravadas automaticamente assim que solta.

Edição direta do número

Clique no número de posição de um produto para o alterar com o teclado. Confirme com Enter; prima Esc para cancelar. O módulo desloca automaticamente os outros produtos para integrar a nova posição.

Botões «Para o topo» e «Para o fundo»

Dois botões rápidos enviam um produto para a primeira ou para a última posição da categoria com um único clique.

Ordenação automática

O menu Ordenação automática aplica uma ordenação a todos os produtos da categoria segundo o critério escolhido. Os critérios disponíveis são:

  • Por nome: A → Z ou Z → A, com base no nome no idioma atual.
  • Por preço: crescente ou decrescente.
  • Por stock: stock elevado primeiro ou stock baixo primeiro, com ordem alfabética como desempate.
  • Por vendas (últimos 90 dias): mais vendidos ou menos vendidos primeiro, calculado sobre as encomendas válidas da loja atual.
  • Mais recentes / mais antigos: consoante a data de adição do produto.
  • Referência A → Z: ordenação alfabética pela referência interna.
  • Inverter a ordem atual: vira a lista completa.
  • Ordem aleatória: ordem sorteada a cada execução.

A opção Aplicar também às subcategorias propaga a ordenação a todas as categorias descendentes numa única operação.

Os produtos fixados mantêm a sua posição durante a ordenação: só os produtos não fixados são reorganizados (ver a secção seguinte).

A ordenação por nome usa a ordenação da base de dados. Numa loja portuguesa, verifique num lote de teste como são tratados os nomes acentuados (á, ã, ç) antes de aplicar a ordenação a todo o catálogo, uma vez que o resultado depende do collation da sua base de dados.

Fixação das posições

A fixação permite congelar a posição de um produto para que não mude nem numa ordenação automática, nem na sequência de uma alteração externa (importação de ERP, atualização de produto pelo back-office, script). É uma camada de proteção opcional: sem fixação, a ordem manual mantém-se válida enquanto não lançar uma ordenação automática e nenhum sistema externo tocar nas posições.

Fixar um produto individualmente

Em cada linha de produto, o ícone de fixação alterna o estado fixado / não fixado do produto na categoria atual. Um produto fixado recebe um filete laranja e um pequeno emblema de fixação no seu número de posição. O contador de fixados na barra de estado e na árvore atualiza-se automaticamente.

Pode sempre deslocar manualmente um produto fixado (arrastar e largar, edição direta, botões rápidos): a posição bloqueada acompanha então o movimento. Só a ordenação automática e as alterações externas ficam bloqueadas.

Bloquear toda a categoria

O menu Bloqueio > Bloquear toda a categoria fixa de uma só vez todos os produtos da categoria atual na respetiva posição. É a opção recomendada para catálogos alimentados por um ERP que ressincroniza regularmente as categorias: uma vez bloqueada a categoria, nenhuma importação externa pode alterar a ordem.

Desbloquear tudo

A opção Desbloquear tudo retira todas as fixações da categoria atual numa única ação. As posições atuais são conservadas; apenas a proteção é levantada.

Restaurar as posições fixadas

A opção Restaurar as posições fixadas volta a executar manualmente o algoritmo de restauro na categoria atual. É útil depois de uma importação grande, para verificar visualmente que todas as posições bloqueadas voltaram ao lugar, embora o hook de restauro automático já seja acionado a cada atualização de produto.

Casos de utilização

Colocar os N primeiros produtos em manual e ordenar o resto de A a Z

Cenário frequente: posicionar manualmente os 5 ou 10 primeiros produtos de uma categoria (destaques, campeões de vendas, novidades) e ordenar alfabeticamente todo o resto.

  1. Selecione a categoria na árvore.
  2. Organize os seus N primeiros produtos pela ordem pretendida (arrastar e largar ou edição direta).
  3. Clique no ícone de fixação de cada um desses N produtos.
  4. Abra Ordenação automática > Por nome > A → Z.

Os N produtos fixados mantêm-se nas suas posições; os restantes são ordenados alfabeticamente a partir da posição N+1. O mesmo mecanismo funciona com todos os critérios de ordenação.

Proteger uma categoria contra uma importação de ERP

Cenário frequente: o seu ERP ou um script externo ressincroniza regularmente as ligações produto / categoria, o que repõe as posições a zero.

  1. Organize a categoria pela ordem pretendida.
  2. Abra Bloqueio > Bloquear toda a categoria.
  3. Confirme: todos os produtos ficam fixados na sua posição atual.

A partir desse momento, cada atualização de um produto bloqueado que passe pelo PrestaShop, seja pela ficha de produto do back-office, pelo webservice, pela importação CSV nativa ou por um módulo de terceiros que manipule o objeto Product, aciona automaticamente o restauro da sua posição de origem.

Um script que escreva diretamente na base de dados, sem passar pelo objeto Product, não aciona qualquer hook do PrestaShop: nesse caso, o restauro automático não pode acontecer. Execute então Bloqueio > Restaurar as posições fixadas depois da importação, ou chame esse restauro no fim do seu script de sincronização.

Multiloja

O módulo é totalmente compatível com a funcionalidade multiloja do PrestaShop. O seletor de loja no topo da interface troca o contexto. As posições e as fixações são independentes por par (categoria, loja): fixar um produto na loja A não o bloqueia na loja B.

Multi-idioma

A interface do back-office está traduzida em francês, inglês, espanhol, alemão e italiano. O seletor de idioma no topo do ecrã muda o idioma da árvore e dos nomes de produto apresentados; as posições são comuns a todos os idiomas de uma loja (comportamento nativo do PrestaShop).

Desempenho

O módulo usa consultas SQL otimizadas, com junções sobre os índices existentes (category_product, product_shop, stock_available). A gravação das posições tem debounce do lado do JavaScript, para evitar pedidos sucessivos em reorganizações rápidas. A tabela de fixação tem uma chave primária composta e dois índices secundários, para restauros muito rápidos mesmo em categorias com várias centenas de produtos. O restauro está ainda protegido contra a reentrância, o que evita ciclos nas atualizações em massa.

Desinstalação

A desinstalação do módulo elimina a tabela de fixação e a entrada de menu correspondente. As posições em category_product permanecem intactas: a sua ordem atual é preservada. Apenas a proteção (fixação e restauro automático) é levantada.

Perguntas frequentes

É preciso fixar cada produto para que a ordem manual se mantenha?

Não. A ordem definida por arrastar e largar ou por edição direta é gravada na coluna position padrão do PrestaShop e aí permanece enquanto nenhuma ordenação automática ou importação externa a alterar. A fixação é uma camada de proteção opcional, útil apenas se quiser combinar posições manuais com ordenação automática, ou se o seu ERP mexer nas ligações produto / categoria durante as importações.

A ordem definida no back-office reflete-se mesmo no front-office?

Sim, sem configuração adicional. O módulo escreve na coluna nativa category_product.position, que o PrestaShop já utiliza para ordenar as listas de produtos no front-office. Não é necessária qualquer integração no tema nem hooks adicionais.

O meu ERP ressincroniza as categorias a cada importação: o que devo fazer?

Abra o menu Bloqueio > Bloquear toda a categoria. Isso fixa de uma só vez todos os produtos na sua posição atual. O hook de restauro automático repõe depois as posições sempre que o ERP altera um produto bloqueado através do objeto Product. Se o seu ERP escrever diretamente em SQL, acrescente uma chamada a Restaurar as posições fixadas no fim da importação.

É possível deslocar um produto fixado?

Sim. A fixação protege contra as alterações automáticas (ordenação automática, importações externas). Quando desloca manualmente um produto fixado (arrastar e largar, edição da posição, botão para o topo ou para o fundo), a posição bloqueada é atualizada para acompanhar o movimento.

A ordenação automática funciona com as subcategorias?

Sim. Assinale a opção Aplicar também às subcategorias no menu de ordenação para propagar o critério a todas as subcategorias da categoria atual numa única operação.

O módulo é compatível com o PrestaShop 9?

Sim, desde a versão 1.2.0. O mesmo pacote cobre PrestaShop 8.0 a 9.x, em loja única ou multiloja, sem dependências Composer nem JavaScript externo (o jQuery e o jQuery UI são fornecidos nativamente pelo PrestaShop).

O módulo substitui o ecrã nativo de posições de categoria?

Não, acrescenta-se como complemento. O ecrã nativo do PrestaShop continua disponível; o módulo fornece uma interface mais moderna, com a fixação e a ordenação multicritério como extras.

A lista de produtos não carrega, ou a pesquisa comporta-se mal.

Limpe a cache do PrestaShop (Parâmetros avançados > Desempenho) e recarregue a página forçando a atualização do navegador. O módulo acrescenta um número de versão aos seus ficheiros CSS e JS, mas uma cache de navegador ou um proxy agressivo pode conservar uma cópia antiga depois de uma atualização.

Esta página foi útil?

Ainda com dúvidas? Contacte o suporte