Show node for specific content type using views contextual filter Let me explain the issue in detail. I have created two views. The first view displays listing of content for content type named Invoice. The View has a page display. This view is working fine.

I want when a user clicks on any content item the resulting page should use the another view which I have created to show the items for a specific content item based on the node id passed. 

How to pass the node id as a contextual filter for second view. I have given the path for second view as node/%, but then the view just work for all content types. I don't want that thing to happen. I just wants to have that view called for Invoice content type items.

I have also used validation criteria for contextual filter, but that doesn't work.
A simple query alter will do the job.

Say example you are using a module my_views_invoice

    function my_views_invoice_views_query_alter(&amp;$view, &amp;$query) {

    $nodeid = $view-&gt;args[0][1]; // get the node id from contextual filters. Ex :Array ( [0] =&gt; node [1] =&gt; 1 )    

   $content_type =  node_load($nodeid) ;// get the content type from the node load : Ex $content_type-&gt;type

      if ($view-&gt;name == '&lt;Your view name&gt;') {
// Add a where condition in the query like below..

        foreach ($query-&gt;where[0]['conditions'] as $key =&gt; $conditions) {
          if ($conditions['field'] == 'node.type') {
            $query-&gt;where[0]['conditions'][$key]['type'] = $content_type-&gt;type;

          }
        }
    }