Т.е. у меня нода - песня связана с нодой - альбом. хочу вытащить инфу об альбоме в шаблоне ноды песни (что бы потом рядом с названием альбома вывести ссылку кликая на которую в колорбоксе открылась бы вся инфа об альбоме).
как достучаца до связанной ноды из открытой текущей ноды?
Вот тут сам принцип описан. В том же хуке Вам надо загрузить ноду (node_load()), на которую ссылается текущая и сконструировать нужный html с использованием ее полей. Потом в шаблоне ноды вывести куда положено.
добавьте это все в нод.тпл.пхп для вашего типа материала.
Вообще рабочий пример, странно, что не заводится. Проверьте все ли вы поменяли: имя поля, имя пресета, совпадают ли переменные.
добавьте это все в нод.тпл.пхп для вашего типа материала.
Вообще рабочий пример, странно, что не заводится. Проверьте все ли вы поменяли: имя поля, имя пресета, совпадают ли переменные.
ваше решение выдает ошибку
EntityMalformedException: Отсутствует связующее свойство у сущности типа node. в функции entity_extract_ids() (строка 7633 в файле /home/u3311/domains/agatawar.ru/includes/common.inc).
поля не обязательно должно быть (связующее со значением)
т.е. песня не обязательно имеет связку с альбомом.
пока. закомменчу решение чтобы битых страниц не было
Комментарии
Т.е. у меня нода - песня связана с нодой - альбом. хочу вытащить инфу об альбоме в шаблоне ноды песни (что бы потом рядом с названием альбома вывести ссылку кликая на которую в колорбоксе открылась бы вся инфа об альбоме).
как достучаца до связанной ноды из открытой текущей ноды?
Без кодинга - вьювс
С кодингом -
fields API
подробней - в ПМ
поди с денюшкой в ПМ.
Вот тут сам принцип описан. В том же хуке Вам надо загрузить ноду (node_load()), на которую ссылается текущая и сконструировать нужный html с использованием ее полей. Потом в шаблоне ноды вывести куда положено.
что вы, просто я бы дал скайп или агент, так проще и быстрее решить проблему
точно линк на принцип по воводу моей задачи?
node_load($node->названия node_reference поля?[0]['nid']) **** ???
почему то там пустой массив поля из привязанной ноды по это связи пишет что
<?php
[field_cover] => Array ( )
[field_binding_album] => Array
(
[und] => Array
(
[0] => Array
(
[nid] => 793
[access] => 1
[node] => stdClass Object
?>
абсолютно точно
не выходит нифига
<?php
[field_binding_album] => Array
[field_cover] => Array
stdClass Object
(
[vid] => 975
[uid] => 4
[title] => В дверь стучат
[nid] => 975
[type] => songs
[revision_uid] => 4
(
[und] => Array
(
[0] => Array
(
[nid] => 17
[access] => 1
[node] => stdClass Object
(
[vid] => 17
[uid] => 4
[title] => Прекрасное жестоко
[status] => 1
[comment] => 2
[nid] => 17
[type] => albums
(
[und] => Array
(
[0] => Array
(
[fid] => 123
[alt] =>
[title] =>
[width] => 230
[height] => 232
[uid] => 4
[filename] => pzh.jpg
[uri] => public://pzh.jpg
[filemime] => image/jpeg
[filesize] => 21630
[status] => 1
[timestamp] => 1359445283
)
)
)
)
)
)
)
?>)
такое выводит print_r($node); после кода
<?php
$album = $content['field_binding_album'][und][0]['nid'];
$node_album = node_load($album);
print_r ($node);
?>
картинку поля [field_cover] хочу вывести из связанного поля
template.php -> theme_preprocess_node
<?phpif($node->type == 'YOUR_NODE_TYPE') {
$album_ref = field_view_field('node', $node, 'field_node_reference_name');
$album_ref_nid = $album_ref['#items'][0]['nid'];
$album_load = node_load($album_ref_nid); // load referenced node
}?>
дальше тянете, что хотите
по другим вапще ничо не выводит
воспользовался вашим вариантом. но дело так и остановилось на
<?php
stdClass Object
(
[vid] => 975
[uid] => 4
[title] => В дверь стучат
[nid] => 975
[type] => songs
[revision_uid] => 4
[field_binding_album] => Array
(
[und] => Array
(
[0] => Array
(
[nid] => 17
[access] => 1
[node] => stdClass Object
(
[vid] => 17
[uid] => 4
[title] => Прекрасное жестоко
[status] => 1
[comment] => 2
[nid] => 17
[type] => albums
[field_cover] => Array
(
[und] => Array
(
[0] => Array
(
[fid] => 123
[alt] =>
[title] =>
[width] => 230
[height] => 232
[uid] => 4
[filename] => pzh.jpg
[uri] => public://pzh.jpg
[filemime] => image/jpeg
[filesize] => 21630
[status] => 1
[timestamp] => 1359445283
)
)
)
)
)
)
)
)
?>
как собрать и вывести картинку...
<?php]
if($node->type == 'YOUR_NODE_TYPE') {
$album_ref = field_view_field('node', $node, 'field_node_reference_name');
$album_ref_nid = $album_ref['#items'][0]['nid'];
$album_load = node_load($album_ref_nid); // load referenced node
$image = field_get_items('node', $album_load, 'field_cover');
$vars['output_image'] = field_view_value('node', $album_load, 'field_cover', $image[0], array(
'type' => 'image',
'settings' => array(
'image_style' => 'your_imagecache_preset',
'image_link' => 'content',
),
));
}
// in node.tpl.php
print drupal_render($output_image);
?>
Как-то так должно вывестись:
//Простой вариант
$output = field_view_value('node', $album_load, 'field_cover', $image[0]);
print $output;
//Продвинутый вариант
$output = field_view_value('node', $album_load, 'field_cover', $image[0], array(
'type' => 'image',
'settings' => array(
'image_style' => 'thumbnail',
'image_link' => 'content',
),
));
print $output;
P.S. Не успел
как-то так. Должно завестись. У меня работает так.
что то ребята не выводится.
я это добавил в шаблон ноды своей где буду выводить все. не выводится.
print $output; добавлять в шаблон темы или в шаблон ноды?
<?php
$album_ref = field_view_field('node', $node, 'field_node_reference_name');
$album_ref_nid = $album_ref['#items'][0]['nid'];
$album_load = node_load($album_ref_nid); // load referenced node
$image = field_get_items('node', $album_load, 'field_cover');
$output_image = field_view_value('node', $album_load, 'field_cover', $image[0], array(
'type' => 'image',
'settings' => array(
'image_style' => 'your_imagecache_preset',
'image_link' => 'content',
),
));
print drupal_render($output_image);?>
добавьте это все в нод.тпл.пхп для вашего типа материала.
Вообще рабочий пример, странно, что не заводится. Проверьте все ли вы поменяли: имя поля, имя пресета, совпадают ли переменные.
Так все норм, когда в шаблон типа материала.
В этот код можно теперь и любые поля добавить?
например заголовок нодереферальной ноды
$output_title = field_view_value('node', $album_load, $title);
print drupal_render($output_title);
хотя мне кажется это чушь, заголовок поди нужно подругому...
да чото и заменой на body не выходит содержание вывести.
ваше решение выдает ошибку
EntityMalformedException: Отсутствует связующее свойство у сущности типа node. в функции entity_extract_ids() (строка 7633 в файле /home/u3311/domains/agatawar.ru/includes/common.inc).
поля не обязательно должно быть (связующее со значением)
т.е. песня не обязательно имеет связку с альбомом.
пока. закомменчу решение чтобы битых страниц не было
какое то условие нужно в первые две строчки вставить что если нет Id то и все пропускаем дальнейшее
добавил перед загрузкой нида
строчку
if ($album_ref_nid = $album_ref['#items'][0]['nid'])
без ошибок терь все =)))