CCK field as a view argument in Drupal 6
September 18, 2010
I found this trick during the development of Acton Institute's new Drupal-ized website. I wanted to be able to list out other articles by the same author and show it on a sidebar. Here's the setup:
- Article authors are CCK nodereference fields to a separate author content type
How does one then construct a view that thinks the author is a CCK field and not the actual node's author? It's a lot easier than I thought. The only thing you need to have in your view is an argument with a little PHP magic.
- Create an argument and locate your author field attached to the article type you'll be showing this view on (I do it with block visibility)
- Select "Provide default argument"
- Under "Default argument type" select "PHP Code"
- Paste this in the box, replacing field_author with the machine-code name of your field:
$node=node_load(arg(1)); if($node) { return $node->field_author[0]['nid']; } else { return FALSE; }
- I have Action to take if argument does not validate set to "Basic validation" and "Action to take if argument does not validate" set to "Hide View / Page not found (404)"
- "Allow multiple terms per argument" is checked.
- "Exclude the argument" is unchecked.
I then added a block and set it to only show on certain articles. When visitors go to an article they can see the latest articles by the author of the article they're viewing.