it-swarm-eu.dev

Non più di un modulo in posizione

Mi stavo solo chiedendo se ci fosse qualche PHP che avrei potuto aggiungere al mio template index.php che avrebbe assicurato che un solo modulo fosse caricato in una particolare posizione.

So che ci sono altre opzioni disponibili come Advanced Module Manager, ma per questo particolare sito sarebbe fantastico se potessi aggiungere un po 'di php direttamente alla pagina. Fondamentalmente se ci sono 2 moduli caricati in una posizione, voglio solo caricare il primo modulo.

Grazie.

2
DesignSubway

Devo essere d'accordo con il commento di Lodder ... Questo non ha senso e probabilmente creerà confusione.

Ma per rispondere alla tua domanda e per aiutarti a trovare un modo per ottenere qualcosa del genere, puoi provare l'approccio seguente:

<?php
  jimport( 'joomla.application.module.helper' );
  $modules = JModuleHelper::getModules( 'yourposition' );
  $attribs = array('style' => 'xhtml');    
  echo JModuleHelper::renderModule($modules[0], $attribs);
?>

La funzione getModules($position) caricherà un array con tutti i moduli nella tua posizione, ordinati per ID modulo.

Quindi, con la funzione renderModule($module,$attributes), si emette il modulo. Ma dal momento che si dispone di un array, è necessario indicare quale modulo verrà visualizzato, specificando l'indice dell'elemento dell'array.

Ma poiché ci sarà ancora un modo dinamico di creare/modificare/modificare le impostazioni dei moduli, non sono sicuro di come si possa garantire quale modulo verrà reso alla fine, nel caso in cui altri utenti gestiranno il sito web.

Quindi, se spiegassi un po 'di più cosa stai cercando di ottenere e perché, potremmo proporti la soluzione giusta.

2
FFrewin

La maggior parte dei modelli rende i moduli in questo modo

<?php if ($this['modules']->count('search')) : ?>
<div id="search"><?php echo $this['modules']->render('search'); ?></div>
<?php endif; ?>

$ this ['modules'] -> count ('search') è sostanzialmente il numero di moduli, quindi se avessi due moduli nella posizione di ricerca renderizzati su una determinata pagina, il valore sarebbe 2

Puoi creare in modo semplice se $ this ['modules'] -> render ('search'); > 1 quindi echo il codice di tipo 'Oly un modulo consentito in questa posizione' nel tuo file indice per il modello, ma questo non è proprio standard e non è proprio il modo in cui Joomla è progettato per funzionare, e se è il tuo sito web, fai solo sicuro di aver impostato solo un modulo.

Come modello di vendita al dettaglio, posso vedere che quella particolare funzione causa problemi e forse dovresti guardare la codifica di quella particolare posizione del modulo come una presentazione in modo che possa renderizzare più moduli, ma scorre semplicemente attraverso di essi nello stesso spazio invece di renderli tutti subito.

Spero che sia di aiuto

1
MOLEDesign