Skip to main content

This site requires you to update your browser. Your browsing experience maybe affected by not having the most up to date version.

Template Questions

Adding text formating methods


Reply

3 Posts   1522 Views

Avatar
JL

3 November 2010 at 7:44pm Community Member, 10 Posts

What's the easiet way to add text formatting methods like URLEncode, Shorten to the fields, so that I can use $Title.URLEncode in the template, similar to $Title.XML. Thanks!

Avatar
swaiba

3 November 2010 at 10:39pm Forum Moderator, 1796 Posts

how about - create a subclass of Text, MyText, and add the required methods to it, then change your $db from Text to MyText
note - totally untested but that is how I'd go about it. Maybe a decorator would work also...

Avatar
Lucas

13 March 2012 at 1:09pm Community Member, 10 Posts

Add a decorator if it's just a method or two that you want to be available on all objects of the given type.

For example:

Create the decorator code (say in mysite/code/MyDateDecorator.php):

class MyDateDecorator extends DataObjectDecorator {
public function Datetime() {
return date('Y-m-d\TH:i:s', strtotime($this->owner->value));
}
}

In mysite/_config.php, enable the extension:

Object::add_extension('SS_Datetime', 'MyDateDecorator');

Then in your templates you can use it as below:

<% control MyObject %>
<h2>$Title</h2>
<p>Created on <time datetime="$Created.Datetime">$Created.Nice</time></p>
<% end_control %>