EntrataI Laboratori Angolo TECH WebHacking Joomla: articoli Lead

Hacking Joomla: articoli Lead

Per diverso tempo da quando uso Joomla sto cercando di implementare una logica semplice ma efficace sulla visualizzazione degli articoli.
Come gli stessi menù di gestione suggeriscono, quando si crea una home page / blog category / blog section , gli articoli possono apparire in vari formati.

The Joomla Articles system

Joomla Administration: dettaglio numero di articoli. 

  • Lead
  • Intro
  • Links
Questo lascia presagire che Lead si riferisca ad articoli completi, Intro a quelli del quale si visualizza solo l'introduzione, e l'ultimo nome parla da solo ( display del semplice link ).
Stranamente il comportamento di default non è questo: Lead ed Intro sono esattamente uguali!
Immagino che questo comportamento sia nato in joomla per permettere di differenziare graficamente il Lead dagli Intro, senza influenze sul contenuto... di fatto, è un comportamento controintuitivo.
Per motivi che non sono esclusivamente filosofici, io ho bisogno di pagine blog che mostrino i Lead come articoli completi.
Fortunatamente alterare questo comportamento è abbastanza facile.

Come si può fare?

Il team di joomla pare aver delegato la responsabilità di questa cosa ai template, per cui è d'uopo agire sul template che si sta utilizzando: così facendo non dovremo preoccuparci se vogliamo aggiornare joomla con release successive.

Attenzione: io lavoro sul template derivato da quelli di joomlashine ( vedi pagina dei crediti ) , per cui prendo in esempio il codice li presente. Se il vostro template è diverso, o non prevede dei casi specifici per sezioni e categorie, dovrete fare molto più lavoro!

Ottimi motivi per spippolare sul template
anzichè sul codice di joomla
  1. Se aggiornate il software joomla e i vari plugin,
    generalmente la vostra modifica non viene toccata.
  2. Potete ripristinare più facilmente la modifica,
    nel caso voleste tornare indietro
  3. I template sono fatti per essere maneggiati
  4. Modificando i template non si divide mai per zero

Prendiamo in esame, quindi , i files del template, partendo dalla vostra directory dove sta il template stesso.

html/com_content/category/blog.php
html/com_content/category/blog_item.php
html/com_content/section/blog.php
html/com_content/section/blog_item.php

Generalmente i file omonimi sotto section e sotto category non sono molto diversi, dato che il meccanismo è lo stesso mi limito a spiegare una volta sola quello che si deve fare.

blog.php

Circa alla riga 27 di entrambi i files "blog.php" troverete :

  $this->item =& $this->getItem($i, $this->params);
  echo $this->loadTemplate('item');
 

Attenzione: se non lo trovate, cercate un blocco di codice "if" con questa condizione:

$this->params->get('num_leading_articles')

E procedete cercando il codice che esegua loadTemplate('item') come quello presentato. Adesso dobbiamo spiegare al template 'item' che il suo articolo è un po' speciale, e che deve trattarlo diversamente. Per fare questo usiamo gli strumenti già predisposti , ed aggiungiamo la riga centrale.

  $this->item =& $this->getItem($i, $this->params);
  $this->item->params->set('is_leading_article', 1);
  echo $this->loadTemplate('item');
 

 In questo modo il dato sarà disponibile dentro il template blog_item.php , che adesso andiamo a modificare.

blog_item.php

Da qualche parte in questo file ( riga 101 per chi ha il mio template) deve esser presente una riga analoga a questa:

 

  <?php echo $this->item->text; ?>
 
Questa riga qui è la colpevole della stampa del testo, ed è sempre lei a stampare il testo introduttivo al posto dell'articolo completo.
Grazie alla nostra modifica, adesso sappiamo se un articolo è Lead o no , e possiamo decidere di stampare tutto il testo. Sostituite quindi la riga di codice precedente con questa breve condizione:
<?php if( $this->item->params->get('is_leading_article') == 1 ): ?>
  <?php echo $this->item->fulltext; ?>
<?php else: ?>
    <?php echo $this->item->text; ?>
<?php endif; ?>
 

In questo modo il nostro template stamperà l'articolo completo, quando necessario.

Ancora problemi?
  1. I LEAD articles possono essere solo i primi presentati, ma questo tipo di obbligo dipende da come è strutturato Joomla.
    Possibili soluzioni: riscrivere completamente il template secondo la logica che preferite (difficile) , arrangiarsi (facile).
  2. Adesso tutte le sezioni e le categorie blog stampano i lead articles completi!
    Ricordatevi che il numero di Lead lo determinate dal menù, e quindi è sotto il vostro controllo.
 

Aggiungi commento

You're free to post as long as you don't spam.


Codice di sicurezza
Aggiorna