giovedì 30 dicembre 2010

rendere disponibili i parametri di configurazione di Joomla! in altri script

Il problema

Talvolta può essere utile condividere i parametri del file di configurazione di Joomla! in altri script. Il caso più frequente può essere quello di connettersi tramite uno script esterno al database usato da Joomla!

Soluzione

Nel file di configurazione di Joomla! (configuration.php) è presente la classe JConfig a cui vengono assegnate varie proprietà, lo apriamo

class JConfig {
var $generator_tag = '';
[ ... altre proprietà ... ]
var $offline_message = 'Sito fuori servizio per manutenzione. Riprovare più tardi.';
}

Per renderle disponibile in uno script esterno non dobbiamo fare altro che includere il file configuration.php

require_once('configuration.php');

poi possiamo instanziare la classe:

$config=new JConfig();

Creiamo la connessione passando come parametri le proprietà host, user e password

$connessione=mysql_connect($config->host, $config->user, $config->password);


Selezioniamo il database passando come parametro la proprietà db:


$gStr_connessione = mysql_select_db($config->db);

A questo punto possiamo creare la stringa della query, ma ricordandoci di includere il prefisso del DB davanti alle tabelle:

$dbprefix=$config->dbprefix;

$sql="SELECT `".$dbprefix."vm_product`.*,`".$dbprefix."vm_product_category_xref`.* FROM `".$dbprefix."vm_product`, `".$dbprefix."vm_product_category_xref` WHERE (".
$dbprefix."vm_product.product_id=".$dbprefix."vm_product_category_xref.product_id) AND ".$dbprefix."vm_product_category_xref.category_id=3;";

A questo punto possiamo eseguire la query...

$result_settore=mysql_query($sql, $connessione);

... e proseguire con lo script utilizzandolo per le nostre esigenze.

venerdì 15 ottobre 2010

URL più brevi nei servizi di URL shortener

url shorteners e qr code in Joomla!

La necessità degli URL shorteners è particolarmente sentita da Google Maps! La necessità di inviare tanti tanti parametri per la geolocalizzazione ne consiglia vivamente l'uso.


Joomla! ha ovviamente un utile plug-in che aggiungere sotto il titolo della Vs. pagina web lo shorten URL:

http://extensions.joomla.org/extensions/site-management/url-redirection/11415

La variabile "tempi di risposta" è fondamentale nella shelta di un servizio di URL shortener, uno dei servizi più veloci è Goo.gl

Gli URL SHORTENERS sono particolarmente importanti nella generazione dei QR Code, ecco la differenza fra un esempio di due codici QR con i relativi URL (standard e shortened):




QR CODE generato da un non-shortened link
http://maps.google.it/maps/place?cid=4688735316153102698&q=S.m.i.a.m.+srl,+Ancona&hl=it&ved=0CBIQ2QYwAA&ei=mWW4TNmECuikOIWw_PgF&sll=43.607577,13.508468&sspn=0.019872,0.045073&ie=UTF8&ll=43.619518,13.475418&spn=0,0&z=15&iwloc=A

qr code generato da uno shortened url
QR CODE generato dallo stesso link abbreviato con GOO.GL: http://goo.gl/Wtcq

La differenza dovrebbe essere abbastanza evidende!

martedì 12 ottobre 2010

Paolo Mosca analista programmatore: Design Pattern: Singleton

Paolo Mosca analista programmatore: Design Pattern: Singleton: "Il Singleton è uno dei pattern fondamentali della programmazione ad oggetti e viene utilizzato quando si ha l'esigenza di creare una sola is..."




70.000 Hotel in tutto il mondo!

joomla personalizzare il redirect dell'utente

Joomla! Reindirizzamento personalizzato dell'utente dopo il Login






Dal pannello di controllo di Joomla è possibile specificare il redirect dell'utente su di una pagina specifica dopo il login come indicato in questa immagine:

Joomla! reindirezzamento dell'utente dopo aver effettuato il Login
Joomla! reindirezzamento dell'utente dopo aver effettuato il Login
Tuttavia potremmo avere l'esigenza di redirezionare l'utente con un redirect utente "dinamico".


Come fare?



E' tutto gestito dal controller del componente com_user, modificarlo tuttavia significherebbe rendere il sito NON-UPGRADE-SAFE.

Anche questa volta come nel precedente tutorial sulla ricerca dei campi nel componente COM_CONTACTS di Joomla! Ci viene in aiuto l'override del componente nel template.

In effetti se aprite il file default_login.php nella cartella di com_user nella view LOGIN

Troverete alla riga 74:


echo $this->return prende il valore del parametro specificato nel pannello di amministrazione.

sostituendolo con una variabile contenente l'indirizzo della pagina dove mandare l'utente potrete personalizzare il login dell'utente di Joomla o il logout dell'utente

Bisogna però fornire l'indirizzo in questo formato:

index.php?option=com_nomecomponente&itemid=iddellitem&altriparametri

Inoltre il valore viene accettato solo se in formato base_64 quindi occore usare la funzione base64_encode di PHP.

Se avete installato Joomfish! il reidirect dell'utente può creare difficoltà, dove quindi rimuovere dalla stringa il parametro &lang=it dalla stringa.

Ecco l'esempio del mio sito web:

//ottengo la pagina di provenienza dell'utente tramite PHP
$redirectUrl=$_SERVER['HTTP_REFERER'];
//divido l'url ottenuto con explode in base al "?" in 2 array
$redirectUrl=explode("?",$redirectUrl);
//prendo il secondo elemento - quello con i parametri - e creo un nuovo array in base alla "&"
$redirectUrl=explode("&;",$redirectUrl[1]);
//ricostruisco la stringa e gli dico di prendere tutti i parametri tranne l'ultimo
for( $i=0; $i<(count($redirectUrl)-1); $i++ ){
$str_redirectUrl=$str_redirectUrl . $redirectUrl[$i];
  //l'ultima volta non devo aggiungere la "&"
if($i<(count($redirectUrl)-2)){
$str_redirectUrl=$str_redirectUrl . "&";
}
}
//a volte$_SERVER['HTTP_REFERER'] può essere vuoto o non formattato correttamente - il browser può non fornire queste informazioni a seconda delle impostazioni di sicurezza - se il valore è vuoto prendo il valore inserito dal pannello di amministrazione
if( count($redirectUrl)<0 ){
$str_redirectUrl="index.php?".$str_redirectUrl;
$str_redirectUrl=base64_encode( $str_redirectUrl );
}else{
$str_redirectUrl = $this->return;
}

Come al solito è una base di partenza, lo script può essere personalizzato in base alle più disparate esigenze.

sabato 9 ottobre 2010

facebook e joomla - condivisione e possibili interazioni

Joomla! e Facebook. Programmazione di base

La condivisione di Joomla! con Facebook è un'esigenza che sta diventando sempre più diffusa.

Se aveste ricercato la stessa cosa 6 mesi fa avreste trovato ben poco.

Ora invece l'interesse sta crescendo sempre di più e nonostante Wordpress sia già avanti da tempo su questo fronte, ci sono numerose estensioni che permettono la condivisioni di utenti e post tra Joomla! e Facebook, in questa pagina potete trovare una lista esauriente:

http://extensions.joomla.org/extensions/social-web/facebook-integration

Purtroppo la maggior parte delle estensioni è commerciale.

In ogni caso é utile conoscere come funziona la programmazione Facebook per poterle utilizzare al meglio e personalizzare.

Per questo motivo ho creato il nuovo blog programmatore Facebook dove pubblico nuovi articoli sulla programmazione con il suo framework.

sabato 2 ottobre 2010

Una selezione di siti web 2.0

Creare presentazioni:
http://prezi.com

http://www.slideshare.net/

http://www.issuu.com

Come usare Internet per far iscrivere gli utenti ai proprio corsi off-line

corsi on-line di web marketing

Oggi siamo letteralmente soffocati da offerta di formazione. Tutti ci propongono con maggiore o minore professionalità corsi di formazione sui più svariati argomenti.

Madri da anni vende corsi di formazione, prima sul web marketing, poi sul marketing e la formazione manageriale.

Per differenziarsi e permettere di "toccare con mano" i propri prodotto invia periodicamente alla propria mailing list brevi video di 10-30 minuti contenenti un'anteprima degli argomenti del prossimo corso di formazione sul web marketing.

Eccone alcuni esempi fra quelli che mi sono arrivati ultimamente

i links dai Social aiutano davvero la SEO e il posizionamento di un sito?

1) I backlinks da Twitter, Facebook e Youtube funzionano? E passano davvero Pagerank?
http://www.madri.com/bonusarea/usa/desert5/

2) Se il tuo sito venisse segnalato in TV su Canale 5 al TG:
http://www.madri.com/bonusarea/usa/nevada6/

3) Video lezione sui "Quality Raters" dei motori di ricerca, come gli operatori di Google influenzano i risultati dei motori di ricerca:
http://www.madri.com/bonusarea/usa/sanfran7/?imk=3WMnQRATER1

4) Il futuro del marketing on-line
http://www.madri.com/bonusarea/usa/sequoia8/?imk=3WMnMADUSAweb30

In regalo:
1) L' E-BOOK "Maximum Public Speaking - Il Nocciolo della Comunicazione"
Un'utilissima guida tascabile per avere sempre a "portata di mano" tutte le tecniche e gli stratagemmi per parlare in pubblico

2) La GUIDA "Il Piano d’azione A.I.C."
Un esclusivo strumento didattico che ti affianchera' nell'applicazione di quanto appreso in questo percorso formativo e professionale per diventare un Comunicatore di successo

3) Uno SCONTO del 15% per la partecipazione ad uno dei corsi in aula organizzati dalla Max Formisano Training.

come ridurre i rischi che il Vs. sito web Joomla venga crackato

Proteggere il proprio sito web Joomla! da attacchi

Impedirlo al 100% è davvero difficile, la ragione è facilmente intuibile da qui:

tuttavia ci si può facilmente difendere da cracker da 4 soldi osservando queste ed altre best practices:
  • eliminare i template non utilizzati dalla cartella TEMPLATES;
  • proteggere lato server con una password la cartella ADMINISTRATOR;
  • cambiare periodicamente la PASSWORD DELL'AMMINISTRATORE;
  • cambiare periodicamente la PASSWORD DI ACCESSO FTP del sito web;

giovedì 30 settembre 2010

invio di e-mail con smtp server su magento con advanced arts on it advanced smtp magento

Invio di e-mail da Magento con server SMTP


L'invio di e-mail su Magento non avviene se non è configurato sendmail sul server.

E' però possibile inviare e-mail tramite SMTP.



Di default questa funzione non è presente su Magento e-commerce Community Edition, tuttavia è possibile scaricare l'estensione di advanced arts on it advanced smtp magento da questo indirizzo http://www.magentocommerce.com/extension/specs/460/advanced-smtp--artson.it

Dopo il download con MagentoConnect e l'installazione andate su SYSTEM->CONFIGURATION di MAGENTO COMMUNITY EDITION.

Dal menu laterale in fondo a sinistra, sotto ADVANCE  troverete il nuovo menu:
invio e-mal con SMTP



ADVANCED SMTP SETTINGS


Cliccateci sopra, selezionate il Vs. negozio e inserite i dati d configurazione.

le impostazioni del server SMTP per username e password di advanced smtp




Potreste anche trovare un errore di questo tipo

ACCESS DENIED

Niente panico, uscite, se potete riavviate APACHE e rientrate, tutto sarà risolto!!

Leggete questo thread per maggiori informazioni:

http://www.magentocommerce.com/boards/viewthread/16966/

lunedì 20 settembre 2010

importare i dati in mysql usando un file CSV

Per l'importazione di un file CSV in Mysql da riga di comando occorre lanciare il terminale.

Potete creare un collegamento al file del terminale seguito da questi parametri:

C:\xampp\mysql\bin\mysql.exe -h localhost -u root -p

Inserite la password di amministrazione e selezionate il DB:

USER database

Infine caricate i dati:

 LOAD DATA INFILE 'c:/nomefile.txt' INTO TABLE pippo FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n';

Per ulteriori informazioni su loaddata:

http://dev.mysql.com/doc/refman/5.0/en/load-data.html

giovedì 24 giugno 2010

Personalizza il plug-in Joomla YouTube Embedder

APPUNTI

Plug-in sviluppato da Cory Webb su licenza GNU/GPL

Abilita la API Javascript di YouTube:
 
apiplayer?enablejsapi=1&version=3
 
aggiungi parametro sul file XML
aggiungi il parametro al codice PHP del del Plug-In


Bibliografia:
http://code.google.com/intl/it-IT/apis/youtube/js_api_reference.html#Embedding

mercoledì 23 giugno 2010

Joomla - Effettuare ricerche in base ai campi del componente CONTATTI

Personalizzazione del componente COM_CONTACT su Joomla

(APPUNTI - IL POST VERRA' ARRICCHITO CON ULTERIORI DETTAGLI)
Specifiche Richieste

  • Il cliente ha dei contatti da raggruppare per categoria
  • Alcune categorie sono visualizzabili solo in una lingua
  • Occorre filtrare i risultati in base al valore inserito nel campo PROVINCIA nei contatti




Operazione 1:
Per mantenere l'applicazione upgrade-safe utilizzeremo il template override di Joomla!

A questo proposito creiamo due nuovi file per la vista CATEGORY del componente COM_CONTACT e copiamoli nelle seguenti cartelle del template predefinito del sito web:
  • html/com_contact/category/default.php
  • html/com_contact/category/default_items.php
Non sarà necessario modificare altri file. Ora analizziamo il codice dei file.

MODIFICHE al file html/com_contact/category/default.php

Il file default.php conterrà il seguente codice:


Le variabili $Itemid e $catid conterranno le variabili necessarie per effettuare il filtro per province.

Dopodichè creeremo la seguente funzione per ordinare e filtrare i dati restituiti dal modello del componente in base ai criteri scelti dall'utente:


Poichè i dati vengono restituiti dal modello e noi stiamo effettuando un semplice override dei layout del componente, utilizzeremo una funzione che si limiterà a stampare a video i soli $item coerenti con la richiesta effettuata dal client.

Inserico la select per il filtro sulla ricerca basandomi sul campo per cui voglio effettuare il filtro:

Creo il link dove mandare l'utente dopo la selezione


MODIFICHE al file html/com_contact/category/default_items.php

Ottengo la provincia selezionata in base alla selezione dell'utente

 


Filtro i risultati con un "if(){}" in base alla selezione effettuata


A questo punto creo categorie e contatti in base alle mie esigenze e automaticamente il filtro della ricerca sarà popolato.

Per ridurre la visualizzazione solo ad alcune lingue utilizzerò soltanto i componenti del Club di Joomfish! Multilingual Menu Add-on

Ultimi ritocchi:
Se volessi utilizzare lo stesso campo per italia e estero ma definizione non è coerente posso cambiare l'etichetta del campo amministrazione modificando il file administrator/language/it-IT/it-IT.com_contact.ini


Aggiornamento
1. Per mantenere un'ordinamento corretto è bene che i valori del campo "state" siano tutti maiuscoli o minuscoli dunque conviene inserire una funzione strtower()


foreach($arr_filtro as $item){
array_push($arr_regioni, strtolower($item->state));
}

 
2. Una minaccia alla riuscita del nostro progetto è la limitazione della lista dei risultati restituiti, infatti nel modello CATEGORY.PHP e presente questa riga:


return $this->_getList( $query, @$options['limitstart'], @$options['limit'] );

da cambiare in:

return $this->_getList( $query, 0, 1000 );

oppure cambiando le lunghezze delle liste (mantenendo quindi l'upgrade safe.