ti-enxame.com

Substituir uma exibição de componente por um item de menu específico

Como substituir a exibição do componente de um item de menu específico?

Para uma substituição global, posso usar template/html/com_xxx/.
Mas como posso fazer isso apenas para um item de menu específico?

Exemplo:

Joomla! tem uma visualização de blog para artigos.
Como posso alterar a marcação dessa exibição para um item de menu específico e manter a marcação padrão para os outros itens de menu vinculados à mesma exibição do Blog?

6
Fedik

Método 1:

Use a classe CSS para fazê-la funcionar da maneira que você descreve.

  1. Adicione a classe ao item de menu (na guia de exibição da página, escreva-a no campo "Classe da página"). Exemplo: "página especial" (observe o espaço antes da classe de página, sem ele o anexará à saída renderizada do componente). Eu recomendo usar uma classe que possa ser usada em mais de uma situação.
  2. Na substituição, você precisa criar um script para o "filtro".

    if(strpos($this->pageclass_sfx, ' special-page') !== false) {
        $templateA = true;
    }
    
    if($templateA){
    (put your customized override here)
    }
    

Método 2:

Use uma substituição de modelo para a visualização!

  1. Na pasta HTML para as substituições, duplique a visualização desejada (por exemplo, a visualização do artigo), é necessário renomeá-la e ter o arquivo .xml com os parâmetros (copie-o das visualizações no componente e verifique se o arquivo .xml tem o mesmo nome da visualização substituída!).

    exemplo: crie uma visão geral do artigo, vamos chamá-lo de "especial", você precisará copiar o default.php na sua pasta HTML no seu modelo (e coloque-a na seguinte estrutura de pastas: com_content/article/ e renomeie-o para special.php). Não esqueça o .xml (que você precisa copiar e até adaptar, se necessário) na mesma pasta que a substituição e renomeie-o para special.xml

    Atualize a visualização com o código/estilo substituído, etc.

  2. Em seguida, vá para o item de menu e altere-o para o novo tipo de menu (nos artigos, escolha special), teste-o!
4
jackJoe

Solução geral:

Para cada item de menu, você pode escolher um modelo para aplicar à página vinculada, para duplicar seu modelo e criar sua substituição de exibição no modelo duplicado.

Em seguida, você pode escolher o modelo duplicado nos parâmetros do item de menu e a substituição será efetiva apenas para esse item de menu.

Com K2:

Para o seu exemplo, você pode usar o K2. Com ele, você pode criar várias substituições de exibição com nomes diferentes.

As substituições têm esta aparência:

template_name/html/com_k2/override_1
                         /override_2
                         /...

Então, quando você escolhe um item K2 nos parâmetros do menu, pode escolher a substituição a ser aplicada nessa página específica. Isso evita a criação de vários modelos.

3
web-tiki