Requisitos
- Configurável;
- Não pode ser removido por um autor;
- Compartilhado entre uma página raiz e todas as páginas descendentes (filhas, netas, …), mesmo as que usarem page templates ou page components diferentes;
- Editável apenas a partir da página raiz.
Solução passo a passo
- Adicionar um iparsys ao page template da página raiz e uma instância de menu a esse iparsys;
- Incluir, estaticamente, a instância de menu no page component da página raiz;
- Criar um page template e um page component para páginas descendentes;
- Adicionar um iparsys vazio ao page template da página descendente, usando o mesmo nome do iparsys definido em (1);
- Incluir esse iparsys no page component da página descendente, configurando seu wcmmode para desabilitado;
- Você também pode precisar
- ajustar o layout do component no modo de edição (Classic ou Touch UI);
- corrigir a hierarquia de conteúdo das páginas já criadas, para refletir as alterações feitas nos page templates.
Como funciona?
O iparsys se encarrega da herança de conteúdo entre uma página e suas páginas filhas. Como nós temos apenas uma instância de iparsys (aquela definida no template da página raiz), todas as páginas descendentes acabarão referenciando, exatamente, a mesma instância.
Ao incluir a instância do menu no page component da página raiz ao invés de incluir o iparsys que o contém, nós desabilitamos a capacidade do autor em mover/remover a instância do menu e a habilidade em adicionar mais componentes àquele iparsys.
Setar o wcmmode para disable, no page component da página descendente, é o suficiente para garantir que um autor não conseguirá quebrar ou sobreescrever a herança de iparsys.
Como de praxe, um projeto de exemplo pode ser encontrado no GitHub.
Seja o Primeiro a Comentar