Decoração Sazonal Programada: documentação
Instalar e configurar a Decoração Sazonal Programada: criar uma campanha, programar as datas, ativar efeitos, banner e paleta, pré-visualizar em segurança, gerir a recorrência anual e o multiloja.
A Decoração Sazonal Programada (módulo dfthemescheduler) veste automaticamente a sua loja PrestaShop para cada momento forte comercial. Cria campanhas com datas, Natal, Black Friday, saldos, Dia dos Namorados, que combinam faixa, banner, paleta de cores, efeitos visuais e bloco de página inicial. Cada campanha ativa-se e retira-se sozinha nas datas programadas, sem nenhuma tarefa agendada.
Apresentação
O módulo assenta numa lógica simples: uma campanha é um conjunto de elementos visuais associado a um intervalo de datas. Quando a data atual cai nesse intervalo, a campanha fica «live» e a sua decoração aplica-se ao front-office. Fora dele, a loja recupera o seu aspeto normal sem deixar rasto.
Só é apresentada uma campanha de cada vez. Se várias campanhas se sobrepuserem, ganha a que tiver a prioridade mais elevada. Pode assim sobrepor uma longa campanha de Natal e um pico de Black Friday mais prioritário a meio.
Cada campanha pode combinar, à escolha, os seguintes elementos: uma faixa no topo da página com mensagem e contagem decrescente, um banner de imagem por idioma, uma paleta de sete cores, um efeito de ambiente (neve, confetes, corações, folhas, estrelas, fogo de artifício), um bloco HTML na página inicial e CSS personalizado. Todos estes elementos são opcionais.
Instalação
Instale o módulo como qualquer módulo PrestaShop:
- No back-office, aceda a Módulos > Gestor de módulos.
- Clique em Carregar um módulo e selecione o ficheiro
dfthemescheduler.zip. - Terminada a instalação, clique em Configurar para abrir o planificador de campanhas.
O módulo cria as suas tabelas, regista os seus hooks de apresentação e adiciona um separador de administração acessível através do botão Configurar. Não é necessária nenhuma dependência externa: nem Composer, nem jQuery, nem serviço de terceiros.
Se já estiver na versão 1.0.0, substitua simplesmente a pasta do módulo pela 1.1.0: o script de atualização adiciona automaticamente a coluna de posição do banner e regista os novos hooks. Não é necessária nenhuma reinstalação.
Criar uma campanha
A partir do ecrã de configuração, clique em Adicionar uma campanha. O formulário está organizado do mais importante para o mais opcional.
Informações gerais
- Nome da campanha: etiqueta interna, por exemplo «Natal 2026» ou «Black Friday». Nunca é apresentada aos visitantes.
- Ativa: interruptor principal. Uma campanha desativada nunca é apresentada, mesmo dentro do seu intervalo de datas.
- Prioridade: número inteiro. Em caso de sobreposição, a campanha com a prioridade mais elevada prevalece. Deixe 0 se só tiver uma campanha de cada vez.
Datas
Os campos Data de início e Data de fim usam um seletor de data e hora nativo, preciso ao segundo. As datas são interpretadas na hora do servidor da sua loja.
Se o seu navegador mostrar um campo de texto em vez do seletor, o formato esperado é AAAA-MM-DD HH:MM:SS, por exemplo 2026-11-27 00:00:00.
Recorrência anual
Assinale Repetir todos os anos para que uma campanha regresse automaticamente nas mesmas datas, ano após ano. Só o mês, o dia e a hora são comparados: o ano é ignorado.
O módulo gere nativamente as campanhas que atravessam o Ano Novo. Uma campanha de 20 de dezembro a 6 de janeiro funciona perfeitamente e reativa-se todos os invernos, sem ter de a desdobrar.
Para uma campanha recorrente, a validação «data de fim posterior à data de início» é deliberadamente desativada, uma vez que o fim pode situar-se no ano civil seguinte.
Faixa no topo da página
O campo Mensagem da faixa (multilingue) mostra uma barra no topo de todas as páginas. Aceita HTML básico: ligações, negrito. Deixe-o vazio para ocultar a barra.
Ative Mostrar a contagem decrescente para acrescentar uma contagem em tempo real até à data de fim da campanha, no formato «12d 04:31:07». Para uma campanha recorrente, a contagem visa automaticamente a próxima ocorrência da data de fim.
As cores da faixa (fundo e texto) definem-se na secção Paleta.
Banner de imagem
Pode carregar um banner diferente por idioma, com uma ligação clicável e um texto alternativo. Os formatos aceites são jpg, png, gif e webp. Recomenda-se uma largura generosa (por exemplo 1920 × 300).
O campo Posição do banner determina a zona do tema onde a imagem é apresentada:
- Faixa superior — displayBanner: posição por defeito, no topo da página.
- Por baixo do cabeçalho, largura total — displayNavFullWidth: logo abaixo do menu principal.
- Acima do conteúdo — displayWrapperTop: acima do corpo da página.
Se o seu banner não aparecer, é geralmente porque o seu tema não implementa o hook escolhido. Experimente simplesmente outra posição da lista.
Paleta de cores
A campanha expõe sete cores: primária, secundária, ligações, fundo do cabeçalho, fundo do rodapé, fundo da faixa e texto da faixa.
Estes sete valores são sempre expostos em variáveis CSS (--dfts-primary, --dfts-secondary, etc.) que o seu tema ou o seu CSS personalizado podem reutilizar.
Ative Aplicar a paleta ao tema para que o próprio módulo aplique estas cores aos botões, ligações, cabeçalho e rodapé. Deixe a opção desativada se preferir comandar a decoração apenas através das variáveis CSS e da sua própria folha de estilo.
Efeitos visuais
O campo Efeito visual propõe seis animações em JavaScript puro, desenhadas num canvas de ecrã inteiro: neve, confetes, corações, folhas de outono, estrelas cintilantes e fogo de artifício. Escolha Nenhum para desativar o efeito.
A Intensidade (fraca, média, forte) regula a densidade das partículas. O número de partículas tem um teto para preservar o desempenho.
Os efeitos só são carregados quando uma campanha está ativa. Desativam-se automaticamente para os visitantes que ativaram a preferência «redução de movimento» do seu sistema, e ficam em pausa quando o separador não está visível.
Bloco de página inicial e CSS personalizado
O campo Bloco de página inicial (multilingue, editor visual) mostra um conteúdo HTML livre na página inicial durante toda a duração da campanha: ideal para uma oferta, uma faixa promocional enriquecida ou uma mensagem sazonal.
O campo CSS personalizado permite ir mais longe. O CSS é higienizado antes da injeção (as tentativas de saída do contentor de estilo são neutralizadas) e só é carregado quando a campanha está ativa. Pode usar nele as variáveis --dfts-*.
Pré-visualização segura
Cada campanha dispõe de uma ligação de pré-visualização protegida por um token único de 32 caracteres. A partir da lista de campanhas, clique no botão Preview: a loja abre-se com a decoração da campanha aplicada, exatamente como os seus visitantes a verão no dia.
A pré-visualização persiste durante a sua navegação: pode percorrer todas as páginas da loja. Uma barra fixa «Pré-visualização: {nome} — Sair» é apresentada no canto inferior esquerdo; clique em Sair para regressar à apresentação normal.
A pré-visualização é totalmente invisível para os seus visitantes: só se ativa com a ligação secreta que contém o token correto. Pode assim verificar a sua decoração de Natal em pleno mês de agosto, ou partilhar a ligação com um cliente para validação, sem mudar nada para o público.
Planificador anual
No topo da lista de campanhas, o back-office mostra um painel de síntese: número de campanhas, campanhas ativas, campanha atualmente «live» e próxima campanha a começar com o número de dias restantes.
Por baixo, uma linha do tempo de doze meses representa cada campanha por uma barra colorida posicionada consoante as suas datas. Um marcador vertical indica o dia atual, as campanhas recorrentes que atravessam o Ano Novo são apresentadas em dois segmentos, e cada barra é clicável para abrir diretamente a edição da campanha.
Duplicar, exportar, importar
A partir da lista, a ação Duplicar cria uma cópia da campanha com um novo token de pré-visualização, desativada por defeito, cujas imagens de banner são fisicamente copiadas: eliminar uma nunca afeta a outra. As associações de loja são conservadas.
O botão Exportar JSON (na barra de ferramentas) transfere o conjunto das suas campanhas para um ficheiro. O formulário Importar JSON do painel permite reinjetar esse ficheiro noutra loja. As campanhas importadas chegam desativadas por defeito; as imagens de banner não são incluídas na exportação.
Multiloja e multilingue
Em contexto multiloja, cada campanha é associada às lojas à sua escolha através da secção Associação de loja do formulário. Uma campanha só é apresentada nas lojas a que está associada.
A mensagem da faixa, o banner (imagem, ligação, texto alternativo) e o bloco de página inicial são traduzíveis por idioma. Preencha cada idioma a partir dos separadores de idioma do formulário.
Integração para programadores de temas
Quando uma campanha está ativa, o módulo acrescenta classes à tag body: dfts-active, dfts-campaign-{id}, dfts-effect-{efeito}, e dfts-preview em modo de pré-visualização. Pode assim direcionar o seu CSS com precisão.
É também emitido um evento JavaScript dfts:ready no document assim que o script é inicializado, com a configuração da campanha no seu detalhe. Combinado com as variáveis CSS --dfts-*, isto permite integrações à medida sem tocar no módulo.
Desempenho
O módulo é leve por conceção. A resolução da campanha ativa cabe numa única consulta SQL memoizada por apresentação. O CSS e o JavaScript do front-office só são carregados quando uma campanha está realmente ativa. Não é usado nenhum override de classe: apenas hooks nativos do PrestaShop.
Resolução de problemas
O banner não aparece
O seu tema provavelmente não implementa o hook da posição escolhida. Mude a Posição do banner para outro valor da lista.
As cores não se aplicam
Verifique que a opção Aplicar a paleta ao tema está ativa. Se estiver mas alguns elementos permanecerem inalterados, o seu tema usa seletores específicos: acrescente algumas regras no campo CSS personalizado apoiando-se nas variáveis --dfts-*.
O efeito não se anima
As animações são deliberadamente desativadas para os visitantes que ativaram a redução de movimento no seu sistema operativo, e ficam em pausa quando o separador está em segundo plano. Verifique também que está selecionado um efeito diferente de «Nenhum».
Duas campanhas sobrepõem-se
É o comportamento esperado: só é apresentada uma campanha, a que tem a prioridade mais elevada. Ajuste as prioridades para escolher qual prevalece.
A campanha não dispara à hora prevista
As datas são interpretadas na hora do servidor, que pode diferir da sua hora local. Verifique o fuso horário da sua loja nas definições do PrestaShop.