I plug-in di Joomla! possono essere utilizzati per automatizzare operazioni sui contenuti (ad esempio per aggiungere il sistema di voto agli articoli…altro non è che l’aggiunta di codice html a quello dell’articolo).
Spesso si rivelano estremamente utili per effettuare azioni correttive sull’intero contenuto (compreso l’header della pagina); motivo per cui, sfruttando i metodi di JFactory, possiamo creare un plugin che all’evento di preparazione del contenuto, effettui dei controlli su title e description ed eviti valori di default (che non piacciono tanto agli spider dei motori di ricerca).
Per leggere le informazioni meta ho utilizzato un metodo alternativo a quello della pillola per evitare title e description duplicati, un metodo più generale e attuabile quando non si ha un riferimento al contenuto mediante $this (cosa possibile, invece, all’interno di un file di template)
In una prossima pillola vedremo nel dettaglio le tipologie di plug-in e gli eventi cui associarne l’esecuzione, per ora ci basti aver presente che il plug-in che andiamo a realizzare:
- agisce sul content
- viene invocato all’evento onPrepareContent
Come realizziamo il plug-in:
Creiamo innanzitutto un file xml che descriva il plug-in: automatismo.xml
<?xml version="1.0" encoding="utf-8"?>
<install version="1.5" type="plugin" group="content">
<name>AUTOMATISMO</name>
<author>Antonio Picone</author>
<creationDate>May 2009</creationDate>
<copyright>Copyright (C) 2008 - 2009 Open Source Matters. All rights reserved.</copyright>
<license>http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL</license>
<authorEmail>info@antoniopicone.it</authorEmail>
<authorUrl>www.joomla.org</authorUrl>
<version>1.5</version>
<description>Add the auto-populated header for SEO</description>
<files>
<filename plugin="automatismo">automatismo.php</filename>
</files>
<params/>
</install>
Successivamente, il file del plug-in (commentato riga per riga): automatismo.php
<?php
// evitiamo l'accesso direto a questo file
defined( '_JEXEC' ) or die( 'Restricted access' );
// registriamo l'esecuzione della funzione all'evento onPreapareContent
$mainframe->registerEvent( 'onPrepareContent', 'plgContentAutomatismo' );
function plgContentAutomatismo( &$row, &$params, $page=0 )
{
// Creo un nuovo riferimento all'oggetto JConfig per prelevare i parametri di configurazione
$CONFIG =& new JConfig();
// Creo un rif all'oggetto che descrive il documento
$document = &JFactory::getDocument();
// JFactory fornisce metodi get per preleavare Title e Description, usiamoli
$title = $document->getTitle();
$description = $document->getDescription();
// Se il title di questa pagina è quello di default, lo riscrivo nella forma: sezione > categoria > titolo
if ($CONFIG->sitename == $title) $title = $row->section . ' > ' . $row->category . ' > ' . $row->title;
// Se la description è quella di default, la sosticuisco con i primi 140 caratteri del contenuto dell'articolo
if ($CONFIG->MetaDesc == $description) $description = substr($row->text, 0 ,140);
// Sfrutto i metodi set di JFactory per riscrivere Title e Description
$document->setDescription($description);
$document->setTitle($title);
}
Per installare il plug-in, basterà copiare i due files nella directory /plugins/content/ e attivarlo dal back-end.
That’s all folks










Ciao
Nella sua semplicità è… geniale!!
mi piacerebbe essere a questo livello
io uso il seo 404 e il brutto è che ogni volta devo andare li per settare i meta title….eccc
mi piacerebbe farlo nella stessa pagina