[Neos] How to select different page templates

Nick nick at jamalade.com
Tue Sep 10 13:12:12 CEST 2013


Hi Aske

Thanks that's great got it working like so, follwoing your example :

       templatePath = ${q(node).property('layoutType') != "home" ? 
'resource://reroot.DemoSiteReroot/Private/Templates/Page/Default.html': 
pageLayoutType.value 
}'resource://reroot.DemoSiteReroot/Private/Templates/Page/Home.html'}


What I don't understand is why the following doesn't work?

pageLayoutType = ${q(node).property('layoutType')}

templatePath = ${pageLayoutType != "home" ? 
'resource://reroot.DemoSiteReroot/Private/Templates/Page/Default.html': 
pageLayoutType.value 
}'resource://reroot.DemoSiteReroot/Private/Templates/Page/Home.html'}

As the statement assigining to templatePath cannot be parsed.

Obviously I am misunderstanding something fundemental about eel, 
Flowquery and Typoscript2. I keep reading the documents but keep can't 
seem to get it .

According to the documentation 
(http://docs.typo3.org/neos/TYPO3NeosDocumentation/IntegratorGuide/EelFlowQuery.html)you 
can do this:

text = ${q(node).property('text')}

I then thought you could do this

someVar = $(text == 'someText' ? 'what happens if true' : 'what happens 
if false'}

But that doesn't seem to work


Any pointers would be much appreciated.

Many thanks again

Nick



On 10/09/2013 10:29, Aske Ertmann wrote:
> 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