Block visibility based on the content type I have created a block for showing author details for every individual author; the article's authors can be identified by the 'Author' field.
Now I want to match the author block with the particular author's content.

For example, I have an author called 'vividvilla', and I have created a block for 'vividvilla'. How do I show this block for articles where 'vividvilla' is the author?

I know it can be done with PHP code in blocks, but I am not sure about the code.
I would use the menu_get_object() function to determine whether or not the block visibility check is being executed on a full node page, then check the field value on the node from there.

EDIT

The other edits were getting a bit long so I've deleted them. I've just set up a site quickly to test this and the following steps have worked for me (this is Drupal 7):


Created a content type called Author Profile (machine name author_profile)
Added a node reference field from the Article content type to the Author Profile
Created an Author Profile node with a title of "vividvilla"
Created an Article node linked to the Author Profile node above
Enabled the core PHP Filter module
Created a block called Author Details with some dummy content in the body, choosing "Pages on which this PHP code returns TRUE (experts only)" for the block visibility settings.
Entered the PHP code below

&lt;?php

$node = menu_get_object();

// Check we're on a 'full' node page.
if ($node &amp;&amp; isset($node-&gt;nid)) {
  // Check the node is of the right type
  if ($node-&gt;type != 'article') {
    return FALSE;
  }

  // Load the author node based on the node reference field value.
  $author_node = node_load($node-&gt;field_blog_authors[$node-&gt;language][0]['nid']);

  // Check the title of that node
  if ($author_node-&gt;title == 'vividvilla') {
    return TRUE;
  }
}

// Default is to not show the block
return FALSE;

?&gt;



The block only shows on an article page that is linked to an Author Profile with the title of "vividvilla" which I'm pretty sure is what you're trying to.

On the off-chance you're using Drupal 6 just change the $author_node = line to:

$author_node = node_load($node-&gt;field_blog_authors[0]['nid']);