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.

We've moved the forum!

Please use forum.silverstripe.org for any new questions (announcement).
The forum archive will stick around, but will be read only.

You can also use our Slack channel or StackOverflow to ask for help.
Check out our community overview for more options to contribute.

All other Modules /

Discuss all other Modules here.

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

Set another main template


Go to End


7 Posts   1261 Views

Avatar
m-phil

Community Member, 37 Posts

21 July 2010 at 3:20am

Normally I create a new ExamplePage extends Page to use templates/ExamplePage.ss as another main template.
But for my module I need one main template for all classes (not the default Page.ss). So I added a page type and its template. Every class extends this new page class, but no class use the template... any idea?
Also another Page.ss in my module templates folder doesn't work.

Avatar
UncleCheese

Forum Moderator, 4102 Posts

21 July 2010 at 3:49am

This is the way the logic works for template selection:

Select main template for ClassName:

- Does theme_dir/templates/ClassName.ss exist?
- No? Is there a module where templates/ClassName.ss is defined?
- No? Try again with parent of ClassName.ss (e.g. Page.ss)

Select layout template for ClassName:

- Does theme_dir/templates/Layout/ClassName.ss exist?
- No? Is there a module with templates/Layout/ClassName.ss defined?
- No? Try again with parent of ClassName.ss (e.g. Page.ss)

Therefore, if you have a class SomePage extends Page, and you've defined /your_theme/templates/SomePage.ss, it will use the main template SomePage.ss.

It SomePage extends ParentPage, and SomePage.ss does not exist, it will look for ParentPage.ss. If that doesn't exist, it will fall back on Page.ss. The same logic applies to the main template as it does the Layout template.

Avatar
m-phil

Community Member, 37 Posts

21 July 2010 at 4:17am

Yes, I thought this is the way it goes, but not for me?!
for example we have
- module/code/ClassName.php <- extends Page
- module/code/ClassChildName.php <- extends ClassName

I have a
- theme_dir/templates/ClassName.ss
and a
- module_dir/templates/ClassName.ss

ClassChildName isn't a subclass in the sitetree... is this a problem? I don't think so

An existing page of type ClassName is displayed by ClassName.ss but not its class children like ClassChildName.

mhm what could it be...

Avatar
UncleCheese

Forum Moderator, 4102 Posts

21 July 2010 at 5:10am

So instead of ChildClassName.ss displaying, what is?

Avatar
m-phil

Community Member, 37 Posts

21 July 2010 at 7:41am

Edited: 21/07/2010 7:44am

Page.ss of course. there is no ChildClassName.ss, otherwise it would use it, but the next template has to be ClassName.ss, but it uses Page.ss

Avatar
UncleCheese

Forum Moderator, 4102 Posts

22 July 2010 at 2:54pm

You might try ?debug_request=1 to get a peek at what is going on inside the template selection process.

Avatar
m-phil

Community Member, 37 Posts

22 July 2010 at 6:32pm

thx, I didn't know this debug param to display the process.
OK I translate it into our example:
here it goes for ChildClassName extends ClassName and ChildClassName is a subclass in sitetree of OtherClass

Debug line for SSViewer says:
Selecting templates from the following list: ChildClassName, OtherClass, Page, ContentController

What about ClassName?