it-swarm.dev

Come impedire il rendering di moduli vuoti?

Come si impedisce a un modulo di essere visualizzato nella posizione assegnata se non viene riprodotto nessun output? Perché pubblicare un modulo vuoto? Bene, non è sempre vuoto, ma se particolari condizioni non sono soddisfatte, allora non c'è output da visualizzare, ma la posizione vuota in cui è pubblicato è ancora lì.

L'ho cercato su Google, ma ho trovato solo esempi dalla v1.5, e sono tutti hack o modelli di modifica. È stato risolto/risolto in v3 + e, in tal caso, come posso realizzarlo.

4
GDP

Se il modulo non restituisce alcun output (return false), non verrà generato nulla, nemmeno il modulo Style/chrome (ref: JDocumentRendererModules funziona).

5
Anibal

Controllo se il contenuto di qualsiasi modulo dalla posizione data del modulo è vuoto o meno. Combinato con $ this-> countModules (): la posizione del modulo viene visualizzata solo quando ci sono moduli e il contenuto non è vuoto.

function modulesHaveContent( $position ) {  
    $modules = JModuleHelper::getModules( $position );

    foreach($modules as $module) {
        if (!empty($module->content)) {
            $moduleHasContent = true;
        }
    }

    return $moduleHasContent;
}
2
RedNails

Alla fine (e come dovrebbe essere), Joomla lascia la presentazione dell'output al modello. In genere sembrano usare $module->count per fare quella determinazione, e senza la cooperazione del modello per esaminare l'output, ha perfettamente senso che appaia il blocco vuoto.

Tuttavia, ho trovato una soluzione: nel mio caso le pagine con output del modulo condizionale sono tutti articoli com_content, quindi ho scritto un plugin di contenuto che ha recuperato l'output del modulo. Se il modulo ha restituito qualcosa da visualizzare, ho modificato l'output dell'articolo con esso. Usando i CSS, sono stato in grado di posizionare l'output del modulo nel modo in cui avevo bisogno che appaia, e ho realizzato quello che stavo cercando di fare.

1
GDP