0

For custom content type page I used this:

function MYTHEME_preprocess_page(&$vars, $hook) {
    if (isset($vars['node'])) {
      // If the node type is "blog_madness" the template suggestion will be "page--blog-madness.tpl.php".
      $vars['theme_hook_suggestions'][] = 'page__'. $vars['node']->type;
    }
}

So now it means I can use page.tpl.php for my custom content type pages. So for the default Basic Page the template page is page--page.tpl.php and I did test it and it works. Except this:

I am trying to render some field outside . So I used this: <?php print render($content['field_banner']); ?> right outside <div id="content" class="column" role="main"> but it's not printing.

I was told this has something to do with node_load. But I'm not experienced with that.

1
  • Welcome! It would be helpful if you would update your post with a brief explanation of what your purpose is. Doing so not only helps people understand your question, they can also suggest alternative methods if a better way exists. Cheers - Commented Aug 27, 2015 at 20:00

2 Answers 2

0

You will need to load the node object to get the field value, something like this:

$node = node_load($nid);
$field = field_get_items('node', $node, 'field_name');
$output = field_view_value('node', $node, 'field_name', $field[$delta]);
4
  • The loaded node is typically available in the $variables array passed to template_preprocess_page() when you are on a node view page.
    – mpdonadio
    Commented Aug 27, 2015 at 15:59
  • Wait, so where do I put this? Commented Aug 27, 2015 at 16:05
  • @MPD, I was under the impression definition that not a node page. and yes` template_preprocess_page()` or hook_preprocess_page() will have the node variables so no need to load the node.
    – sam2de
    Commented Aug 27, 2015 at 16:15
  • Please take a look at @MPD comments before, if this is a node page you should get the value in the variables array. I will update my answer in a bit.
    – sam2de
    Commented Aug 27, 2015 at 16:17
0

You can load node again in other place and render it fully or partially. Via block or something else. Node load is hard operation, use module entitycache to load the same nodes faster.

1
  • But I need only one field. Commented Aug 27, 2015 at 15:53

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.