it-swarm.dev

Sostituisci una vista componente per una voce di menu specifica

Come posso sostituire la vista dei componenti per una voce di menu specifica?

Per una sovrascrittura globale posso usare template/html/com_xxx/.
Ma come posso farlo solo per una voce di menu specifica?

Esempio:

Joomla! ha una vista Blog per gli articoli.
Come posso modificare il markup di questa vista per una voce di menu specifica e mantenere il markup predefinito per le altre voci di menu che si collegano alla stessa vista Blog?

6
Fedik

Metodo 1:

Usa la classe CSS per farlo funzionare come descrivi.

  1. Aggiungi la classe alla voce di menu (nella scheda di visualizzazione della pagina, scrivila nel campo "Classe di pagina"). Esempio: "pagina speciale" (notare lo spazio prima della classe di pagina, senza di esso lo aggiungerà all'output del componente renderizzato). Consiglio di utilizzare una classe che può essere utilizzata in più di una situazione.
  2. Alla sostituzione, è necessario eseguire lo script del "filtro".

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

Metodo 2:

Utilizzare una sostituzione del modello per la vista!

  1. Nella tua cartella HTML per le sostituzioni, duplica la vista desiderata (es: la vista dell'articolo), devi rinominarla e avere il file .xml con i parametri (copiarlo dalle viste nel componente e assicurarti che .xml ha lo stesso nome della vista sostituita!).

    esempio: crea una vista prioritaria dell'articolo, chiamiamola "speciale", dovrai copiare il default.php nella tua cartella HTML nel tuo modello (e inseriscilo nella seguente struttura di cartelle: com_content/article/ e rinominalo in special.php). Non dimenticare il file .xml (che devi copiare e persino adattarlo se necessario) nella stessa cartella dell'override e rinominalo in special.xml

    Aggiorna la vista con il codice/lo stile di sostituzione, ecc.

  2. Quindi, vai alla voce di menu e modificala nel nuovo tipo di menu (sotto gli articoli, scegli special), provalo!
4
jackJoe

Soluzione generale:

Per ogni voce di menu, puoi scegliere un modello da applicare alla pagina collegata, in modo da poter duplicare il modello e creare la sostituzione della vista nel modello duplicato.

È quindi possibile scegliere il modello duplicato nei parametri delle voci di menu e la sostituzione sarà effettiva solo per quella voce di menu.

Con K2:

Per il tuo esempio, potresti usare K2. Con esso, è possibile creare più sostituzioni di vista con nomi diversi.

Le sostituzioni sono simili alle seguenti:

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

Quindi, quando si sceglie un elemento K2 nei parametri del menu, è possibile scegliere l'override da applicare ad esso su quella pagina specifica. Questo evita di creare diversi modelli.

3
web-tiki