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


8

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に格納する方法の実用的な例を誰かに教えてもらえますか?

ありがとうございました


[リンク]私の希望、これは右方向(にあなたを助けるかもしれないdrupal.stackexchange.com/questions/6401/...
ヴィック

回答:


9

それはあなたの体フィールドが翻訳可能かどうかに依存します。翻訳可能なフィールドについてのこの説明を見てください: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でField Language APIをより使いやすくするための問題があります。


ご回答どうもありがとうございました。それは今働いています。私はそれはかなり奇妙な概念だと思いますが、このノードからのフィールドは「未定義」であるのに対して、ノード自体は言語固有です。フィールドが言語固有のユースケースがあるかどうか疑問に思っています(私のテストでは、すべてのフィールドが「und」でした)。フィールドが常に「und」である場合、関数呼び出しをすべて破棄できます。
caspermc

1
'und'多言語サイトでフィールドキーとしてのみ使用することはお勧めしません。
kalabro

@kalabro –そうです、LANGUAGE_NONE代わりに。
leymannx 2017
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.