You can use node relativity to attach nodes to other nodes. In this case, I am using it to attach reviews to product nodes, where the reviews are nodes in their own right. I want to be able to view the reviews (children) within the product node (parent).
There is a view (views.module) to control the display of the review nodes. Then, within the node.tpl template, add the 2nd part of the snippet (following //SNIPPET FOR NODE.TPL)
//VIEWS EXPORT $view = new stdClass(); $view->name = 'reviews_of_node'; $view->description = ''; $view->access = array ( ); $view->view_args_php = ''; $view->page = TRUE; $view->page_title = ''; $view->page_header = ''; $view->page_header_format = '3'; $view->page_footer = ''; $view->page_footer_format = '3'; $view->page_empty = '<p>No reviews found.</p>'; $view->page_empty_format = '3'; $view->page_type = 'node'; $view->url = 'review'; $view->use_pager = TRUE; $view->nodes_per_page = '10'; $view->block = TRUE; $view->block_title = ''; $view->block_header = ''; $view->block_header_format = '3'; $view->block_footer = ''; $view->block_footer_format = '3'; $view->block_empty = ''; $view->block_empty_format = '3'; $view->block_type = 'node'; $view->nodes_per_block = '100'; $view->block_more = FALSE; $view->block_use_page_header = FALSE; $view->block_use_page_footer = FALSE; $view->block_use_page_empty = FALSE; $view->sort = array ( array ( 'tablename' => 'node', 'field' => 'changed', 'sortorder' => 'DESC', 'options' => 'normal', ), ); $view->argument = array ( array ( 'type' => 'relativity_parent', 'argdefault' => '7', 'title' => '%1 Review', 'options' => '', 'wildcard' => '', 'wildcard_substitution' => '', ), ); $view->field = array ( ); $view->filter = array ( array ( 'tablename' => 'node', 'field' => 'status', 'operator' => '=', 'options' => '', 'value' => '1', ), ); $view->exposed_filter = array ( ); $view->requires = array(node); $views[$view->name] = $view;
<div class="review-link"> <?php print l("Add your review of the $model","node/add/review/parent/$node->nid"); ?> </div> <?php // Retrieve the view $view = views_get_view('reviews_of_node'); // Build the view into the $reviews variable with paging on and nodes per page set to 20 $reviews = views_build_view('block', $view, array(strval($node->nid)), true, 20); // Get the number of reviews global $pager_total_items; $numreviews = $pager_total_items[0]; // Print the reviews echo "<h3>Customer Reviews for the $model</h3>"; if ($numreviews != 0) { print "Number of reviews: $numreviews"; print $reviews; print "<p>Read all: ".l("$model reviews", "review/$node->nid")."</p>"; }else{ print "<p>There are currently no reviews for the $model. Be the first: ".l("Add a Review for the $model","node/add/review/parent/$node->nid")."</p>"; } } } ?>
Does Drupal development make your head explode and drive you crazy?
Why not learn from someone who has paved the way instead?
Sign up to my upcoming learning series.
I am Blair Wadman and this is where I write about Drupal, PHP, CSS etc
© Blair Wadman
2005 - 2011
Post new comment