Drupal dodawanie węzła w module
Poniżej przykładowy hook w którym dodajemy węzeł określonego typu oraz jego tłumaczenie (jeśli chcemy obsługiwać wersje językowe). Funkcja nazwamodulu_user_insert jest hookiem wykonywanym przy tworzeniu konta użytkownika. Przykładowy kod po dodaniu użytkownika dodaje węzeł określonego typu oraz jego tłumaczenie.
function nazwamodulu_user_insert(&$edit, $account, $category) {
$created_user_id = $edit['uid'];
$created_user_name = $edit['name'];
$created_user_firstname_lastname = $edit['field_imi_i_nazwisko']['und'][0]['value'];
$node = new stdClass(); // Tworzymy nowy obiekt
$node->type = "profil"; // określamy typ węzła
node_object_prepare($node); // ustawiamy domyślne wartości
$node->title = $created_user_firstname_lastname;//pole tytułu
$node->language = 'pl';//język
$node->status = 1;//status (czy opublikowany)
$node->promote = 0;
$node->sticky = 0;
$node->uid = $edit['uid'];//autor (id usera)
$node->field_user['und'][0]['uid'] = $edit['uid'];//referencja do pola użytkownika
$node->field_czy_wy_wietla_w_grafiku_['und'][0]['value'] = 1;//pole typu boolean
$node->field_rodzaj_pracownika['und'][0]['tid'] = 5;//pole typu select
$node->workbench_moderation_state_new = 'published';//status (przy dodatkowym module workbench)
if($node = node_submit($node)) { // przygotowanie do zapisu
node_save($node); //zapis
$node->tnid = $tnid = $node->nid;
node_save($node); // Aktualizacja węzła - nid już istnieje w bazie danych
// Tłumaczenie (en)
$node = new stdClass();
$node->type = 'profil';
node_object_prepare($node);
$node->uid = $edit['uid'];
$node->language = 'en';
$node->title = $created_user_firstname_lastname;
$node->status = 1;
$node->promote = 0;
$node->sticky = 0;
$node->uid = $edit['uid'];
$node->field_user['und'][0]['uid'] = $edit['uid'];//referencja do pola użytkownika
$node->field_czy_wy_wietla_w_grafiku_['und'][0]['value'] = 1;//pole typu boolean
$node->field_rodzaj_pracownika['und'][0]['tid'] = 5;//pole typu select
$node->workbench_moderation_state_new = 'published';
$node->tnid = $tnid;
node_save($node);
}
}
