[support] CCK/nodereference/Views - Block of referenced nodes?

Garrett Coakley garrettc at polytechnic.co.uk
Mon Mar 26 14:28:22 UTC 2007


Hi,

I'm building a site (Drupal5.1) that contains a CCK content type for  
articles. The article type has a nodereference field attached so that  
authors can generate a list of related articles ("If you like this  
article you might also like..." functionality.).

I've been able to build a custom function that displays a list of the  
related nodes at the end of the article by doing:

# template.php
function display_related_articles($node) {
   if ($node->field_related_articles['0']['view'] != '') {
     return _phptemplate_callback('box_related_articles', array 
('node' => $node));
   }
}

# box_related_articles.tpl.php
<ul>
<?php foreach ($node->field_related_articles as $related) { ?>
   <li><?php print $related['view']; ?></li>
<?php } ?>
</ul>

I'd now like to replicate this same functionality into a sidebar  
block, but I'm hitting a brick wall somewhere. Using the views module  
I've generated a custom block using the "Arguments" system to do the  
following:

# Argument Type
Node Reference: Related Articles - Display All Values

# Argument Code
if ($type == 'block' && arg(0) == 'node' && is_numeric(arg(1))) {
   $currentnode = arg(1);
   $query = db_query("SELECT field_related_articles_nid FROM  
content_field_related_articles WHERE nid = %d ORDER BY  
field_related_articles_nid ASC", $currentnode);
   $args = array();
   while ($result = db_fetch_object($query)) {
     $args[] = $result->field_related_articles_nid;
   }
}
return $args;

This works to a certain degree, but it's showing some odd quirks. The  
test node I'm using references 6 other articles, but the block is  
displaying 7 entries: 5 of the referenced articles, 1 seemingly  
random article, and a link back to the article currently being  
displayed.

I have a feeling I'm being dense and missing something supremely  
simple here, but I can't for the life of me work out what it is. I've  
poured over the docs on drupal.org and although I've found lots of  
explanations on how to display reverse references ("List all the  
nodes that reference this one") I can't seem to find a solution for  
this, what I originally thought was simple, use case.

This site is currently under development so I can't point you towards  
a URL, but if anyone wants to see an export of the view then I could  
stick it up on pastebin.

Thanks in advance.

G.

--
------------------------------------------------------------------------
   Blog: http://polytechnic.co.uk
Photos: http://flickr.com/photos/garrettc
  Music: http://last.fm/user/garrettc1





More information about the support mailing list