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.

General Questions /

General questions about getting started with SilverStripe that don't fit in any of the categories above.

Moderators: martimiz, Sean, biapar, Willr, Ingo, swaiba, simon_w

Object variables in Shortcode template?


Reply


4 Posts   1207 Views

Avatar
purplespider

Community Member, 82 Posts

27 May 2010 at 9:06am

Edited: 27/05/2010 9:06am

I have a page which has several "Video" dataobjects related to it..

I can insert a list of video titles into the page by placing the following in the page template:

<% control Videos %>
<p>$VideoTitle</p>
<% end_control %>

However, I wish to insert the list using a shortcode, so that it is possible to position the list anywhere within the page content.

I have setup the shortcode, but the $VideoTitle variable does not appear to work within the shortcode template. Only the <p> tags are pulled in.

How can I get the $VideoTitle variable to work within the shortcode template?

(I have simplifed the HTML code for this example, I'm actually inserting a full video thumbnail, title etc, but that's not neccecary for the question).

Thank you!
James

Avatar
x75

Community Member, 42 Posts

22 September 2010 at 3:19am

Hi,

I know this is old, but if anyone else is looking for a solution check out: [url=http://ssbits.com/2-4-using-short-codes-to-embed-a-youtube-video/]ssbits[/url].

One thing to watch out for: the ShortCodeHandler has to be in the SiteTree and not the Controller...

Johannes

Avatar
purplespider

Community Member, 82 Posts

22 September 2010 at 3:38am

Thanks Johannes, that was actually that tutorial I followed to implement the ShortCodes, but I could never get object variables to work inside of the shortcode template, have you managed to get this to work?

Avatar
x75

Community Member, 42 Posts

22 September 2010 at 4:21am

I'm not quite sure what you mean by object variable.

If you wan't to use $VideoTitle in your template you need to set it like this:

...
$data = array();
$data['VideoTitle'] = "What ever";
...
return $template->process(new ArrayData($data));

Is that what you are looking for?

Johannes