私のWebサイトにはsinger
というコンテンツタイプがあり、すべての歌手はname
およびその他の情報を持っている可能性があります。 songs
と呼ばれる別のコンテンツタイプがあり、すべての曲には2つのフィールドがあります:(1)ファイル(2)名前。また、songs
にエンティティ参照フィールドを作成し、歌を歌手にリンクしました。明らかに、すべての歌手はリンクされた曲をいくつでも持つことができます。
ページに歌手をリストしました。ユーザーが任意の歌手をクリックすると、すべての歌手情報とsongs
が表示されるはずです。これは私の_template.tpl.php
_です
_function MyThere_preprocess_page(&$variables)
{
if (isset($variables['node']))
{
switch ($variables['node']->type)
{
case "singer":
$suggest = "page__node__singers";
$variables['theme_hook_suggestions'][] = $suggest;
$variables['name'] = t($variables['node']->field_singer_name['und'][0]['value']);
break;
}
}
}
_
singer
フィールドの値を取得できます(kpr()
を使用)。ただし、歌手にリンクされているsongs
フィールドの値を取得する方法がわかりません。
ありがとう
あなたはこれを試すことができます
// $node represents the node object
// field_songs is the field used in content type to reference field.
$wrapper = entity_metadata_wrapper('node', $node);
$songs = $wrapper->field_songs->value();
今 $songs
各曲オブジェクトがあり、そこから印刷したい情報を印刷できます。
1つのアプローチは、参照されるフィールドテーブルを直接クエリすることです。例えば。:
function MyThere_preprocess_page(&$variables)
{
if (isset($variables['node']))
{
switch ($variables['node']->type)
{
case "singer":
$suggest = "page__node__singers";
$variables['theme_hook_suggestions'][] = $suggest;
$variables['name'] = t($variables['node']->field_singer_name['und'][0]['value']);
// I don't know what is your table's structure, correct ref.field table col names. Because they are wrong in my example:)
$query = db_select('node', 'n')''
$query->join('field_data_field_MY_REF_FIELD_NAME', 'fdfr',
'n.nid = fdfr.field_MY_REF_FIELD_NAME_NID');
$query->fields('n', array('nid'));
$query->condition('n.nid', $variables['node']->nid, '=');
$query->execute()->fetchCol();
break;
}
}
}