Displaying a node in a block

I had a requirement to display a custom block on a drupal site, but to allow site editors to update the contents of the block. I don't particularly want to give editors the ability to create/edit blocks, but they are already able to edit nodes.

A bit of PHP in a custom block does the (somewhat hackish) trick:

<?php
$node = node_load(array('nid'=>1));
echo node_view($node, false, false, false);
?>

Obviously, the node id is hard coded. No, this is not elegant or ideal, but it quickly solves a problem.

Also worth noting is the following snippets of template.php and node.tpl.php in my phptempalte theme, which allow me to contol the display of the "info" (attribution) for node types--if you use a page node as the target of the above block, you can turn off the display of the info line while not affecting story nodes.

template.php:

<?
function _phptemplate_variables($hook, $vars) {
    switch ($hook) {
    case 'node':
        $vars['info'] = theme_get_setting('toggle_node_info_' . $vars['node']->type);
        break;
    }
    return $vars;
}
?>

node.tpl.php:

<?php if ($info): ?>
  <div class="info"><?php print $submitted ?>
  <?php if ($terms): ?>[<?php print $terms ?>]<?php endif; ?>
  </div>
<?php endif; ?>

Comments

comments powered by Disqus