我正在使用TYPO3 6.1和流体模板,使用fedext.net工具集。我想有一个标题与自动生成的内容,如菜单,以及一些管理定义的内容,如版权。在TYPO3后端的某个常见位置定义这一点是有意义的。
目前,我有这样的页面布局:
{namespace v=Tx_Vhs_ViewHelpers}
<f:layout name="Page"/>
<div xmlns="http://www.w3.org/1999/xhtml" lang="en"
xmlns:v="http://fedext.net/ns/vhs/ViewHelpers"
xmlns:f="http://fedext.net/ns/fluid/ViewHelpers">
<div class="grid-container">
<f:cObject typoscriptObjectPath="lib.my_custom_header" />
<f:render section="Content"/>
<f:cObject typoscriptObjectPath="lib.my_custom_footer" />
</div>
</div>在Typoscript中,我做了以下操作来抓取和呈现标题内容:
lib.my_custom_header = COA
lib.my_custom_header {
10 = CONTENT
10 {
table = tt_content
select.where = colPos = 0
select.languageField = sys_language_uid
select.orderBy = sorting
select.pidInList = {$config.my_site.header_page_id}
}
20 = CONTENT
20 {
table = tt_content
select.where = colPos = 1
select.languageField = sys_language_uid
select.orderBy = sorting
select.pidInList = {$config.my_site.header_page_id}
}
}这是我的FooterPage流体模板
{namespace v=Tx_Vhs_ViewHelpers}
{namespace flux=Tx_Flux_ViewHelpers}
<f:layout name="Page"/>
<div xmlns="http://www.w3.org/1999/xhtml" lang="en"
xmlns:v="http://fedext.net/ns/vhs/ViewHelpers"
xmlns:flux="http://fedext.net/ns/flux/ViewHelpers"
xmlns:f="http://fedext.net/ns/fluid/ViewHelpers">
<f:section name="Configuration">
<flux:flexform id="mypageheader" label="Page Header">
<!-- Grid displayed in the page module -->
<flux:flexform.grid>
<flux:flexform.grid.row>
<flux:flexform.grid.column colPos="0" name="Header Logo" />
<flux:flexform.grid.column colPos="1" name="Header Links" />
</flux:flexform.grid.row>
</flux:flexform.grid>
</flux:flexform>
</f:section>
<f:section name="Resources"></f:section>
<f:section name="Content">
<div class="grid-100 mobile-grid-100 grid-parent header">
<v:page.content.render column="0"/>
<v:page.content.render column="1"/>
</div>
</f:section>
</div>页脚代码几乎是相同的(除了变量名)。这种方法很有效,页眉和页脚都来自他们的页面,但如果我觉得有点丑的话。因为我只能从页脚而不是整个页面呈现内容元素。因此,我不能为我的页眉/页脚数据指定一些自定义包装。
或者,我可以在TypoScript中定义这个包装器,但这将在文本代码中传播标题模板代码。我也可以在页面布局文件中定义它(见上文),但在这种情况下,它仍然将与页眉模板代码的其余部分分离(我希望将其放在页眉/页脚流体页面模板中)。
那么,怎样才能做到最好呢?
在这个示例项目中,http://bootstrap.typo3cms.demo.typo3.org/页脚被配置为从某个共享后端元素转出,但我无法在TYPO3后端打开该元素,当我试图打开它时,TYPO3显示为空屏幕。同样的情况也发生在我当地的那个项目的副本上。
发布于 2013-11-21 11:50:05
尽管我自己找到了解决方案,但我仍然可以找到更好的解决方案。随意添加新的答案到这个线程,投票将显示更好的方法。我目前的解决办法如下:
我定义了分部来呈现整个标题布局,如下所示:
<f:section name="Header">
<div id="header" class="some">
<div class="custom">
<div class="wrappers">
<f:cObject typoscriptObjectPath="lib.my_header_links" />
</div>
</div>
<div class="more">
<div class="wrappers">
<f:cObject typoscriptObjectPath="lib.my_main_menu" />
</div>
<div class="one-more">
<f:cObject typoscriptObjectPath="lib.my_header_logo" />
</div>
</div>
</div>
</f:section>然后,我为隐藏的后端页面创建了特殊模板:
<f:section name="Configuration">
<flux:flexform id="myPageHeader" label="My Page Header">
<!-- Grid displayed in the page module -->
<flux:flexform.grid>
<flux:flexform.grid.row>
<flux:flexform.grid.column colPos="0" name="Header Links" />
<flux:flexform.grid.column colPos="1" name="Header Logo" />
</flux:flexform.grid.row>
</flux:flexform.grid>
</flux:flexform>
</f:section>
<f:section name="Content">
<f:render partial="Header" section="Header" />
</f:section>在后端创建了一个隐藏页面。它在外观设置中将上面的模板分配给它。
然后在我的TypoScript中:
lib.my_header_links = CONTENT
lib.my_header_links {
table = tt_content
select.where = colPos = 0
select.languageField = sys_language_uid
select.orderBy = sorting
select.pidInList = #here goes my hidden page id, which feeds the content for header
}
lib.my_header_logo < lib.my_header_links
lib.my_header_logo {
select.where = colPos = 1
}
lib.my_main_menu = HMENU
lib.my_main_menu {
# here goes main menu config
}最后,我调整了页面模板以呈现页眉部分。这个模板应该分配给每个普通页面,这些页面呈现站点内容:
<f:section name="Content">
<f:render partial="Header" section="Header" />
<div id="content">
<v:page.content.render column="0" />
</div>
</f:section>现在,我的后端用户可以自定义后端页眉页面上的标题内容,并且该内容将被填充到所有使用我的页面模板的页面中。这个解决方案有点复杂,但为后端用户提供了高级的灵活性。
https://stackoverflow.com/questions/19664580
复制相似问题