Create a Better Photo Gallery in Drupal - Part 3

13th October 2010

The next part of the new gallery that I want to implement is to group the galleries by their respective categories. The first step is to edit my original photo_gallery view and add an additional display.

I've called it 'Taxonomy', and it's similar to the original 'All Galleries' view. The differences are that I've added the taxonomy term as an argument, removed the header, and updated the path to be gallery/%. The other thing that I need to do is overwrite the output of the original 'All Galleries' View by creating a file called views-view--photo-gallery--page-1.tpl.php and placing it within my theme directory.

Within that file, I can remove the standard content output. This still outputs the heading information from the original View. I can now use the function called 'views_embed_view' to embed my taxonomy display onto the display. The views_embed_view function is as follows:

<?php views_embed_view('my_view', 'block_1', $arg1, $arg2); ?>

So, to display the galleries that are assigned the taxonomy of 'tournaments', I can use the following:

<?php print views_embed_view('photo_gallery', 'page_2', 'tournaments'); ?>

To reduce the amount of code needed, I can use the following 'while' loop to generate the same code for each taxonomy term. It dynamically retrieves the relevant taxonomy terms from the database, and uses each name as the argument for the view.

<?php
$terms = db_query("SELECT * FROM {term_data} WHERE vid = 1");
while ($term = db_fetch_array($terms)) {
  print '<h3>' . $term['name'] . '</h3>';
  print views_embed_view('gallery', 'page_2', $term['name']);
}
?>

Questions? Comments? I’m @opdavies on Twitter.

About the Author

Picture of Oliver

Oliver Davies is a Web Developer, System Administrator and Drupal specialist based in the UK. He is a Senior Developer at Microserve and also provides freelance consultancy services for Drupal, Symfony and Laravel applications and Linux servers.

Availability

  • Currently no spare part-time capacity.
  • Currently no spare full-time capacity.