My You Tube channel

Un modulo ha il compito di restituire alla visualizzazione della pagina contenuti provenienti da componenti, elaborazioni di dati prelevati dalle tabelle del database(es. visite al sito) o provenienti dall'esterno appoggiandosi a servizi (es. you tube).Tenete presente che col tempo qualcosa può subire delle modifiche, il framework Joomla è in continuo aggiornamento e di conseguenza anche il CMS.

Che cos'è e cosa fa un modulo?

Un modulo si occupa di inserire nel modello di Joomla dei contenuti generati dagli script che li gestiscono, inseriti in file che rispettino il modello di costruzione di una directory "mod_".

Innanzitutto bisogna creare una cartella mod_nome_modulo che conterrà:

- il file di ingresso: mod_nome_modulo.php
- il file manifesto del modulo: mod_nome_modulo.xml
- il file che si occuperà degli script: helper.php
- il file che si occuperà del codice che raccoglie i contenuti da far apparire nella pagina (all'interno della cartella tmpl): default.php

Riassumendo, abbiamo costruito questa situazione:

mod_nome_modulo (folder)
------| mod_nome_modulo.php
------| mod_nome_modulo.xml
------| helper.php
------| index.html
------ tmpl (folder)
-----------| default.php
-----------| index.html

La parte più semplice sono i due files html, pagine bianche che impediscono la visualizzazione dei contenuti della directory qualora si tronchi la path.
Uno si posiziona nella root del modulo e uno nella cartella tmpl. Questo il codice da inserire all'interno di index.html

<html><body bgcolor="#FFFFFF"></body></html>

Il file xml mod_nome_modulo.xml, si occupa di istruire il Joomla installer e di preconfigurare il modulo, e sarà così composto:

<!-- Questa prima parte contiene i dati che visualizzeremo in amministrazione nella parte moduli installati -->
<?xml version="1.0" encoding="utf-8"?>
<install type="module" version="1.5.0">
<name>Nome del modulo</name>
<author>Autori del modulo</author>
<creationDate>Data di realizzazione</creationDate>
<version>x.x.xx</version>
<description>Descrizione delle features del modulo</description>

<!-- Questa parte descrive i files e la loro path rispetto il modulo dei files che compongono il modulo stesso -->
<files>
<filename module="mod_nome_modulo">mod_nome_modulo.php</filename>
<filename>index.html</filename>
<filename>helper.php</filename>
<filename>tmpl/default.php</filename>
<filename>tmpl/index.html</filename>
</files>

<!-- Se volessimo inserire anche la gestione della lingua -->
<languages>
<language tag="it-IT">it-IT.mod_nome_modulo.ini</language>
</languages>


<!-- Qui iniziano i parametri di configurazione, ovvero i settaggi che facciamo all'interno della gestione moduli che poi recuperiamo negli script sotto forma di array params -->
<params>
<param name="nome_parametro" type="radio" default="0" label="Tua etichetta" description="Tua descrizione del parametro">
<option value="0">Nascondi</option>
<option value="1">Mostra</option>
</param>

<!-- Possiamo anche settare un suffisso per la classe -->
<param name="moduleclass_sfx" type="text" default="" label="Module Class Suffix" description="PARAMMODULECLASSSUFFIX" />
</params>
</install>

Poi abbiamo il file di ingresso mod_nome_modulo.php che si occupa di collezionare i dati necessari e di fornire un output:

// vieta l'accesso diretto a qs file
defined('_JEXEC') or die('Accesso negato');

// inclusione dell'helper con la classe che si occupa della raccolta dati
require_once( dirname(__FILE__).DS.'helper.php' );

// chiamata alla classe contenuta in helper.php
$miavar = modNomeModuloHelper::getNomeModulo( $params );

// restituzione alla pagina
require( JModuleHelper::getLayoutPath( 'mod_nome_modulo' ) );

L'ultimo di questa root è helper.php che, come vedremo quì sotto, è quello che contiene la classe e il metodo che andremo a chiamare nel file di ingresso e si  occuperà di eseguire query e script per il recupero dei dati

class modContactHelper{

function getContact( $params ){

// la cosa più semplice era fare una query

$db    = &JFactory::getDBO(); // Oggetto db

$query = "SELECT * FROM #__miatabella"; // Imposto la query

$db->setQuery($query); // la eseguo

$rows = $db->loadObjectList(); // recupero i dati in un'array

return $rows; // Li restituisce all'esecuzione
}
}

A questo punto entriamo nella cartella tmpl, abbiamo un solo file nel nostro esempio minimale, default.php: è il "piccolo template" che spediremo all'output tramite l'apposito metodo (vedi file ingresso).
Recuperiamo l'array della query con il metodo creato e aggiungiamo un minimo di tag ai nostri contenuti; nell'esempio faccio un'ipotetico recupero e uso, ma capito il meccanismo, potete fare ciò che volete, es potete recuperare i dati ed elaborarli anche all'interno della classe di helper.php.

//Solito divieto di accesso diretto
<?php defined( '_JEXEC' ) or die( 'Non puoi accedere' ); ?>

<?php
echo "<div id=\"mybox\">";

foreach ( $rows as $row ) {

if($params->get( 'parametro1_dell_xml' ) && $row->myvalue1 != ""){
echo "<div class=\"item\">" . $row->myvalue1 . "</div>";
}

if($params->get( 'parametro2_dell_xml' ) && $row->myvalue2 != ""){
echo "<div class=\"item\">" . $row->myvalue2 . "</div>";
}

}

echo "</div>";

Non rimane che zippare la cartella principale e procedere con l'upload e l'installazione attraverso l'interfaccia amministrativa del sito: Estensioni -> Installa -> Carica file e installa -> puntare la cartella zippata -> esegui.
Se l'installazione va a buon fine, viene segnalato dall'installer di Joomla, così pure il fallimento. Per quest'ultimo, il motivo può essere solo che non avete rispettato i nomi di file e/o cartelle, non avete rispettato il modello del pacchetto, c'è qualche errore o tag non chiuso nel file xml che è quello che viene letto dall'installer.
Rimanendo in questa pagina di amministrazione, cliccate sul link moduli installati, se avete compilato correttamente il file xml, i dati che avevate messo, ve li ritrovate come riga della tabella dei moduli.

Ora dovete passare a Gestione moduli, per configurarlo, attivarlo e assegnargli la posizione nel template.
Se ci sono errori nel codice ve ne accorgete ritornando al lato pubblico, lo script di installazione non verifica l'esattezza del codice.
Abilitate il debug e risolvete i problemi, solo dopo mettetelo in produzione. Non testate assolutamente estensioni su un sito esposto al web, rischiate di mostrare dati riservati a chi vi visita nel momento di un'errore, che spero siano comunque gestiti negli script del modulo che scrivete.

Multirotori

Multicopters I miei droni multirotore. Una semplice curiosità diventata una passione e qualcosa di più.
Il punto di incontro tra programmazione, volo, arduino, tecnica e manualità ...stimolante!
Consigli ed esperienze realizzative di vari modelli dedicati sia al divertimento che all'uso professionale.

Joomla

Joomla! Un Framework promettente ed un collaudato CMS che, con l'adeguata conoscenza, può diventare un avanzato strumento di lavoro.
Come si può conoscere uno strumento se non usandolo, sperimentando sempre nuove soluzioni e seguendo le sue problematiche di sicurezza?

Lifehacking

Lifehacking Non c'è oggetto per casa che non ho aperto, è maniacale ma non riesco a rinunciare, come se quelle quattro viti, quella fessura a scatto mi impedisse di conoscere, scoprire, imparare qualcosa, sigillandolo come un segreto.
Tutto può funzionare meglio o diventare più utile e versatile ...è Life Hacking!

Parapendio

Parapendio Volare è un po' come avere la possibilità di osservare le cose da un'altra prospettiva, senza i vincoli di una forza che ti costringe a muoverti come un pedone degli scacchi per le strade di una città. Il mio sogno sta nell'armadio, pronto a farmi evadere quando ne sento il bisogno e l'aria lo permette.