Adding PHP Code to a Page: Alternate Method for Drupal 7

Category
Drupal Version

The Alternate Method (PHP, IFRAMEs, JavaScript) (Drupal 7)

The following method is a little more round-about, but doesn't require as much coding knowledge as the previous method. The main downside is that it may be difficult for someone in the future to figure out where your custom PHP or embed code has been stored, since this is a non-standard and uncommon method. It also sort of goes against design standards, which say that template files really should not contain any actual content, but rather should contain framework for content provided to them by the system using that template.

  1. Create a normal block (not a Super block!), and don't type anything other than spaces into the Body field.
  2. Write down the block's ID number, which will show in the URL after you save the block and go back to that block's "Configure" page. For example, in the URL http://example.gatech.edu/admin/structure/block/manage/block/30/configure, the block id is the number between "block" and "configure", in this case, 30.
  3. Add this block to a page on your site, preferably a test page that no one will find, and keep that page open in your web browser.
  4. In the subtheme for your site, usually within its "templates" folder, create a file that will only effect this specific block. For our example block #30, the file would be named block--block--30.tpl.php
  5. Inside this file, first paste the code for a generic block template file (Drupal 7) from the View source sub-section of the File section of the Drupal block API documentation page (Abbreviated source example copied below).
  6. If you want to completely overwrite what people might type into the Body field of this block, then replace the <?php print $content ?> line. Otherwise, decide if your embed code should appear below or above whatever the Body field's content.

Sample Block Template Code (Drupal 7)

<?php

/**
* @file
* Default theme implementation to display a block.
* For variables definition, visit:
* https://api.drupal.org/api/drupal/modules!block!block.tpl.php/7
*/
?>
<div id="<?php print $block_html_id; ?>" class="<?php print $classes; ?>"<?php print $attributes; ?>>

<?php print render($title_prefix); ?>
<?php if ($block->subject): ?>
<h2<?php print $title_attributes; ?>><?php print $block->subject ?></h2>
<?php endif;?>
<?php print render($title_suffix); ?>

<div class="content"<?php print $content_attributes; ?>>
<!-- DELETE PRINT LINE BELOW IF OVERWRITING BODY OF BLOCK -->
<?php print $content ?>
<!-- START EMBED CODE HERE -->
<!-- END EMBED CODE HERE -->
</div>
</div>