Buongiorno!
vi scrivo sperando che qualcuno mi aiuti a fare un po' chiarezza in questo nuovo mondo vastissimo che è Drupal per un inesperto come me.
Premetto che so programmare in PHP, ma ancora non capisco come approcciarmi a Drupal.
In particolare faccio confusione quando si parla di nodi, pagine, blocchi...
Vengo al sodo:
vorrei realizzare un'applicazione che permetta la gestione di una squadra sportiva:
- inserimento anagrafica
- inserimento allenamenti con presenze, programma svolto, eventuali info successive
- inserimento partite (risultati, punteggio, convocazioni, sostituzioni...)
- calendario con eventi:
- date partite
- date scadenze visite mediche/tesserini
- allenamenti e loro info (vedi sopra)
- partite (vedi sopra)
- pagina con statistiche (le più disparate).
- ...
ho provato a usare CCK+views e webforms, ma
1) non ho capito come indicare una tabella DB specifica per il salvataggio delle info
2) non riuscivo ad eliminare alcuni campi inutili, come nome autore, commenti, allegati, revisioni
allora ho provato a crearmi un modulo personalizzato, con questo codice:
(ho una tabella nel DB che si chiama ATLETI e comprende alcune informazioni; la mia idea è di
leggere e scrivere i dati di questa form su quella)
<?php
// $Id: $
/**
* Display help and module information
* @param path which path of the site we're displaying help
* @param arg array that holds the current path as would be returned from arg() function
* @return help text for the path
*/
function form_anagrafica_help($path, $arg) {
$output = ''; //declare your output variable
switch ($path) {
case "admin/help#form_anagrafica":
$output = '<p>'. t("Mostra la form per l\'anagrafica") .'</p>';
break;
}
return $output;
}
/**
* Implementation of hook_perm().
*
* Since we are limiting the ability to create new nodes to certain users,
* we need to define what those permissions are here. We also define a permission
* to allow users to edit the nodes they created.
*
* @return array An array of valid permissions for the form_anagrafica module
*/
function form_anagrafica_perm() {
return array(
'create nuova form',
'delete la propria form',
'delete ogni form',
'edit la propria form',
'edit ogni form',
);
}
function anagrafica_menu(){
$items = array();
$items['anagrafica'] = array(
'title' => t('Compila anagrafica'),
'page callback' => 'anagrafica_page',
'access arguments' => array('access content'),
'type' => MENU_NORMAL_ITEM,
) ;
$items['anagrafica_view'] = array(
'title' => 'Atleti',
'page callback' => 'anagrafica_view',
'access arguments' => array('access content'),
'type' => MENU_NORMAL_ITEM,
) ;
return $items;
}
function anagrafica_page(){
return drupal_get_form('anagrafica_form');
}
function anagrafica_form($form_state){
$form = array();
$form['main'] = array(
'#type' => 'fieldset',
'#title' => check_plain($type->title_label),
'#collapsible' => TRUE,
'#collapsed' => false,
'#tree' => false,
);
// Now we define the form elements specific to our node type.
//COGNOME
$form['main']['cognome'] = array(
'#type' => 'textfield',
'#title' => t('Cognome'),
'#size' => 50,
'#maxlength' => 64,
'#required' => TRUE,
'#description' => t('Cognome atleta')
);
//NOME
$form['main']['nome'] = array(
'#type' => 'textfield',
'#title' => t('Nome'),
'#size' => 50,
'#maxlength' => 64,
'#required' => TRUE,
'#description' => t('Nome atleta')
);
//CATEGORIA
$sql = "SELECT id, categoria FROM CATEGORIE";
$result = db_query($sql);
$options = array('');
while ($row = db_fetch_array($result)) {
$options[$row['id']] = $row['categoria'];
}
$form['main']['categoria'] = array(
'#type' => 'select',
'#title' => t('Categoria'),
'#required' => TRUE,
'#options' => $options,
'#description' => t('Specificare la categoria di appartenenza')
);
$options = null;
//DATA DI NASCITA
$form['main']['data_nascita'] = array(
'#type' => 'date',
'#title' => t('Data di nascita'),
'#required' => false,
'#description' => t('Inserire data di nascita'),
'day' => format_date(time(), 'custom', 'j'),
'month' => format_date(time(), 'custom', 'n',0),
'year' => format_date(time(), 'custom', 'Y')
);
//PULSANTE SUBMIT
$form['submit'] = array (
'#type' => 'submit',
'#value' => t('Invia'),
);
return $form;
}
/**
* Implementation of hook_validate().
*
*
* Errors should be signaled with form_set_error().
*/
function anagrafica_form_validate($form_id, &$form_state) {
...
}
function anagrafica_form_submit($form_id, &$form_state){
...
drupal_set_message(t("submitted. thank u"));
}
function anagrafica_view($op='list', $delta=0) {
// listing of blocks, such as on the admin/block page
switch($op){
case "list": $page_content = _list_Atleti();
break;
}
print theme("page", $page_content);
}
function _list_Atleti(){
//SELECT * FROM ATLETI...
$text = "prova";
// check to see if there was any content before setting up the block
if ($text == '') {
// no content from a week ago, let the user know
$text = "No posts left on this site during last week.";
}
return $text;
}
?>
ma non sono sicuro che questa sia il modo migliore per approcciare il problema. infatti non ho capito arrivato a questo punto come creare una pagina (page? block?) che contenga una tabella con la lista di tutti gli atleti inseriti, magari con qualche informazione aggiuntiva e un pulsante con scritto "MODIFICA".
grazie in anticipo per l'aiuto!
guarda questi moduli
http://drupal.org/project/storm
http://drupal.org/project/leaguesite
http://drupal.org/project/pickem
http://drupal.org/project/sport
grazie per il suggerimento!
sono tutti molto simili a quello che intendo fare io.
Sono ancora dell'idea di farmi un modulo "casalingo" (anche per imparare!), ma guarderò il codice di questi moduli per prendere spunto!
nel frattempo sono giunto alla conclusione che devo lavorare con i nodi, e ho creato un nodo "atleti" che si occupa di fornire una pagina per l'inserimento dei dati, e la loro visualizzazione.
sto procedendo ora con la scrittura della form e di una vista.
Non ho però ancora capito come funziona "Views"... :-(