mercoledì 29 ottobre 2008

Joomla 1.5, personalizzare il componente Weblinks

Ogni installazione di Joomla da sempre include un componente chiamato Weblinks che serve a mantenere una collezione di link a siti web suddivisi in categorie. È un componente semplice, ma che si presta a svariati usi come offrire risorse utili ai propri visitatori o scambiare link con altri siti.

Se si visualizza una categoria di Weblinks e si controlla la barra di stato del browser mentre il il puntatore del mouse è posizionato su uno dei link si vedrà qualcosa del tipo

index.php?view=weblink&catid=...&id=...&option=com_weblinks&Itemid=...

Al posto dei puntini vedrete ovviamente valori che variano a seconda del link.

Si vede chiaramente che il link non è diretto, non punta cioè al sito esterno, ma "passa" attraverso Joomla, più esattamente esegue il codice della view weblink del componente. È il codice della view che effettua un reindirizzamento al sito esterno.

Questo non è sempre l'ideale. Ad esempio se si scambiano link in genere si preferisce avere link diretti perché si ritiene che diano un maggior beneficio in termini di SEO.

Fortunatamente con semplici modifiche possiamo fare in modo che i link gestiti da Weblinks siano diretti. Prima di proseguire premetto che le indicazioni che seguono si applicano solo a Joomla 1.5 e raccomando di tenere copia dei file che andremo a modificare per poter facilmente annullare le modifiche in caso di problemi.

I numeri di riga dei file indicati per le modifiche fanno riferimento alla versione 1.57

Per prima cosa aggiungeremo un parametro alla configurazione di Weblinks modificando il file
.../administrator/components/com_weblinks/config.xml (da linea 32).

    <param name="link_icons" type="imagelist" 
directory="/images/M_images" default="" label="Icon" description="PARAMICONIMG" />
    <param name="direct_links" type="radio" default="0" label="Use Direct Links" description="">
    <option value="0">No</option>
    <option value="1">Yes</option>
    </param>
  </params>
</config>

Le righe in blu sono quelle da aggiungere, riporto quelle immediatemente precedenti e seguenti per facilitare l'individuazione del punto della modifica.

Poi in base all'impostazione del parametro visualizzeremo un link diretto o indiretto: modifichiamo il file
.../components/com_weblinks/views/category/view.html.php (da linea 116).

$item =& $items[$i];
if($params->get('direct_links',0) == 1) {
  $link = $item->url;
} else {
  $link=JRoute::_('index.php?view=weblink&catid='.
$category->slug . '&id='. $item->slug);
}
$menuclass = 'category'.$params->get( 'pageclass_sfx' );

A questo punto dal pulsante Preferenze sulla barra degli strumenti nella pagina di amministrazione del componente, possiamo impostare il parametro che abbiamo aggiunto e scegliere il tipo di link preferito.

Una conseguenza inevitabile della scelta dei link diretti è l'impossibilità di aggiornare il contatore delle visite. Il parametro per nascondere la relativa colonna è già presente nella configurazione.

Come tocco finale possiamo includere la traduzione in Italiano dell'etichetta per il parametro aggiunto. Inseriamo come ultima linea di
.../administrator/language/it-IT/it-IT.com_weblinks.ini

USE DIRECT LINKS=Utilizza link diretti

3 commenti:

Anonimo ha detto...

grazie mille per questa ottima guida! ;)

Michele ha detto...

Visto che mi son state di grande aiuto le guide presenti in questo sito, mi sembra giusto poter contribuire nel mio piccolo:

E' possibile anche sfruttare l'override, qualora si volesse mostrare sempre il link diretto.

Ecco come fare:

copiare il file default_items.php dalla directory
../components/com_weblinks/views/category/tmpl
alla directory
../templates/{template}/html/com_weblinks/category

dove {template} è il nome del template in uso, ad esempio rhuk_milkyway.

quindi modificare la riga 47 da:
<?php echo $item->link; ?>
a:
<a href="<?php echo $item->url ?>"><?php echo $item->title ?></a>

Massimo ha detto...

Sì, in effetti questo è il genere di modifiche che possono essere fatte sfruttando l'override di template. Grazie del contributo.

Posta un commento

Nota. Solo i membri di questo blog possono postare un commento.