add a new field in a view that uses a teaser view mode fomat I have a view that extarct a specific content type, this view shows the teaser view mode for rendering fields and not fields format : 
 

the teaser view mode is managed with display suite module to order content type's fields in custom regions.

Im using hook_node_view to add a new field conditionally :

function MYMODULE_node_view($node, $view_mode, $langcode){
    global $user;
    $uuid = $user-&gt;uid;
    switch ($node-&gt;type){
        case "rewards" : 

            if(!empty($node-&gt;field_reward_users) &amp;&amp; isset($node-&gt;field_reward_users[LANGUAGE_NONE][0]['target_id'])){
                if($uuid == $node-&gt;field_reward_users[LANGUAGE_NONE][0]['target_id']){
                    $node-&gt;content['get_reward_link'] = array(
                        '#type' =&gt; 'markup',
                        '#markup' =&gt; l('Click Here', '/', array('attributes'=&gt;array('class'=&gt;'my-link-class'))),
                        '#weight' =&gt; 100,

                    );
                }
            }
           // dpm($node);
            break;
    }
}


when i debug i can see the new field in the $node object, but it's not rendered.
Have you any idea how to add fields conditionally in my case?

Update

I added a new preprocess field ("pre_rewards") via display suite, like montionned in the answer of Reynold, then I added the following prerocess function : 

function MYMODULE_preprocess_node(&amp;$vars){

    if(isset($vars['preprocess_fields'])){
        foreach ($vars['preprocess_fields'] as $key =&gt; $pre){
            if($pre == 'pre_rewards' &amp;&amp; isset($vars['content']['get_reward_link'])){
                $reward_link = drupal_render($vars['content']['get_reward_link']);
                $vars['preprocess_fields'][$key] = $reward_link;

            }
        }
    }
    dpm($vars);
}


and the same thing the element won't be rendered! and it exists in the $vars variable when i debug!

also the new field created exists in manage field page of my content type :

 
So why it's always not rendering the content of this field in my page!?

Thanks in advance.
Seeing that you are using Display Suite, you should add the field via Display Suite as node.tpl.php is no longer being used. Display Suite has 4 Custom fields that you can add via the interface. You should look into the 'preprocess field'.

You need to define a preprocess field in Display Suite



and the machine name of the preprocess field 



should correspond with the name of the field that you provide in your preprocess_node function:

function MYMODULE_preprocess_node(&amp;$vars) {
  $vars['my_new_field'] = "some html or rendered field";
}


You are of course not limited to creating your field value in the preprocess_node function, you could just hand the value over like this:

function custom_preprocess_node(&amp;$vars) {
  $vars['my_new_field'] = drupal_render($vars['content']['get_reward_link']);
}


The only limitation (AFAIK) is that you have to render the field before you let Display 
Suite pick it up.

Once you have defined your preprocess field like this, Display Suite will make it available in the manage display tab for the node type.

Also look at Theming with Display Suite and Preprocess Functions