Hello,
how can i make more then one page type on one page?
For example we have a normal Page page type.
I would love to put a custom Form page type under the above mentioned Page page type.
What's the easiest way to do this?
This site requires you to update your browser. Your browsing experience maybe affected by not having the most up to date version.
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.
Hello,
how can i make more then one page type on one page?
For example we have a normal Page page type.
I would love to put a custom Form page type under the above mentioned Page page type.
What's the easiest way to do this?
Page types are intimately linked to the template. You can only have 1 template/page type per page. That said, you can do all kinds of tweaks to get to a solution.
You could extend your page type to another page type such as CustomFormPage extends Page and put the code in there that creates the custom form. Then just copy and paste the page template to create the new associated template and then rebuild. That should do it.
Was that too complex?
Yes, page types are designed to inherit from each other.
If you have CustomFormPage extends Page, it will first look for CustomFormPage.ss and then use Page.ss if that's not found.
Combined with the Layout subfolder functionality, this can be quite powerful. If you have these 3 templates:
templates/Page.ss - contains the template variable '$Layout' in it somewhere
templates/Layout/Page.ss
templates/Layout/CustomFormPage.ss
Then the logic is this:
* On a Page page, the page will be rendered using templates/Layout/Page.ss, and then that will be placed inside templates/Page.ss where the $Layout code is.
* On a CustomFormPage page, the page will be rendered using templates/Layout/CustomFormPage.ss, and then that will be placed inside templates/Page.ss where the $Layout code is.
In other words, you can have your "common skin" stuff in templates/Page.ss, and then have a region inside that that is customised on a per-pagetype basis.
I hope that makes sense; it's a little tricky to describe!
Thnx Sam.
If i make CustomFormpage page it will use the Page.ss aswell or only when CustomFormpage isn't found?
Is there a way to include exsisting Page templates?
For example
I make a formpage page and on top i include:page.ss
No it's only like this:
Page extends SiteTree
CustomFormPage extends Page
For the templates:
If CustomFormPage.ss then use it
elseif Page.ss then use it
Thats all
Great, someone has asked this question already :)
I'm trying to do this for UserDefinedForm, so ... Should I see templates/layout/UserDefinedForm.ss displayed from $Layout in templates/Page.ss ?
The reason is: I'm not seeing this happen right now, UserDefinedForm extends Page so it should work right? Or would it be better to have CustomForm extends UserDefinedForm and expect templates/Pages.ss + templates/layout/CustomForm.ss to work?
This is all because CalendarDateField.php adds Requirements::css which is overriding my theme's form.css GRRR and was hoping that <% require themedCSS(form) %> will work in there, but probably not.
Cheers,
Rich