シナリオはこのようになり、多くの分類用語フィールドが含まれるノードタイプがあります。テキスト、日付などの他のフィールドもありますが、その90%は分類フィールドです。ノードはプログラムで2つの方法で作成できることを知っています。
node_save()-ノードオブジェクトを作成して保存する
$node = new stdClass(); $node->type = 'article'; $node->field_term[LANGUAGE_NONE][0]['tid'] = 3128 // term id of the term node_save($node);
フォーム送信-フォーム配列の作成とdrupal_form_submitを使用した送信
$node[field_first]['und'] => chennai; $node[field_second]['und'] => "iphone5"; $node['type'] = 'article'; $form_state['values'] = $node; $form_state['values']['op'] = t('Save'); drupal_form_submit($node_type . '_node_form', $form_state, (object)$node);
$ nodeはPOST値を持ちます。
フォーム送信メソッドを使用する利点は、Drupalが語彙で新しい用語を作成することです(私はより多くの新しい用語を取得することになっています)。フォームの送信は、ノードの作成に必要なフォームの検証に従うことができます。
より多くの項を取得するはずのDrupalシステムでノードをより速く作成する方法はありますか?
上記以外の方法がない場合、どの方法が最適ですか?
最初のアプローチは少し高速ですが、2番目のアプローチの方が維持しやすい場合は、2番目のアプローチを使用します。
—
jantimon
問題は、12を超える用語フィールドがあり、各フィールドに用語として10を超える値がある場合に発生します。非常に遅く、リソースの多くを使用します
—
Dinesh Kumar Sarangapani
次に、1つのエンティティフィールドクエリを記述して、既に存在する用語を見つけ、不足している用語をすべて作成し、最後に、最初のアプローチで示したようにノードを作成します。
—
jantimon
はい、ノードを作成するにはいくつかの方法があると言ったように、私が望むのは理由が最も良いものです
—
Dinesh Kumar Sarangapani
@DineshKumar 'Best'は主観的な用語なので、実際に意味するもの(たとえば、最もパフォーマンスの高いもの)に絞り込んでください。スタックの交換サイトでは、「最高」のものを求める質問はうまくいきません。その上、この質問に対する唯一の本当の答えは、現在の環境でさまざまな方法をベンチマークすることから得られます。
—
クライヴ