Change the way a node is themed based on an argument added to a URL
one solution is to use Views. Create views page, for path add node/%/argument, choose Content on Format Show and View mode you want. See Entity view mode module for ability to add more View modes per entity. Add one to Article named "Custom view" for example. Add next code in template.php (change THEME to your maschine theme name). 

function THEME_preprocess_node(&amp;$variables) {
  $variables['theme_hook_suggestions'][] = 'node__' . $variables['view_mode'];
}


Then copy node.tpl.php to node--custom-view.tpl.php in current the dir - if your already add new view mode with name "Custom view" and edit node view template as you want.

To have node--Content-Type--View-Mode.tpl.php like node--article--custom-view.tpl.php the above code must be

function THEME_preprocess_node(&amp;$variables) {
  $variables['theme_hook_suggestions'][] = 'node__' . $variables['type'] . '__' . $variables['view_mode'];
}


EDIT:

Programmaticaly solution with code in custom module:

function HOOK_menu() {
   $items['node/%/argument'] = array(
    'page callback' =&gt; 'node_custom_view',
    'page arguments' =&gt; array(1, 2),
    'access arguments' =&gt; array('access content'), 
    'type' =&gt; MENU_CALLBACK,
  );

  return $items;
}

function node_custom_view($arg1, $arg2) {
  $content = '';

  if (is_numeric($arg1) &amp;&amp; $arg2 == 'argument') {
    $node = node_load($arg1, $vid = NULL, $reset = FALSE);
    $content = drupal_render(node_view($node, $view_mode = 'custom_view', $langcode = NULL));
  }

  return $content;
}


"custom_view" is our custom display for node created by Entity view mode module, then we enable this for content type from Manage display