Resolver problemas

PrestaShop: recuperar um bloco desaparecido do tema com «Transplant a module»

Revisto a 4 min de leitura templates módulos PrestaShop

Por vezes, um bloco que sempre foi mostrado corretamente desaparece da loja: o seletor de idiomas, o carrinho, o menu… Não há nenhum erro e, mesmo que reinstale ou reponha o módulo, continua sem aparecer.

O mais provável é que o módulo tenha perdido a sua ligação (hook) à posição do tema em que era mostrado. Um tema do PrestaShop é uma tela com uma série de posições (displayNav, displayTop, displayFooter…), e cada módulo liga-se a uma ou várias. Se perder a ligação, simplesmente deixa de ser apresentado.

Como exemplo, usamos um caso real: o seletor de idiomas (ps_languageselector) tinha desaparecido da barra de navegação. Os mesmos passos servem para qualquer outro módulo.

1. Descobrir em que posição deveria estar

Abra a pasta do tema que usa, themes/NOMBRE_PLANTILLA/, a partir do gestor de ficheiros do cPanel ou por FTP. Lá dentro, na pasta config, abra o ficheiro theme.yml e procure o nome técnico do módulo, que é o nome da sua pasta dentro de modules (neste caso ps_languageselector).

Pesquisa de ps_languageselector no ficheiro theme.yml do tema

Neste tema aparece uma única vez, dentro da posição displayNav. Essa é a posição em que o tema espera o módulo. No tema Classic do PrestaShop 1.7 e 8, pelo contrário, o seletor de idiomas vai em displayNav2: por isso convém confirmá-lo no seu próprio theme.yml.

Se o módulo não aparecer no theme.yml, veja em que posição está noutra loja com o mesmo tema ou na documentação do tema.

2. Verificar se continua ligado

No painel do PrestaShop, vá a Design > Positions. Procure a posição que encontrou (displayNav no exemplo) e verifique se o módulo aparece lá dentro.

Posição displayNav em Design > Positions sem o seletor de idiomas

Se não aparecer, encontrou o problema.

Se aparecer mas não se vir na loja, o problema é outro. Clique no módulo, em Edit, e reveja a lista de Exceptions: pode estar excluído da página que está a ver. Verifique também em Modules > Module Manager se está ativado.

3. Transplantar o módulo

Em Design > Positions, clique em Transplant a module (no canto superior direito) e preencha:

  • Module: o que desapareceu; no exemplo, Language selector block (seletor de idioma).
  • Transplant to: a posição que encontrou no theme.yml, displayNav no exemplo.

Formulário Transplant a module com o seletor de idioma e a posição displayNav

Clique em Save.

4. Verificar o resultado

Esvazie a cache em Advanced Parameters > Performance > Clear cache e recarregue a loja: o bloco deverá voltar a aparecer tal como estava.

Se aparecer numa ordem diferente da anterior dentro da barra, volte a Design > Positions e arraste o módulo dentro da sua posição até o deixar no sítio. Se aparecer duplicado, é porque também estava ligado a outra posição que é mostrada na mesma zona: retire a ligação a mais com a opção Unhook do menu do módulo nessa posição.

Se tiver multiloja, certifique-se antes de começar de que está a editar a loja correta no seletor de lojas da parte superior.

Também lhe pode ser útil

Algo não bate certo ou mudou? Diga-nos e revemos.