Програмне створення ноди, коментаря та терміна вDrupal 7

Дуже часто доводиться переносити свої сайти з інших систем, для цього потрібно програмно створювати ноди в друпале. Як це зробити, ми розглянемо у цьому матеріалі.

Зміст статті

Підготовка

Найлегший спосіб - це обійтися без створення повноцінного модуля, а просто створити php файл докорінно друпала. Перше що ми повинні зробити це завантажити всі функції друпала, щоб використовувати всі доступні функції.

type = "article"; // Визначаємо тип створюваного матеріалу node_object_prepare ($ node); // додаємо налаштування за замовчуванням

$node - > title = "Назва"; // Назва матеріалу $node - > language = LANGUAGE_NONE; // Або наприклад 'ru', якщо увімкнено модуль locale

$node - > uid = 1; // UID користувача

// Заповнення поля body $bodytext = 'Текст ноди.' $node - > body [ $node - > language] [0] ['value'] = $bodytext; $node - > body [ $node - > language] [0] ['summary'] = text_summary ($bodytext); $node - > body [ $node - > language ] [ 0 ] [ 'format' ] = 'filtered_html';

$node - > path = array ('alias' = > 'path_to_this_node'); // шлях до матеріалу, для модуля path

// Додаткові властивості ноди $node - > status = 1; // Опубліковано (1) чи ні (0) $node - > promote = 1; // Розміщено на головній (1) чи ні (0) $node - > sticky = 1; // Закріплено вгорі списків (1) чи ні (0) $node - > comment = 2; // Коментарі включені (2) чи ні (1)

if ( $node = node_submit ( $node ) ) < // Підготовка до збереження node_save ($ node); // Збереження ноди тепер доступний nid нової ноди $node->nid >

Додавання полів

Текстові чи числові поля

Полядати від модуля Date (datetime, date, datestamp)

// Для datetime $node - > field_datetest [ $node - > language ] [ 0 ] [ value ] = "2012-04-13 12:35:58" ;

// Для date $node - > field_datetest [ $node - > language ] [ 0 ] [ value ] = "2012-04-13T12:35:58" ;

// Для datestamp $node - > field_datetest [ $node - > language ] [ 0 ] [ value ] = strtotime ( " 2012-04-13 12:35:58 " ) ;

Зверніть увагу, що вам не потрібно вказувати повну дату; для datetime і date , можна заповнити недостатні значення нулями, наприклад: "2012-04-00 00:00:00" (datetime), "2012-00-00T00:00:00" (date), і т.д. Для datestamp можна писати так strtotime("2012-04-13").

Поля з булевими значеннями

Поле Term reference (taxonomy)

Node and User references (References)

// 1 nid ноди $node - > field_node_reference [ $node - > language] [] ['nid'] = 1;

// 2 uid користувача $node - > field_user_reference [ $node - > language] [] ['uid'] = 2;

Для багатьох зв'язків, просто продублюйте код.

Зображення

// створюємо об'єкт $file_path = drupal_realpath ( 'foo.jpg'); $file = (object) array ( 'uid' = > 1 , 'uri' = > $file_path , 'filemime' = > file_get_mimetype ( $file_path ) , 'status' = 1, ) ;

// додаємо до матеріалу $node - > field_image [ $node - > language ] [ 0 ] = ( array ) $ file ;

Програмне створення терміна таксономії

Якщо вам потрібно програмно створити новий термін таксономії, можна скористатися функцією taxonomy_term_save(), як тут:

після збереження в об'єкті терміна буде доступним його tid: $new_term - > tid.