You are here

textrender_syntax.html in ImageCache Actions 6

When rendering text on an image, enter PHP code that will return your dynamic text. Do not use <?php ?> tags.
EG
return format_date(time());
return $file_data->description ? $file_data->description : $node->teaser;

Note that executing incorrect PHP-code can break your Drupal site.

Available data objects

Many different types of data derived from the image may be available as php values:

$node
A handle on the owning node object, if any.
return $node->title;
return format_date($node->created);
$image
A handle on the internal imageeapi technical image object.
return $image->source;
return basename($image->source);
return $image->info["filesize"];
$file_metadata
A collection of metadata that may have been deduced from other sources or context. Values inside $file_data is namespaced, structured and attributed, so can be complex to read.
drupal_set_message('<pre>'. print_r($file_metadata,1). '</pre>'); return "";
$file_data
A simplified list of metadata values that may have been deduced from other sources. This is a flattened, simplified version of $file_data with no namespaces and all-lowercase attribute names. $file_metadata->Iptc4xmpCore:Scene['pjmt:0'] = "exterior view"; becomes $file_data->scene = "exterior view"
return $file_attributes->description
return $file_attributes->copyright

Where the data comes from

If it's an image.module image then a $node object with its values may be available.

If it's an image that has been attached to a node using CCK filefield imagefield (or just filefield) then as well as the parent $node object, the $file_data object that may contain a file description (or other meta supplied by cck) from that file field.
return $file_data->description;
So far that seems to be the only available 'data' provided by filefield, but you can investigate the node structure using devel.module or print_r() to see what else this array actually contains.

If it's a file that's just been attached using upload.module, a $file_data object may also have a description.
return $file_data->description;

If the image path is detected as belonging to more than one node, just the data for the first one found is returned.

If you have meta_inspector available, then many more (namespaced) metadata fields may be available on the $file_metadata and $file_data object. Note that they will often be structured arrays.
$attname = "dc:creator"; return @reset($file_metadata->$attname);
See the documentation for the meta suite and HOOK_metadata_from_file() for more about this data structure..

File

help/textrender_syntax.html
View source
<html>
<body>
      <p>
        When rendering text on an image, 
        enter PHP code that will <b>return</b> your dynamic text. Do not use &lt;?php  ?&gt; tags. 
        <br />EG 
        <br /><code>return format_date(time());</code>  
        <br /><code>return $file_data->description ? $file_data->description : $node->teaser;</code>
      </p>
      <p>Note that executing incorrect PHP-code can break your Drupal site.</p>

      <h4>Available data objects</h4>
      <p>Many different types of data derived from the image <em>may</em> be available as php values:</p>
      <dl>
      <dt><code>$node</code></dt>
      <dd>A handle on the owning node object, if any.
        <br/><code>return $node->title;</code>
        <br/><code>return format_date($node->created);</code>
      </dd>
      <dt><code>$image</code></dt>
      <dd>A handle on the internal imageeapi technical image object.
        <br/><code>return $image->source;</code>
        <br/><code>return basename($image->source);</code>
        <br/><code>return $image->info["filesize"];</code>
      </dd>
      <dt><code>$file_metadata</code></dt>
      <dd>A collection of metadata that <em>may</em> have been deduced from other sources or context. Values inside <code>$file_data</code> is namespaced, structured and attributed, so can be complex to read.
        <br/><code>drupal_set_message('&lt;pre>'. print_r($file_metadata,1). '&lt;/pre>'); return "";</code>
      </dd>
      <dt><code>$file_data</code></dt>
      <dd>A simplified list of metadata values that <em>may</em> have been deduced from other sources. This is a flattened, simplified version of <code>$file_data</code> with no namespaces and all-lowercase attribute names.
        <small><code>$file_metadata->Iptc4xmpCore:Scene['pjmt:0'] = "exterior view";</code> becomes <code>$file_data->scene = "exterior view"</code></small>
        <br/><code>return $file_attributes->description</code> 
        <br/><code>return $file_attributes->copyright</code> 
      </dd>

      <h4>Where the data comes from</h4>
      <p>
        If it's an <b>image.module image</b> then a <b><code>$node</code></b> object with its values 
        <em>may</em> be available.
      </p>

      <p>
        If it's an image that has been attached to a node using <b>CCK filefield imagefield</b>
        (or just filefield)
        then as well as the parent <b><code>$node</code></b> object,
        the <b><code>$file_data</code></b> object that may contain a file description 
        (or other meta supplied by cck) from that file field.
        <br/><code>return $file_data->description;</code>
        <br/>
        <small>So far that seems to be the only available 'data' provided by filefield, 
        but you can investigate the node structure using devel.module or print_r() 
        to see what else this array actually contains</small>.
      </p>
      <p>
        If it's a file that's just been <b>attached using upload.module</b>,
        a <b><code>$file_data</code></b> object may also have a description.
        <br/><code>return $file_data->description;</code>
      </p>
      <p>
        If the image path is detected as belonging to more than one node, just the
        data for the first one found is returned. 
      </p>

      <p>
        If you have <b>meta_inspector</b> available, then many more (namespaced)
        metadata fields may be available on the <b><code>$file_metadata</code></b> 
        and <b><code>$file_data</code></b> object. 
        Note that they will often be structured arrays.
        <br /><code>$attname = "dc:creator"; return @reset($file_metadata->$attname);</code>
        <br /><small>See the documentation for the meta suite and <code>HOOK_metadata_from_file()</code> 
        for more about this data structure.</small>.
      </p>
</body>
</html>