Creare un modulo (qualche concetto che non mi è chiaro)

Anonimo

Leggendo la documentazione continuo a non capire certi concetti:
1) I nodi, servono a decidere quale scelta fare? Chessò, se devo inserire dati in un magazzino, potrei fare un link contenente il nodo 'magazzino/inserisci/'. Un funzione, tramite strutture switch (per esempio), potrebbe decidere che se q='magazzino/inserisci/' deve lanciare la funzione di inserimento..... giusto?
2) se all'interno del nodo metto $node->nid, quel nodo sarà visibile solo all'utente loggato (o a chi ne ha i diritti).... giusto?
3)Una cosa che proprio non riesco a comprendere è come fa a sapre Drupal che funzione dev'essere lanciata all'interno del modulo.... le prova tutte? Cioè, mi spiego meglio, io ho un modulo con 10 funzioni, facendo un clik sul un blocco la funzione n° 5 del modulo x deve eseguire una certa cosa.... come fa drupal a sapere questo? Come vengono trattate queste funzioni all'interno di drupal?
4) Vedendo il codice di alcuni moduli, ho notato che alcune funzioni prendono in ingresso dei valori...ma quei valori chi li passa? ad esempio: $node (questo $node è un parametro standard di drupal...il nome del nodo in oggetto?)
....esite un semplice tutorial in Italiano?
....esistono altri esempi oltre quelli della bellissima documentazione di drupal?

Chiedo scusa se le domande vi sembrano semplici, ma sono fondamentali per capire come funziona drupal e di conseguenza scrivere qualche modulo.

P.S.
Grazie Matteo per la precedente risposta

Ciao e Grazie
Gianni


Posts: 627
Iscritto il: 20 Nov 04
Admin di Drupal ItaliaRedattore di Drupal Italia. Contribuisco a manuali

Caro Gianni,
Drupal è molto potente e ordinato nel codice, ma richiede un pò di tempo per essere 'metabolizzato'.
ti suggerisco di dare una occhiata sul cvs di drupal alla directory /docs e agli esempi contenuti.
Premetto che Drupal è un content management system più che una piattaforma di sviluppo di applicazioni (anche se puoi farti una idea guardando il modulo e-commerce che si può fare anche quello...).

In Drupal, nodo è l'informazione elementare, che si porta dietro un titolo, un testo ed un testo ridotto (teaser).
Ogni nodo è classificato da un tipo (es. story, page, ecc.)
Se già vuoi estendere questi dati, o scrivi un modulo tuo usando un tipo di nodo diverso (es. annuncio), oppure usi moduli come flexinode per creare un nodo con campi custom.
In entrambi i casi, nella tabella 'node' ci sono i dati elementari di un nodo, e in un altra tabella si memorizzano i dati rimanenti.
Quando si aggiorna, cancella o inserisce un nodo di un certo tipo, si memorizzano i dati su entrambe le tabelle.
Es. nel modulo event, c'è una tabella aggiuntiva chiamata 'event'.

Drupal ha un concetto di 'hook', cioè si aspetta che un modulo usi delle funzioni del tipo nomemodulo_hook, perchè lui le richiama in punti prefissati ed in un certo ordine.
giocando su questo meccanismo molto potente, scrivere un modulo significa scrivere una serie di funzioni che si chiamano modulo_hook e lì dentro specificare la logica e restituire il tipo di informazione che drupal si aspetta.

Per la lista degli hook, vai su http://drupaldocs.org/api/head e consulta gli esempi su /docs del repository CVS

Un esempio, supponendo di scrivere un modulo chiamato 'annuncio':
la funzione annuncio_perm permette di specificare i permessi possibili per un modulo

la funzione annuncio_perm permette di decidere la logica con cui accedere o meno al nodo (ad esempio in base ai permessi)

la funzione annuncio_form permette di specificare una maschera per l'input dei dati

la funzione annuncio_validate permette di specificare la logica di validazione dei dati

le funzioni annuncio_insert,_delete,_update permettono di modificare o inserire i dati aggiuntivi

e così via....

Ti consiglio di guardare moduli come 'recipe', per vedere come creare un modulo che genera record di tipo 'recipe' (ricetta), che ad esempio memorizza anche gli ingredienti di una ricetta in una ulteriore tabella. E' un ottimo tutorial; installandolo e guardando nel codice ti renderai conto delle funzioni richiamate da drupal.

Anche 'event' o 'weblink' sono moduli che estendono le potenzialità di Drupal base.

Ti assicuro che, una volta metabolizzato, scrivere con Drupal è molto più semplice che in molti altri CMS, anche se poi ti renderai conto che userai bene o male sempre i soliti hook.

Fammi sapere come procedi nel tuo progetto....

Matteo

__________________

Matteo

Se ti piace cantare, visita:
CANTinCORO
A-Cappella.it


Gianni (non verificato)

"Ti assicuro che, una volta metabolizzato, scrivere con Drupal è molto più semplice che in molti altri CMS"

Di questo son sicuro. Ho scritto moduli personali xoops (personalizzazioni per una intranet aziendale), la scrittura dei moduli (in quel caso) avviene in modo immediato.... ma quanta fatica nel cercare la documentazione e le funzioni di sistema di xoops (come primo impatto), mi sembrano di gran lunga inferiori.... sarà forse la documentazione estremamente scarsa.
Drupal mi ha subito colpito per la documentazione, la facilità nel personalizzare la grafica e questi moduli fatti da sole funzioni. Non ti nascondo che mi piace pure il fatto che i moduli li vedo come singoli tassellini di un insieme.... mi spiego meglio, tornando alla creazione di un magazzino, potrei fare il modulo di gestione clienti, il modulo fornitori, il modulo articolo ecc... Ogniuno potrebbe essere una singola entità riutilizzabile (una specie di classe o un componente.... permettimi l'uso improprio del termine). Il modulo clienti potrei riutilizzarlo, così com'è, in un'altra applicazione. Ho visto che molti moduli di Drupal fanno proprio questo, ampliano le funzioni di altri moduli e così si ottiene una personalizzazione estrema.
Ti ringrazio per la tua gentilezza, sei stato molto chiaro. Provvederò a vedermi tutti i link che mi hai fornito e a non tornare più a rompere sul forum fin quando non ho buttato giù qualcosa.

Ciao e Grazie
Gianni


Posts: 627
Iscritto il: 20 Nov 04
Admin di Drupal ItaliaRedattore di Drupal Italia. Contribuisco a manuali

Nessun problema, Gianni.
Io ho creato già qualche modulo che ho intenzione di condividere, non appena stabilizzai. Sono soprattutto specializzazioni del modulo story, per potere memorizzare dati più copmplessi (vedi http://www.a-cappella.it).

Fammi spere come procedi !
Matteo

__________________

Matteo

Se ti piace cantare, visita:
CANTinCORO
A-Cappella.it


Condividi contenuti