3214 Posts in 848 Topics by 810 members
|
Page:
1
|
Go to End | |
| Author | Topic: | 761 Views |
-
Template "slots" for inserting markup in other templates

20 January 2011 at 11:42am
Hi,
Does SilverStripe contain a way to add markup from a template to another template? Symfony calls it template slots, and Ruby on Rails content_for.
What I'm looking to do specifically is to add HTML / Javascript bits to the bottom of a site layout from inside a view.
I had a look at the reference pages of doc.silverstripe.com and the Sapphire API, and couldn't find an answer. I'm also quite new to SilverStripe, so I don't fully understand the capabilities / limitations of SSViewer yet...
Thanks for your help!
-
Re: Template "slots" for inserting markup in other templates

20 January 2011 at 8:57pm
The symfony slots act a little bit like the <% include Template %> functionality but includes are much more simpler.
In sapphire you can also define your own functions which render into a template, then you can swap the template it renders into based on controller actions etc.
For example if you have a extra totally different layout based on whether someFunctionFoo() is true or not you can do
// main template
$SomeMoreTemplate// in that templates controller
function SomeMoreTemplate() {
return ($this->someFunctionFoo()) ? $this->renderWith('Template1') : $this->renderWith('Template2');
} -
Re: Template "slots" for inserting markup in other templates

22 January 2011 at 4:40am Last edited: 22 January 2011 4:42am
Thanks for your reply Willr!
It's good to know that I can define my own template functions, but in my specific case it seems to be overkill. It often happens that I have view-specific Javascript to render, and while I could add it straight into the view, I would much prefer have some kind of mechanism to "inject" it to the bottom of my layout. A bit like that:
I know I should probably just put that JS in an external file and add it with Requirements::javascript, but it shows well what I'm trying to achieve.
-
Re: Template "slots" for inserting markup in other templates

22 January 2011 at 12:51pm
I don't *think* there is anything to support that sort of dynamic injection yet. The current 2.4 SSViewer is little more than a simply string search and replace and doesn't really have any sort of smarts, hence using PHP and renderWith() which you can overload on your controller actions etc.
SSViewer is getting a bit old overhaul for 3.0 so implementing functions like that may become easier.
| 761 Views | ||
|
Page:
1
|
Go to Top |


