Загрузка товаров с помощью API Drupal

DrupalЕсли читателю нужно импортировать некоторые данные из любой сторонней системы, то добавить их в Drupal можно не только с помощью прямых запросов к базе данных. Для таких целей лучше подойдет API, который сам добавить связи, сохранит куда надо файлы и сделает все как надо!

В начале файла импорта необходимо добавить строчки подключения Drupal


// Include drupal's files
define('DRUPAL_ROOT', getcwd());

require_once 'includes/bootstrap.inc';
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);

Теперь мы можем использовать API Drupal

К примеру нам нужно добавить товары в каталог. Для начала необходимо добавить группу или категорию товаров. В Drupal такие сущности называются таксономией (taxonomy).

Для операция с сущностями в Друпал используется стандартный класс PHP stdClass.

Создадим и сохрани группу


// If not exist - create group
$group = new stdClass();
$group->uid = 0; // ID пользователья (0 - гость)
$group->vid = 2; // ID категории группы (taxonomy_vocabulary)
$group->name = $name; // Название
$group->description = $decription; // Описание
$group->format = 'full_html';
$group->parent = array(0);
taxonomy_term_save($group);  // Сохраняем

Что если нам нужно добавить изображение  к группе?

Изображения сохраняются так


$file = file_save_data($jpg, 'public://' . $translit . '.jpg');

Здесь в $jpg находится само изображение, к примеру полученное с помощью функции file_get_content

С помощью функции file_save_data Друпал сам сохранит изображения по нужным папкам и создаст необходимые размеры изображений!

Для хранения такой информации, а также характеристик товара в Drupal используются функции вида  field_data_*, где * — это обозначение таблицы.

К примеру field_data_field_image хранит информацию об изображениях товара, а field_data_field_weight хранит информацию о его весе.

Для доступа к таким таблицам нам необходимо указывать только вторую часть названия(обозначенную звездочкой [*] ).

К примеру, так мы добавим связь группы и изображения


 $group->field_products_tax_image['und'][0]['fid'] = $file->fid; // ID изображения
$group->field_products_tax_image['und'][0]['width'] = 100;
$group->field_products_tax_image['und'][0]['height'] = 100;
$group->field_products_tax_image['und'][0]['alt'] = $name;
$group->field_products_tax_image['und'][0]['title'] = $name;
 taxonomy_term_save($group);

А сама таблица будет, соответственно называется
field_data_field_products_tax_image.

‘und ‘ обозначает язык для которого доступна эта запись

0 — номер (можно добавить несколько изображений группе

‘fid’, ‘width’ — название столбцов в таблице. Заметьте, что реальные названия столбцов в таблицу будут «field_products_tax_image_fid» и «field_products_tax_image_width» соответственно.

strong

Комментарии запрещены.