Feeds を使用してXMLからコンテンツをインポートしています。コンテンツは次のような映画と上映時間です。
<film id=av1>
<title>Avatar</title>
<showtimes total="2">
<showtime show_id="1" id="av1" date="1/1/2012" price="10" />
<showtime show_id="2" id="av1" date="2/1/2012" price="15" />
<showtimes>
<film>
現在、私は2つのコンテンツタイプ(フィルムとショータイム)を作成し、Node Reference( References module))を使用してショータイムをフィルムに関連付けています。関係を使用してリスト、日付リストなどを表示する.
これは問題ありませんが、Node参照はノードタイトルでのみリンクできるため、ソースフィードの映画タイトルを更新すると問題が発生します。IDフィールドを使用してリンクすることをお勧めします。決して変わらない。
問題は、フィードを使用して2つのコンテンツタイプにインポートしているため、2つのフィードインポーターを実行していて、同期するにはソースのタイトルを使用する必要があることです。 Drupalで映画のタイトルが変更されたとすると、XMLにさらに上映時間が追加されます。インポート時に、新しいShowtimeノードが作成されますが、Filmノードが見つかりません。ソースからのIDフィールドを使用すると、物事が結合されたままになります。参照されたコンテンツタイプの代わりにフィールドコレクションを使用する方がよいでしょうか?
可能な解決策:
分類語彙を使用して、各映画に新しい用語「id」を作成します。次に、上映時間に同じ用語をタグ付けします。これが分類法の適切な使用であるかどうかはわかりませんが、この方法で単一接続を作成しますか?
Relation モジュールがフィールドによるリンクを提供するかどうかを確認します。おそらくフィードではまだ機能しません。
映画のコンテンツタイプを1つ作成し、上映時間を保存するには Field Collection を使用します。次に、すべてが単一のノードに接続されます。これがどれほど実現可能かわかりません。
どんなガイダンスや提案も歓迎します!
あなたは間違っています。 Node referenceはノードIDを使用します-参照を作成するためのノードの主キーです。参照するノードを入力する必要があるフォーム要素は、オートコンプリートを使用して、参照したいノードですが、格納されている値はノードIDなので、ノード参照を使用してタイトルを変更しても問題はありません。
これを説明するためのノード参照モジュールのコードは、これらの参照の作成に使用するフィールドタイプに対してスキーマが定義されている場所にあります。
/**
* Implements hook_field_schema().
*/
function node_reference_field_schema($field) {
$columns = array(
'nid' => array(
'type' => 'int',
'unsigned' => TRUE,
'not null' => FALSE,
),
);
return array(
'columns' => $columns,
'indexes' => array('nid' => array('nid')),
'foreign keys' => array(
'nid' => array(
'table' => 'node',
'columns' => array('nid' => 'nid'),
),
),
);
}