script php create node

8 contenuti / 0 new
Ultimo contenuto
script php create node

salve a tutti,

volevo creare uno script php per creare un nodo prendendo in post dei valori:

<?
//variabili in post
$titolo = $_POST['titolo'];
$body = $_POST['body'];

$node->type = 'mio_content_type';
$node ->title = $titolo;
$node ->body = $body;

node_save($node);
>

come faccio a crearlo di proprietà di un utente (magari passandogli il nome utente in post)?
e gli altri campi? vanno messi pure cosi $node ->via = $via; $node ->citta = $citta;??

grazie

Drupal Version:

Ciao, se cerchi su internet trovi molte guide su come è strutturato un nodo di drupal (occhio alla versione). Lo user è ->uid, il nome utente è ->name.

Comunque, installa il modulo devel, carica in uno script un nodo preesistente e stampalo tramite "kpr($variabile_che_contiene_il_nodo);". Trovi tutte le informazioni che necessiti.

M.

--
Michel 'ZioBudda' Morelli -- [email protected]
Sviluppo applicazioni CMS DRUPAL e web dinamiche -- Corsi Drupal -- Amministrazione Drupal -- Hosting Drupal

In drupal 7:
$node = new stdClass(); // crei l'oggetto
$node->type = "page"; // Il tuo tipo di contenuto
$node->title = "titolo del nodo";
$node->language = LANGUAGE_NONE; //Lingua
$node->uid = 1; // Id utente che crea il nodo
$node->path = array('alias' => 'path'); // path
node_object_prepare($node);

$node->body[$node->language][0]['value'] = 'body';
$node->body[$node->language][0]['summary'] = 'summary';
$node->body[$node->language][0]['format'] = 'filtered_html';

Se il tuo nodo ha campi custom:
$node->field_iltuocampocustom[$node->language][0]['value'] = 'valore';

Per salvare il nodo:
$node = node_submit($node);
node_save($node);

Marco

Solo una precisazione sul completo post di Marco: non indicare language[0], ma language[LANGUAGE_NONE] anche perché mi sembra che sia "und" e non 0.

M

--
Michel 'ZioBudda' Morelli -- [email protected]
Sviluppo applicazioni CMS DRUPAL e web dinamiche -- Corsi Drupal -- Amministrazione Drupal -- Hosting Drupal

Ciao,
al massimo puoi mettere così
$node->body['und'][0]['value'];

ma è la stessa cosa di:

$node->body[$node->language][0]['value'];

la posizione zero dell'array va specificata.

Marco

risiko wrote:

$node->body[$node->language][0]['value'];

Ciao, attento che è così ma solo in questo caso particolare dove stai andando ad inserire un valore nel body. Se lavori su delle tassonomie (che non sono legate con le traduzioni a livello di nodo) il $node->language non corrisponde sempre al language della tassonomia.

M.

--
Michel 'ZioBudda' Morelli -- [email protected]
Sviluppo applicazioni CMS DRUPAL e web dinamiche -- Corsi Drupal -- Amministrazione Drupal -- Hosting Drupal

se un campo è un'immagine? come faccio l'upload?

Per le immagini devi prima reare l'oggetto File
$file_path = drupal_realpath('somefile.png'); // Create a File object
$file = (object) array(
'uid' => 1,
'uri' => $file_path,
'filemime' => file_get_mimetype($filepath),
'status' => 1,
);
$file = file_copy($file, 'public://'); // Salva il file nella root "public://" è possibile specificare una sotto cartella ad esempio: 'public://images'
$node->field_image[LANGUAGE_NONE][0] = (array)$file; //colleghi il campo image al file.