martedì 8 ottobre 2013

Joomla loadposition

Joomla attraverso il loadposition ci permette di mostrare l'output di un modulo direttamente nel contenuto di un articolo. Questo è reso possibile proprio dal plugin "Content - Load Modules" che è abilitato di default nell'installazione di Joomla. Attraverso il parametro del plugin possiamo dire a Joomla se inserire il modulo in un div oppure in una tabella o in nessun tag. Consiglio di lasciare l'impostazione di default che inserisce il modulo in un div. Vediamo ora come utilizzare il loadposition.

Joomla loadposition

Creiamo un modulo e come posizione mettiamo pure una non presente all'interno del nostro template (inventiamo pure un nome univoco. Ad esempio posizione1). Ci basterà ora inserire nel nostro articolo, nel punto in cui vogliamo far comparire il modulo, la seguente stringa:

{loadposition posizione1}

In questo modo il nostro modulo apparirà nell'articolo che abbiamo creato. Notiamo che se abbiamo più moduli associati alla stessa posizione il plugin li inserirà tutti. Infatti, come dice il termine stesso, stiamo caricando (load) una posizione (position).

Una variante a Joomla loadposition: il loadmodule

Attraverso il loadmodule andiamo invece a caricare il modulo del tipo specificato. Supponiamo di voler mostrare nel nostro articolo il modulo di login. La sintassi è molto semplice:

{loadmodule mod_login}

Il nome del tipo (mod_login nell'esempio) deve essere quello della cartella che contiene il modulo. E' possibile anche caricare un modulo specificando il titolo che gli abbiamo dato nel Module Manager:

{loadmodule module,title}

lunedì 23 settembre 2013

Joomla email

Nelle nostre estensioni Joomla è veramente molto semplice inviare email. Utilizzando le api di Joomla, con poche righe di codice, possiamo mandare email in tutta sicurezza, delegando a Joomla tutto il lavoro.

Inviare una email con le api di Joomla

Per prima cosa occorre creare un oggetto di tipo JMail:

$mailer = JFactory::getMailer();

Il passo successivo è quello di inserire il mittente, che andremo a recuperare dalla configurazione globale di Joomla:

$config = JFactory::getConfig();
$sender = array(
            $config->getValue('config.mailfrom'),
            $config->getValue('config.fromname')
          );

$mailer->setSender($sender);

successivamente inseriremo il destinatario della email:

$mailer->addRecipient('indirizzo@domain.it');

Se avete bisogno di inserire molti destinatari, basterà inserirli in un array:

$recipients = array(
                'primo@domain.com',
                'secondo@domain.com',
                
'terzo@domain.com'         
);

$mailer->addRecipient($recipients);

Ora con le funzioni setSubject e setBody imposteremo l'oggetto della email e il testo in essa contenuto: 

$mailer->setSubject('Subject of the email');
$mailer->setBody('Sample text'); 

Se volte inviare una mail con testo in HTML basta scrivere:

$mailer->isHTML(true); 

Mentre per la codifica:

$mailer->Encoding = 'base64';

Volendo potete inserire un allegato con la funzione addAttachment. Per il percorso del file da allegare vi consiglio di utilizzare le costanti di Joomla:

$mailer->addAttachment(           JPATH_COMPONENT.DS.'files'.DS.'file.zip'        
); 

Infine non ci rimane che inviare l'email:

$send = $mailer->Send(); 
if ($send !== true) { 
    echo 'Error sending email: '.$send->message; 

else { 
     echo 'Mail sent'; 
}
sabato 4 maggio 2013

Virtuemart: scegliere il gruppo clienti nel form di registrazione

In Virtuemart possiamo creare gruppi clienti e assegnare gli utenti del sito web al gruppo cliente desiderato. Non ci è data però la possibilità di scegliere il nostro gruppo clienti mentre stiamo compilando il form di registrazione. In alcuni casi però è fondamentale avere questa possibilità direttamente nella fase di registrazione al sito web.

Plugin VMGroup


Virtuemart gruppo cliente nel form di registrazione

VMGroup

Ho realizzato un plugin che aggiunge un nuovo campo direttamente nel form di registrazione (vedi immagine) dando l'opportunità all'utente di selezionare il proprio gruppo cliente.  Questa operazione è possibile sia nel form di registrazione di Joomla sia nella vista Manutenzione Account Cliente di Virtuemart grazie ad un override da utilizzare assieme al plugin.

Configurazione plugin VMGroup

  1. Scegli i gruppi clienti che vuoi visualizzare durante la registrazione individuando i relativi ID. Come sicuramente saprai basta andare sulla maschera Gruppi Clienti di Virtuemart
  2. Abilitare il plugin ed inserire gli ID del punto sopra separati da un punto e virgola
  3. Caricare nella cartella html del template che state utilizzando l'override distribuito insieme al plugin
sabato 16 marzo 2013

Hosting VirtueMart Professionale

hosting virtuemart professionale
Un Hosting Professionale per il nostro e-commerce sviluppato con Virtuemart è molto importante per non vanificare gli sforzi. VirtueMart è un componente per Joomla che vi può permettere di avere un e-commerce completo ed efficace in pochissimo tempo.

Ma quale hosting scegliere per ospitare il nostro sito web?

Caratteristiche di un hosting VirtueMart professionale 

  1. Performante. Sembrerà banale ma la velocità di risposta di un e-commerce è decisiva. VirtueMart richiede la giusta dose di potenza. Hosting condivisi con molti siti web su macchine con poca RAM e con processori datati possono essere la fortuna del vostro portafoglio ma la rovina del vostro business.
  2. Sicuro. La sicurezza prima di tutto. Con i soldi non si scherza! Joomla è uno dei CMS più utilizzati e di conseguenza le persone che si divertono a trovare il modo di "bucarlo" sono molte. Oltre ad un server sicuro (magari che utilizza suPHP e altri accorgimenti) è importante avere un hosting con certificato SSL. E' difficile definire sicuro un e-commerce che non utilizza il protocollo HTTPS.
  3. Backup giornalieri. Inutile che vi spieghi l'importanza.
  4. Accessi FTP e a PhpMyAdmin
  5. Spazio adeguato. Magari senza limiti.
  6. Disponibilità da parte del fornitore del servizio. Mi è capitato di dover cambiare servizio di hosting solo per il fatto che non riuscivo ad ottenere risposte su esigenze particolari di configurazione del server.
Al prezzo di 129 € / anno 

vi offriamo oltre a tutto questo una installazione pronta all'uso di Joomla + VirtueMart già perfettamente configurata con certificato SSL.

Se sei interessato contattami per la tua
nuova installazione di VirtueMart
sabato 17 novembre 2012

Posizione moduli Joomla 2.5

Per definire una nuova posizione per i moduli di un sito web sviluppato con Joomla 2.5 dobbiamo eseguire le seguenti operazioni:

Inserire posizione nel file di definizione del template

Nel file xml di definizione del template, solitamente templateDetails.xml, sono dichiarate le posizioni modulo:

   <positions>
      <position>debug</position>
      <position>position-0</position>
      <position>position-1</position>
      <position>position-2</position>
      <position>...</position>
      <position>position-14</position>
   </positions>

I nomi delle posizioni non sono fissi ma possono variare da template a template. Inseriamo semplicemente un nuovo nome per la nostra posizione.

<position>myposition</position>


Inserire il codice php per la nuova posizione

Aprire il file sorgente del template selezionato (di solito index.php). Aggiungere queste righe nella posizione desiderata:

  <?php if ((bool)$this->countModules('myposition')) : ?>
    <div id="mydiv">
      <jdoc:include type="modules" name="myposition" style="xhtml" />    </div>
  <?php endif; ?>

Consiglio sempre di mettere la verifica che ci sia almeno un modulo pubblicato nella nostra posizione. In questo modo evitiamo di inserire un div vuoto se non abbiamo moduli in quella posizione.
La direttiva jdoc:include serve a definire il segnaposto che il motore di rendering di Joomla andrà a sostituire con i moduli associati alla posizione specifica (myposition in questo caso). Il parametro style serve ad indicare le varianti al codice html di generazione del modulo. Esso può assumere i seguenti valori standard: none, table, horz, xhtml, rounded e outline, definiti in templates/system/html/modules.php, oppure valori arbitrari definiti con un override nel file html/modules.php specifico del template.

Definiamo lo stile del modulo

Modifichiamo il foglio di stile associato al template, solitamente /templates/nome del template/css/position.css, inserendo le regole necessarie:

#mydiv {
  color: #000000;
  width: 90px;
}

Non resta che creare un nuovo modulo dal backend di Joomla ed assegnarlo alla posizione appena creata.
giovedì 23 agosto 2012

Call-time pass-by-reference is deprecated

Deprecated: Call-time pass-by-reference has been deprecated in filename.php

A partire dalla versione 5.3.0 di PHP è stato deprecato il passaggio per riferimento quando si chiama un metodo o una funzione.
l'utilizzo dell'operatore & nelle chiamate dei vostri metodi - esempio: metodo(&$a) - genera il messaggio di warning mostrato all'inizio.
In PHP 5 infatti gli oggetti vengono sempre passati per reference (per riferimento) e quindi in questo caso l'operatore & non serve. Per i tipi di dati primitivi basta indicarlo nella definizione del metodo.
Ricordo infatti che dalla versione 5.3.0 di PHP è stato deprecato il passaggio per riferimento nella chiamata di un metodo ma non certo il passaggio per riferimento. Vediamo un esempio:

function functionA(&$var) { 
    $var++; 

functionB($var) {
    $var++; 

$n = 1;

// corretto 
functionA($n); 

// deprecated 
// functionB(&$n);

echo $n; // output 2 

In entrambi i casi si vuole che la variabile $n venga incrementata dal metodo ma il secondo modo (commentato per non far attivare il warning) è scorretto.
Se stai utilizzando codice di terze parti ti può capitare che venga ancora utilizzato il passaggio per riferimento a tempo di chiamata. Per far funzionare la tua applicazione puoi intervenire sul php.ini attraverso la seguente direttiva

allow_call_time_pass_reference = on

Questa però deve essere presa come una soluzione temporanea in attesa della versione corretta.
giovedì 9 agosto 2012

Le Costanti di Joomla

Le costanti che Joomla ci mette a disposizione possono risultare molto utili quando scriviamo i nostri componenti
Di seguito riporto un elenco non esaustivo delle costanti che possiamo utilizzare nelle nostre estensioni di Joomla.


 Costanti legate al percorso

  • DS: il separatore di directory (/), garantisce la portabilità tra sistemi operativi diversi. Come ben sapete Windows utilizza il carattere \ a differenza di linux /
  • JPATH_ADMINISTRATOR: il percorso base dell’applicazione JAdministrator (/joomla/administrator) 
  • JPATH_BASE: il percorso base dell'applicazione corrente: assume valori diversi a seconda dell’applicazione in uso (JSite, JAdministrator, JInstallation o altre personalizzate) 
  • JPATH_COMPONENT: il percorso verso la directory del componente in uso (/joomla/components/com_in_uso) 
  • JPATH_COMPONENT_ADMINISTRATOR: il percorso verso la directory lato admin del componente in uso (/joomla/administrator/components/com_in_uso) 
  • JPATH_COMPONENT_SITE: il percorso verso la directory lato sito del componente in uso (/joomla/components/com_in_uso) 
  • JPATH_CONFIGURATION: il percorso della directory che contiene il file di configurazione (/joomla) 
  • JPATH_INSTALLATION: il percorso della applicazione di installazione JInstallation (/joomla/installation) 
  • JPATH_CACHE: il percorso della directory cache (/joomla/cache) 
  • JPATH_LIBRARIES: il percorso della cartella libraries (/joomla/libraries) 
  • JPATH_PLUGINS: il percorso della cartella plugins (/joomla/plugins) 
  • JPATH_ROOT: il percorso principale del framework Joomla (/joomla) 
  • JPATH_SITE: il percorso base dell'applicazione JSite (/joomla) 
  • JPATH_THEMES: il percorso della cartella templates (/joomla/templates)


 Costanti legate alla data

  • DATE_FORMAT_LC: mostra la data nella forma Giovedì, 09 Agosto 2012 
  • DATE_FORMAT_LC2: mostra la data e l’ora nella forma Giovedì, 09 Agosto 2012 10:00
  • DATE_FORMAT_LC3: mostra la data nella forma 09 Agosto 2012
  • DATE_FORMAT_LC4: mostra la data nella forma 09:08:12

Il mio consiglio è di utilizzare nelle operazioni di include e require le costanti messe a disposizione dal framework di Joomla in modo da garantire la corretta portabilità dei vostri componenti.