web-dev-qa-db-ja.com

プログラムで多言語ノードを作成する

私は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-> languageを「und」に設定している限り、すべてが正常に機能しています。しかし、言語を「de」または「en」に設定するとすぐに(両方の言語が私のDrupalインストールでアクティブ化されます)、本文テキストが保存されません。

だから私の質問は:プログラムコードを使用して、複数のノード(de、en)をDrupal)に格納する方法の実用的な例を誰かに教えてもらえますか?.

ありがとうございました

8
caspermc

それはあなたのボディフィールドが翻訳可能かどうかに依存します。翻訳可能なフィールドについてのこの説明を見てください: 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);

フィールド言語APIをより使いやすくするために、 問題 Drupal 8があります。

9
kalabro