Sviluppo

Come creare 3 select dinamiche relazionate nazioni-regioni-province con l'attributo ahah per Drupal 6

Con molta fatica ho ricercato il codice per la popolazione di 3 select in Drupal 6, con PHP, Javascript, AJAX, girato tra forum, inviato richieste e post, poi grazie alla documentazione trovata sono riuscita a sviluppare penso in modo ottimale le funzioni necessarie. Il modulo è testato e funzionamte ma non completo in quanto manca il codice SQL per le tabelle del db e completare le funzioni validate e submit del form, ecco perchè non allego file. Inoltre è sviluppato per l'Italia, ma si può implemenare per le altre nazioni, basta creare gli array delle relative regioni....

Argomenti:

Come visualizzare le phpinfo su Drupal 6

Ecco un semplice codice per visualizzare le phpinfo in amministrazione:

Argomenti:

Breve guida su come utilizzare drupal_add_tabledrag per creare tabelle ordinabili per peso drag and drop

Questo codice lavora perfettamente e con grande soddisfazione lo posto! Grazie a tutti quelli che hanno dato dei consigli perchè il codice riportato altrove è simile ma proprio incompleto e inesatto. Ora potete implementare il vostro sito con delle funzionali tabelle droppabili fino a 200 record. Utilizzate lo script come volete o all'interno dei vostri moduli o create un modulo sulla base di questo codice e soprattutto, per il funzionamento create la tabella con il codice sql mostrato.

<?php
/*
CREATE TABLE dr_foo (
id serial NOT NULL,
value1 varchar(255) NOT NULL default '',
value2 varchar(255) NOT NULL default '',
weight smallint NOT NULL DEFAULT 0,
PRIMARY KEY (id)
);
INSERT INTO dr_foo (id, value1, value2, weight) VALUES (1, 'a', 'a', 1);
INSERT INTO dr_foo (id, value1, value2, weight) VALUES (2, 'b', 'b', 2);
INSERT INTO dr_foo (id, value1, value2, weight) VALUES (3, 'c', 'c', 3);
INSERT INTO dr_foo (id, value1, value2, weight) VALUES (4, 'd', 'd', 4);
INSERT INTO dr_foo (id, value1, value2, weight) VALUES (5, 'e', 'e', 5);
*/
function example_menu() {
$items = array();
$items[example] = array(
'title' => t('Example tabledrag'),
'page callback' => 'drupal_get_form',
'page arguments' => array('example_form'),
'access arguments' => array('go example'),
'type' => MENU_NORMAL_ITEM,
);
return $items;
}

function example_form(&$form_state){
$form['#submit'][] = 'example_form_submit';
$result = db_query("SELECT id, value1, value2, weight FROM {foo} ORDER BY weight");
while ($row = db_fetch_object($result)){

$data = array($row->value1, $row->value2);

$form['rows'][$row->id]['data'] = array('#type' => 'value', '#value' => $data);
$form['rows'][$row->id]['weight-'.$row->id] = array(
'#type' => 'weight',
'#delta' => 200,

Argomenti:

Creare un sotto tema in 15 minuti.

L'esempio crea un sotto tema da Garland, ma è sufficientemente generico per qualsiasi tema (spero).

1. Decidere il nome.
Un nome a singola parola va bene, seguendo le regole per i nomi delle variabili di PHP. Ho scelto drupalitalia.

2. Creare il percorso per il tema.
Puoi metterlo in sites/all/themes o sites/default/themes. Ho scelto sites/all/themes/drupalitalia. Controlla che i permessi siano identici rispetto a quelli di themes/garland. Per riuscire ad editare i file potrebbe essere necessario cambiare il gruppo, e mettere i permessi a 775.

3. Preparare il tema.
Bisogna creare solo pochi file per il tema. Il primo, e più importante, è drupalitalia.info. Il file deve usare il nome del tema - drupalitalia, e l'estensione .info. Qui dobbiamo specificare una serie di parametri del tema (vedi http://drupal.org/node/171205).

name = Drupalitalia - modificato Garland
description = Esempio di sotto-tema per DrupalItalia.org.
base theme = garland
core = 6.x
engine = phptemplate
stylesheets[all][] = drupalitalia.css
scripts[] = drupalitalia.js
regions[left]    = Colonna sinistra
regions[right]   = Colonna destra
regions[content] = Contenuto
regions[header]  = Intestazione
regions[footer]  = Piè pagina
regions[drupalitalia]  = Speciale per questo tema

Tutto copiato dal tema originale, con qualche eccezione:

  • base theme bisogna pur dire da quale tema vogliamo ereditare la funzionalità - devi usare la nome 'macchina' cioè il nome usato per il file .info
  • stylesheets[all][] oltre ai file CSS dell'originale specifichiamo anche uno nostro.
  • scripts[] oltre ai file JavaScript dell'originale (se ci sono) specifichiamo anche uno nostro.

Argomenti:

Tutorial: documentazione

Abbiamo qui a disposizione alcuni "tutorial" da altri chiamati anche "how to", che essenzialmente ci possono tornare utili per realizzare particolari sistemi, oppure semplicemente ci indicano come costruire qualcosa nel concreto, spesso sfruttando soluzioni e tecniche del tutto inusuali.

Argomenti:

Il sistema menù - dall'URI alla pagina web

Stato documento: Beta

Anche se raggruppato sotto il nome "sistema di menù", il sistema si divide in due distinte parti:

  • conversione dell'URI: da /project/drupal in ?q=node/121
  • router: da ?q=node/121 all'esecuzione di codice che gestisce l'URI

Confuso? Vediamo ogni parte un po' più in dettaglio.

Conversione dell'URI.

Ogni pagina del nostro sito ha un URI. Per esempio http://drupal.org/project/drupal[/codefilter_code] che si divide in:

  • protocollo: http
  • server: drupal.org
  • percorso: /project/drupal

Il server (Apache o IIS per il protocollo http nel nostro caso) viene chiamato e prima controlla se il percorso corrisponde ad un file, e se ha i permessi necessari per accederci. Questo, nel caso di Apache, lo fa anche tramite il famoso file .htaccess. [Edit: aggiungi link a "cos'è .htaccess"]

Se tutto va liscio, il web server restituisce il file - un immagine, o file CSS per esempio. Altrimenti, se il file non esiste, il nostro tenace web server continua il suo tentativo di restituire qualcosa di utile, caminando lungo il percorso all'indietro. Se non trova /project/drupal, controlla /project, e poi /. Nel nostro caso, all'indirizzo / (detto anche root del sito) trova il file index.php di Drupal, che il web server può eseguire.
Nel caso che non trovasse nulla di utile, il povero web server è costretto a restituire il codice 404 - che significa "Oops, non c'è", o nel caso che trovi il file ma non ha i permessi giusti, il codice 403 - che significa "Spiacente, ma non posso".

Argomenti:

Come creare un modulo 'custom' (senza sapere molto di PHP)

Stato documento: Alfa

Vedi anche Creazione di un modulo (incompleto), e Creazione di un modulo Drupal (Tutorial) (più esteso).

Qualche volta vediamo piccoli pezzi di codice utile, con il consiglio di metterlo nel nostro modulo custom. Ma come si fa a creare un modulo custom? E che cos'è un modulo custom?

Un modulo custom è un modulo scritto appositamente per un singolo sito. Non si trova su http://drupal.org, e semplicamente qualcosa che è tutto nostro - e quindi anche di nostra responsibilità.

Moduli esterno al core di Drupal vengono inseriti in sites/all/modules, ma niente ci vieta a mettere un modulo in un sotto indirizzario di questo. Da "Pro Drupal Development", viene suggerito di mettere moduli custom in sites/all/modules/custom, per tenerlo 'distante' dai moduli scaricati da http://drupal.org.

Come minimo dovremo creare due file, ma prima bisogna 'inventare' un nome per il nostro modulo custom. Il nome del sito può andare bene, ma ricorda che il nome può contenere solo lettere non accentati, e che viene usato come prefisso per tanti funzioni - quindi la brevità aiuta. Se il sito forse http://drupalitalia.org, possiamo usare drupalitalia o forse di come nome più breve. Basta che è sufficientemente originale da non fare conflitto con nomi di moduli già esistente.
Metteremo questi due file in un indirizzario sites/all/modules/drupalitalia, per esempio.

Regola #1 A questo punto in poi dove vedi custom in questo documento bisogna sostituire il nome che hai scelto - drupalitalia per esempio.

Il primo file viene letto da Drupal per capire cosa fa il modulo, senza caricare codice, e si chiama custom.info. Il suo contenuto minimo è molto semplice:

Argomenti:

Introduzione a jQuery

Argomenti:

Il meccanismo degli hook

Drupal è un framework per cms che mette a disposizione il meccanismo degli hook per interagire con core e con altri eventuali moduli.

Il meccanismo è basato sul nome delle funzioni dichiarate all'interno del codice del modulo e il nome del modulo stesso.

Ad esempio hook_menu permette di registrare un path e associargli un comportamento/contenuto da restituire nel brower. Per definire l'interazione del vostro modulo, chiamiamolo moduloprova, si dovrà definire la funzione moduloprova_menu.

Argomenti:

I principali hook

  1. hook_block
  2. hook_menu
  3. hook_perm
  4. hook_theme
  5. hook_nodeapi
  6. hook_form (load, view, insert, update, validate, ...)
  7. hook_form_alter

Argomenti:

Pagine

Abbonamento a RSS - Sviluppo