[Neos] How to select different page templates
Aske Ertmann
aske at moc.net
Tue Sep 10 11:29:23 CEST 2013
Hey Nick
You might use the eel expression wrong, we have it working like this:
templatePath = ${q(node).property('pageTemplate') == null ? 'resource://Moc.Net/Private/Templates/Page/Subpage.html' : q(node).property('pageTemplate')}
Hope that helps
/Aske
On 10/09/2013, at 10.57, Nick wrote:
> Hi all,
>
> I am really sorry to keep on but would very much appreciate your thoughts.
>
> I have set a new string property on the TYPO3.Neos:Page Node, in my project Notypes.yaml, which I can set via the Neos UI.
>
> I then wish to select the fluid template used to render a Page basd on this property.
>
> so I have assumed that in my project Roots.ts2 i can acces this property like this:
>
> layoutType = ${q(node).property('layoutType')}
>
> Which i think should return a string.
>
> Then I wish to select the fluid template based on this:
>
> so i in my Roots.ts2 have tried
>
> page.body{
>
> ...
>
> templatePath = ${layoutType !='home' ? 'resource://reroot.DemoSiteReroot/Private/Templates/Page/Default.html': 'resource://reroot.DemoSiteReroot/Private/Templates/Page/Home.html'}
>
> ...
>
> }
>
> But I always get the default template.
>
> I am not quite sure where I am going wrong as I am not very confident with Typoscript and in fact if this is something that can be done?
>
> Any ideas pointers most appreciated
>
> Many thanks
>
> Nick
>
>
>
> On 10/09/2013 00:43, Nick wrote:
>> Ok just for the record I have answered my second question
>> ./flow flow:cache:flush --force
>>
>> but I am stuck on the first !
>>
>> Many thanks
>>
>> Nick :(
>>
>> On 10/09/2013 00:15, Nick wrote:
>>> I thought I was making pretty good progress on this :
>>>
>>> On Mattias suggestion I created the a NodeTypes.yamlfile in
>>> mySite/Configuration to add a new property to TYPO3.Neos.Page with the
>>> following:
>>>
>>> ## YAML Template.
>>> # add a field to the page properties
>>> 'TYPO3.Neos:Page':
>>> superTypes: ['TYPO3.Neos:Document']
>>> ui:
>>> inspector:
>>> groups:
>>> pageLayout:
>>> label: 'Page Layout Info'
>>> properties:
>>> layoutType:
>>> type: string
>>> ui:
>>> label: 'layoutType'
>>> reloadIfChanged: TRUE
>>> inspector:
>>> group: 'pageLayout'
>>>
>>> This worked a dream and the option appeared in the Neos Inspector window.
>>>
>>> For Step 2 I tried adding the following to the Roots.ts2 file in mySites
>>> (Resources/Private...) to use the new property to select the appropriate
>>> Fluid template:
>>>
>>> page.body{
>>> ...
>>>
>>> layoutType = ${q(node).property('layoutType')}
>>>
>>> templatePath = ${layoutType !='home' ?
>>> 'resource://reroot.DemoSiteReroot/Private/Templates/Page/Default.html':
>>> 'resource://reroot.DemoSiteReroot/Private/Templates/Page/Home.html'}
>>>
>>> ...
>>> }
>>>
>>> Now adding this into the Roots.ts2 at first threw an exception then when
>>> trying to work out what I got wrong and after a couple of reload
>>> attempts whilst logged into the back end(first getting an exception
>>> thrown) I ended up whith a white screen not my test website! This is now
>>> the case when I either just connect to the site (after flushing flow
>>> cache and shutting down apache) or after logging in to backend!
>>>
>>> I am left with two questions: First what did I do wrong? Second is it
>>> possible to recover the site in such a white out?
>>>
>>> Many thanks
>>>
>>> Nick
>>>
>>>
>>>
>>>
>>>
>>> On 08/09/2013 15:56, Nick wrote:
>>>> Hi Mattias,
>>>>
>>>> Thanks for your reply, this would be a really useful feature for the
>>>> release.
>>>>
>>>> I also would really appreciate a bit more help with trying to implement
>>>> this as I am not quite sure how I would achieve this, I am still trying
>>>> to get an understanding of how things work with Neos.
>>>>
>>>> Your help would be appreciated
>>>>
>>>> Nick
>>>>
>>>>
>>>>
>>>>
>>>> On 08/09/2013 14:39, Mattias Nilsson wrote:
>>>>> Hi Nick,
>>>>>
>>>>> There is currently no possibility to change a page template in the UI.
>>>>> But
>>>>> this is something is going to be implemented before the release of
>>>>> version
>>>>> 1.0.
>>>>>
>>>>> You can also make your own page template selector by defining an extra
>>>>> property for TYPO3.Neos:Page inside YAML. Then you can use this
>>>>> property to
>>>>> assign the chosen value to which page template it should match using
>>>>> TypoScript.
>>>>>
>>>>> If you need more help let me know and I will make a more detail
>>>>> version for
>>>>> you :)
>>>>>
>>>>> /Mattias
>>>>>
>>>>>
>>>>> On Sat, Sep 7, 2013 at 4:05 PM, Nick <nick at jamalade.com> wrote:
>>>>>
>>>>>> Hi
>>>>>>
>>>>>> I am a neewbie to using Neos, so please forgive me for my questions,
>>>>>> but
>>>>>> have been following its progress from afar for a while now.
>>>>>> I have been thinking/toying with the idea of using Neos for a new
>>>>>> project.
>>>>>> With that in mind I have been playing around with the demo site as per
>>>>>> release alpha 5.
>>>>>>
>>>>>> First up I am a little confused as to how to get the homepage to
>>>>>> display a
>>>>>> different view (fluid template) from another page on a site.
>>>>>>
>>>>>> I can see in the NeosDemoTypo3Org site that there are a couple of
>>>>>> typoscript files one for the homepage and a default one one for the
>>>>>> rest of
>>>>>> the site:
>>>>>>
>>>>>>
>>>>>> ~/TYPO3-Neos-1.0-alpha5/Packages/Sites/TYPO3.NeosDemoTypo3Org/Resources/Private/TypoScripts/Nodes/Homepage/Home.ts2
>>>>>>
>>>>>>
>>>>>>
>>>>>> this defines the page.body.templatePath =
>>>>>> 'resource://TYPO3.NeosDemoTypo3Org/Private/Templates/Page/Home.html
>>>>>>
>>>>>> Looking at the fluid template pointed to here, I can see that on the
>>>>>> home
>>>>>> page the "teaser" content should be displayed above the "main" content
>>>>>>
>>>>>> The default can be found in :
>>>>>>
>>>>>> ~/TYPO3-Neos-1.0-alpha5/Packages/Sites/TYPO3.NeosDemoTypo3Org/Resources/Private/TypoScripts/Library/Root.ts2
>>>>>>
>>>>>>
>>>>>>
>>>>>> this defines the page.body.templatePath =
>>>>>> 'resource://TYPO3.NeosDemoTypo3Org/Private/Templates/Page/Default.html
>>>>>>
>>>>>> In this fluid template the teaser isn't rendered.
>>>>>>
>>>>>>
>>>>>> However when I actually go to the home page i.e. http://neos.demo/ I
>>>>>> can
>>>>>> see that the Default.html is rendered not the Home.html fluid
>>>>>> template.
>>>>>>
>>>>>> I am wondering how then you actually select the Home.html template
>>>>>> for the
>>>>>> home page, if not with the typoscript files as above?
>>>>>>
>>>>>> This would be an essential feature for me as for the project I am
>>>>>> working
>>>>>> on there are several different page templates required for different
>>>>>> parts
>>>>>> of the site.
>>>>>>
>>>>>> Many thanks in advance
>>>>>>
>>>>>> Nikos
>>>>>> _______________________________________________
>>>>>> Neos mailing list
>>>>>> Neos at lists.typo3.org
>>>>>> http://lists.typo3.org/cgi-bin/mailman/listinfo/neos
>>>>>>
>>>>
>>>
>>
>
> _______________________________________________
> Neos mailing list
> Neos at lists.typo3.org
> http://lists.typo3.org/cgi-bin/mailman/listinfo/neos
More information about the Neos
mailing list