martedì 27 gennaio 2009

Blog Drupal, inseriamo un menu Categorie

Dopo aver aggiunto un menù Categorie al blog realizzato con Joomla (vedi questo post) facciamo la stessa cosa sul blog in Drupal.

Ci sono probabilmente diversi modi per fare una cosa di questo tipo in Drupal, io ho scelto di utilizzare il modulo Vocabulary Index. Per maggiori dettagli sulle possibilità offerte dal modulo rimando a questo post pubblicato su oneCMS.it.

Per quello che interessa qui, cioè per ottenere il risultato visibile sulla colonna laterale sinistra del sito dimostrativo basta seguire questi passi.

  • Installare ed attivare il modulo
  • Andare in Amministra >> Struttura del sito >> Vocabulary Index
  • Selezionare il tab Blocchi. Nella lista abbiamo solo un vocabolario (Categoria) i cui termini usiamo per categorizzare i post del blog.
  • Spuntare Enabled e Node Counts (per visualizzare il numero dei post accanto al link). Come View scegliere Flat. Salvare.
  • Andare in Amministra >> Struttura del sito >> Blocchi
  • Nella lista dei blocchi troviamo Categoria (Vocabulary Index). Basta assegnarlo al settore desiderato, nel nostro caso Left Navigation.

Sarà anche necessario modicare il file vocabindex.css nella cartella del modulo per armonizzare lo stile del modulo con quello del template.

Il modulo ha una sua cache, per cui quando si pubblica un nuovo post il contatore può non aggiornarsi immediatamente. La cache si può pulire (forzandone un riaggiornamento) o disabilitare del tutto in Amministra >> Struttura del sito >> Vocabulary Index [Settings]

mercoledì 21 gennaio 2009

Joomla, aprire connessioni a più database

Rispondo con un nuovo post ad un commento lasciato al post Joomla 1.5: funzioni di accesso al database perché la risposta non è brevissima ed è difficile postare codice nei commenti.

Negli esempi del post menzionato si mostra come eseguire query sul database di Joomla, ma se si volesse fare la stessa cosa su un altro database magari per visualizzare o comunque manipolare i dati gestiti da una altra applicazione?

Quando si agisce sul database di Joomla possiamo ottenere un'istanza della classe JDatabase semplicemente con

$db =& JFactory::getDBO();

Poi si utilizza $db come già visto

$sql = "SELECT * FROM #__users";
$db->setQuery($sql);
$results = $db->loadObjectList();

Per accedere ad un altro database dobbiamo creare ed inizializzare un altra istanza di JDatabase in questo modo

$options = array(
 'driver' => 'mysql',
 'host' => 'localhost',
 'user' => 'xxx',
 'password' => 'yyy',
 'database' => 'zzz',
 'prefix'=> 'phpbb_'
);

$db2 =& JDatabase::getInstance( $options );

Nell'array $options passiamo i parametri della connessione. Si assume che localhost sia l'host, come di solito è, altrimenti va impostato l'indirizzo giusto, al posto di xxx yyy zzz vanno utente, password e nome database.

Ottenuta l'istanza la si utilizza come al solito. Ad esempio

$sql = "SELECT * FROM #__posts";
$db2->setQuery($sql);
$results = $db2->loadObjectList();

Nell'elemento prefix di $options si passa il prefisso delle tabelle. L'esempio appena fatto mostra una query sul database di phpBB3 che usa come prefisso phpbb_. Le istruzioni setQuery() sostituiscono #__ con questo prefisso.

Se il database a cui si accede non utilizza prefissi per le tabelle si può omettere l'elemento prefix da $options e nelle istruzioni setQuery indicare il solo nome della tabella senza anteporre #__

Tutto il codice degli esempi è scheletrico, se si usano le funzioni in applicazioni reali va fatto un minimo di controllo sui valori di ritorno di tutte le funzioni per intercettare eventuali errori.

martedì 20 gennaio 2009

QCategories 1.0.1

Ho fatto qualche modifica al modulo QCategories di cui ho già parlato in un post precedente.

Niente di trascendentale: è adesso possibile configurare il modulo per mostrare anche la descrizione di una categoria e nel caso decidere se visualizzarla per intero o tagliarla dopo il primo periodo o paragrafo.

Il modulo è stato inserito nel sito e può essere scaricato da

www.latenight-coding.com/it/joomla-addons/qcategories.html

Spero sia utile.