[Решено!] Как подтянуть ноду связанную с текущей по связи ноде референсе

Главные вкладки

Аватар пользователя iNFerNo iNFerNo 29 января 2013 в 12:59

Как вытащить в шаблон текущей ноды поля связанной с ней по ноде референсесвязи другой ноды?

пи.эс. виевс не предлагать (пока что, хочется без него - кодом каким нить... ).

Комментарии

Аватар пользователя iNFerNo iNFerNo 29 января 2013 в 13:01

Т.е. у меня нода - песня связана с нодой - альбом. хочу вытащить инфу об альбоме в шаблоне ноды песни (что бы потом рядом с названием альбома вывести ссылку кликая на которую в колорбоксе открылась бы вся инфа об альбоме).

как достучаца до связанной ноды из открытой текущей ноды?

Аватар пользователя IPlayer IPlayer 29 января 2013 в 18:35

Вот тут сам принцип описан. В том же хуке Вам надо загрузить ноду (node_load()), на которую ссылается текущая и сконструировать нужный html с использованием ее полей. Потом в шаблоне ноды вывести куда положено.

Аватар пользователя nyhm nyhm 29 января 2013 в 13:38

"iNFerNo" wrote:

поди с денюшкой в ПМ. =)


что вы, просто я бы дал скайп или агент, так проще и быстрее решить проблему

Аватар пользователя iNFerNo iNFerNo 29 января 2013 в 14:17

почему то там пустой массив поля из привязанной ноды по это связи пишет что

<?php
[field_binding_album] => Array
        (
            [
und] => Array
                (
                    [
0] => Array
                        (
                            [
nid] => 793
                            
[access] => 1
                            
[node] => stdClass Object

                            

[field_cover] => Array ( )
?>
Аватар пользователя iNFerNo iNFerNo 29 января 2013 в 15:00

не выходит нифига

<?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
                                                        
)

                                                )

                                        )

                                    
                                )

                        )

                )

        )
    
)
  

?>

такое выводит print_r($node); после кода

<?php
$album 
$content['field_binding_album'][und][0]['nid'];
$node_album node_load($album);
print_r ($node);
  
?>
Аватар пользователя TurboPixel TurboPixel 29 января 2013 в 15:43

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
  }?>

дальше тянете, что хотите

Аватар пользователя iNFerNo iNFerNo 29 января 2013 в 16:07

"TurboPixel" wrote:
дальше тянете, что хотите

воспользовался вашим вариантом. но дело так и остановилось на

<?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
)

)

)

)

)

)

)

)
?>

как собрать и вывести картинку...

Аватар пользователя TurboPixel TurboPixel 29 января 2013 в 16:21
<?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);
?>

Аватар пользователя goodboy goodboy 29 января 2013 в 16:23

Как-то так должно вывестись:

$image = field_get_items('node', $album_load, 'field_cover');

//Простой вариант
$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. Не успел Wink

Аватар пользователя iNFerNo iNFerNo 30 января 2013 в 8:31

"TurboPixel" wrote:
P.S. Не успел ;)

"TurboPixel" wrote:
как-то так. Должно завестись. У меня работает так.

что то ребята не выводится.

"Goodboy" wrote:
// in node.tpl.php
print drupal_render($output_image);

я это добавил в шаблон ноды своей где буду выводить все. не выводится.

"Goodboy" wrote:
$image = field_get_items('node', $album_load, 'field_cover'); //Простой вариант $output = field_view_value('node', $album_load, 'field_cover', $image[0]); print $output;

print $output; добавлять в шаблон темы или в шаблон ноды?

Аватар пользователя TurboPixel TurboPixel 30 января 2013 в 11:20
<?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);?>

добавьте это все в нод.тпл.пхп для вашего типа материала.
Вообще рабочий пример, странно, что не заводится. Проверьте все ли вы поменяли: имя поля, имя пресета, совпадают ли переменные.

Аватар пользователя iNFerNo iNFerNo 30 января 2013 в 13:15

Так все норм, когда в шаблон типа материала.

В этот код можно теперь и любые поля добавить?

например заголовок нодереферальной ноды

  $title = field_get_items('node', $album_load, $title);
    $output_title = field_view_value('node', $album_load, $title);
            print drupal_render($output_title);

хотя мне кажется это чушь, заголовок поди нужно подругому...

Аватар пользователя iNFerNo iNFerNo 1 февраля 2013 в 17:09

"TurboPixel" wrote:
добавьте это все в нод.тпл.пхп для вашего типа материала.
Вообще рабочий пример, странно, что не заводится. Проверьте все ли вы поменяли: имя поля, имя пресета, совпадают ли переменные.

ваше решение выдает ошибку

EntityMalformedException: Отсутствует связующее свойство у сущности типа node. в функции entity_extract_ids() (строка 7633 в файле /home/u3311/domains/agatawar.ru/includes/common.inc).

поля не обязательно должно быть (связующее со значением)

т.е. песня не обязательно имеет связку с альбомом.

пока. закомменчу решение чтобы битых страниц не было