




  • front page
  • node page 
  • taxonomy term page

The difference in presentation wasn't just a matter of CSS properties, the structure of the content and the fields presented would be different. The logic was as follows:

  • If the page being viewed is the front page, use format A
  • If the page being viewed is a taxonomy page, use format B
  • Otherwise, use format C

The solution is to make use of Drupal's functions. 


returns true if the current page is the site's front (home) page, and


returns true if the current node is being displayed on its node page (if it's a teaser, elsewhere, then this will be false).

So, to meet the requirement, the logic would be:

if (drupal_is_front_page()) {

   do front page formatting


elseif (node_is_page($node)) {

  do node page formatting 


else {

  do other formatting


If necessary, we could check the pattern of the request URL in the last test rather than simply defaulting. This code can be in the node template (where if:/endif; would typically be used instead of if{}/else{}), or the testing and some or all of the output could be preprocessed in template.php.
