File Includes

File widgets are handy for including headers, footers, or other consistent blocks of code you don’t want to be messing with in the WYSIWYG editor.

Basic File Includes

<widget type="file">
        <arg id="path">/_ingredients/includes/header.html</arg>
</widget>
<xphp include="/_ingredients/includes/header.html" />

Customizable File Includes

Sometimes, you might have a code block that you re-use almost identically a number of places. For example, Blackbaud/Raiser’s Edge generates embedded forms that are all the same except for a single ID string.

If you’ve received code like this:

<div id="bbox-root"></div>
<script type="text/javascript">
  window.bboxInit = function () {
    bbox.showForm(’0000000-0000-0000-0000-000000000000');
  };
  (function () {
    var e = document.createElement('script'); e.async = true;
    e.src = 'https://bbox.blackbaudhosting.com/webforms/bbox-min.js';
    document.getElementsByTagName('head')[0].appendChild(e);
  } ());
</script>

You can save that code in your includes folder (/_ingredients/templates/includes/bbox.php) and use a file widget to insert it on any page:

<widget type="file">
  <arg id="path">/_ingredients/templates/includes/bbox.php</arg>
</widget>

However, then you’d be having to create a new include for each form.

Instead, let’s set that ID value on-the-fly.

Save the following in /_ingredients/templates/includes/bbox.php, replacing the ID with the PHP snippet <?php echo htmlentities(strip_tags($_GET['id']));?>

<div id="bbox-root"></div>
<script type="text/javascript">
  window.bboxInit = function () {
    bbox.showForm('<?php echo htmlentities(strip_tags($_GET['id']));?>');
  };
  (function () {
    var e = document.createElement('script'); e.async = true;
    e.src = 'https://bbox.blackbaudhosting.com/webforms/bbox-min.js';
    document.getElementsByTagName('head')[0].appendChild(e);
  } ());
</script>

Then you can insert any form by typing the following into the View Source window of a WYSIWYG editor, substituting in the id of your given form.

<widget type="file">
        <arg id="path">/_ingredients/templates/includes/bbox.php?id=0000000-0000-0000-0000-000000000000</arg>
</widget>

You can extend this technique to any number of uses.

Note: When using a file widget, LiveWhale will include the full source code into your page, meaning you can use context-specific variables like <xphp var="group_title"/> . However, when you append any GET variables (?foo=bar) to a file widget path, LiveWhale will instead make an HTTP request for that URL and then use the response, meaning context-specific variables like <xphp var="group_title"/> won’t work in that include, since LiveWhale doesn’t see /_ingredients/includes/my-include.php as belonging to any particular group.

Selecting content with “extract”

Most of the time, when using <widget type="file"> you’re grabbing and including the entire contents of that file on your page. But, what if you wanted to grab only a portion of it? What if it’s a web page?

That’s what <arg id="extract"> is for.

<widget type="file">
  <arg id="path">/about/mission/index.php</arg>
  <arg id="extract">mission-statement</arg>
</widget>

The above example grabs the entire /about/mission/ page, but only includes the <div id="mission-statement"> and its contents.

If you want only the contents and not also the container, you can set extract_contents=true .

<widget type="file">
  <arg id="path">/about/mission/index.php</arg>
  <arg id="extract">mission-statement</arg>
  <arg id="extract_contents">true</arg>
</widget>

On this page