создавать многоязычный узел программно

Я пытаюсь создать многоязычный узел, используя скрипт php.

Я делаю это:

 $node = new stdClass();
 $node->title = "Test ".mktime();
 $node->type = "job";
 $node->language = 'de'; // Or e.g. 'en' if locale is enabled
 $node->uid = $user->uid; 
 $node->status = 1; //(1 or 0): published or not
 $node->promote = 0; //(1 or 0): promoted to front page
 $node->comment = 1; //2 = comments on, 1 = comments off
 $node->path = array('alias' => 'das-ist-ein-test-'.mktime());
 $node->body[$node->language][0]['value']   = "Body Body Body";
 $node->body[$node->language] = text_summary("Body Body Body");
 $node->body[$node->language]  = 'filtered_html';
 node_save($node);

Пока я устанавливаю язык $ node- & gt на 'und', все работает нормально. Но как только я устанавливаю язык на «de» или «en» (оба языка активируются в моей установке Drupal), основной текст не сохраняется.

Итак, мой вопрос: может ли кто-нибудь предоставить мне рабочий пример того, как хранить многоязычный узел (de, en) в Drupal, используя программный код.

Спасибо

7 голосов | спросил caspermc 13 J000000Friday12 2012, 17:00:51

1 ответ


8

Это зависит от того, является ли ваше поле тела переводимым или нет. Пожалуйста, ознакомьтесь с этим объяснением о переводимых полях: https://drupal.stackexchange.com/a/31639/2466

$node_lang = 'ru'; // I am a Russian girl

$node = new stdClass();
$node->title = "Test ".mktime();
$node->type = 'article'; // Your type
$node->language = $node_lang;
$node->uid = 1; 
$node->status = 1;

// Get proper langcode
$body_field_info = field_info_field('body');
if (field_is_translatable('node', $body_field_info)) {
  $body_language = field_valid_language($node_lang);
} else {
  $body_language = LANGUAGE_NONE;
}

// Some lorem ipsum.
// You can add custom summary:
// $node->body[$body_language][0]['summary'] = 'Summary';
$node->body[$body_language][0]['value']   = 'Lorem monotonectally iterate resource-leveling innovation before timely core competencies. Globally coordinate sustainable strategic theme areas and intermandated infomediaries. Monotonectally brand customer directed solutions and high-quality bandwidth.';

node_save($node);

Существует проблема для Drupal 8, чтобы сделать API-интерфейс Field Language более удобным.

ответил kalabro 13 J000000Friday12 2012, 19:59:47

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132