Fluid Typo3 - 如何通过来自不同页面 uid 的 flux 定义变量
Fluid Typo3 - How to get variables definded via flux from different page uids
我想我的问题很容易解决,但我想了好几天,谷歌搜索没有帮助我。也许我只是不明白这个概念:-)。
在我的提供商扩展中,我定义了一个带有一个配置选项的简单主页。根据 "fontawesomeicon" 对页面的说明,其相应的 Fonteawesome-Icon 应放置在菜单项文本之前。
但是当我以这种方式实现它时,每个页面菜单条目都从实际页面获取图标。我不知道如何告诉系统,相应的{fontawesomeicon}应该取自该条目所属的页面。
感谢您提供让它正常工作的任何提示。我正在使用 Typo3 7.1
页面配置Fullpage.html:
<f:section name="Configuration">
<flux:form id="fullpage" />
<flux:grid>
<flux:grid.row>
<flux:grid.column colPos="0" name="main" />
</flux:grid.row>
</flux:grid>
<flux:field.input name="fontawesomeicon" />
</f:section>
部分配置 Elements.html:
<f:section name="MainMenu">
<ul class="sf-menu">
<v:page.menu pageUid="{settings.startpageUid}" entryLevel="2" levels="2" expandAll="TRUE" as="menu">
<f:for each="{menu}" as="item">
<li class="{item.class}">
<a href="{item.link}"><i class="fa fa-lg {fontawesomeicon}"></i> {item.linktext}</a>
<f:if condition="{item.hasSubPages}">
<ul>
<f:render section="SubMenu" arguments="{_all}" />
</ul>
</f:if>
</li>
</f:for>
</v:page.menu>
</ul>
</f:section>
<f:section name="SubMenu">
<v:page.menu pageUid="{item.uid}" entryLevel="2" levels="1" as="submenu">
<f:for each="{submenu}" as="subitem">
<li class="{subitem.class}">
<a href="{subitem.link}"><i class="fa {fontawesomeicon}"></i> {subitem.linktext}</a>
</li>
</f:for>
</v:page.menu>
</f:section>
只是为了完成它...将它放在页面布局文件中 Page.html:
<f:layout name="Page" />
<f:render section="MainMenu" partial="Elements" arguments="{_all}" />
<f:render section="Main" />
直接使用变量"fontawesomeicon",值总是一样的,在渲染模板的控制器中设置,需要指定一个新的context。
使用 <f:debug>{varname}</f:debug>
调试 foreach 循环中的变量并检查字段 "fontawesomeicon" 是否存在。
<f:section name="SubMenu">
<v:page.menu pageUid="{item.uid}" entryLevel="2" levels="1" as="submenu">
<f:for each="{submenu}" as="subitem">
<li class="{subitem.class}">
<f:debug>{subitem}</f:debug>
<a href="{subitem.link}"><i class="fa {fontawesomeicon}"></i> {subitem.linktext}</a>
</li>
</f:for>
</v:page.menu>
</f:section>
我还建议对菜单使用 TypoScript (HMENU, TMENU
) 而不是 Fluid-Templates
终于明白了。这是老问题了……如果你不了解真正的问题,你怎么问正确的问题。另一个 post(关于访问 flexform)给了我最后的提示。耶!
<f:section name="MainMenu">
<ul class="sf-menu">
<v:page.menu pageUid="{settings.startpageUid}" entryLevel="2" levels="2" expandAll="TRUE" as="menu">
<f:for each="{menu}" as="item">
<li class="{item.class}">
<!--new:--> <flux:form.data table="pages" field="tx_fed_page_flexform" uid="{item.uid}" as="menuIcon">
<a href="{item.link}"><i class="fa fa-lg {menuIcon.fontawesomeicon}"></i> {item.linktext}</a>
<!--new:--> </flux:form.data>
<f:if condition="{item.hasSubPages}">
<ul>
<f:render section="SubMenu" arguments="{_all}" />
</ul>
</f:if>
</li>
</f:for>
</v:page.menu>
</ul>
</f:section>
<f:section name="SubMenu">
<v:page.menu pageUid="{item.uid}" entryLevel="2" levels="1" as="submenu">
<f:for each="{submenu}" as="subitem">
<li class="{subitem.class}">
<!--new:--> <flux:form.data table="pages" field="tx_fed_page_flexform" uid="{subitem.uid}" as="subMenuIcon">
<a href="{subitem.link}"><i class="fa {subMenuIcon.fontawesomeicon}"></i> {subitem.linktext}</a>
<!--new:--> </flux:form.data>
</li>
</f:for>
</v:page.menu>
</f:section>
我想我的问题很容易解决,但我想了好几天,谷歌搜索没有帮助我。也许我只是不明白这个概念:-)。
在我的提供商扩展中,我定义了一个带有一个配置选项的简单主页。根据 "fontawesomeicon" 对页面的说明,其相应的 Fonteawesome-Icon 应放置在菜单项文本之前。 但是当我以这种方式实现它时,每个页面菜单条目都从实际页面获取图标。我不知道如何告诉系统,相应的{fontawesomeicon}应该取自该条目所属的页面。
感谢您提供让它正常工作的任何提示。我正在使用 Typo3 7.1
页面配置Fullpage.html:
<f:section name="Configuration">
<flux:form id="fullpage" />
<flux:grid>
<flux:grid.row>
<flux:grid.column colPos="0" name="main" />
</flux:grid.row>
</flux:grid>
<flux:field.input name="fontawesomeicon" />
</f:section>
部分配置 Elements.html:
<f:section name="MainMenu">
<ul class="sf-menu">
<v:page.menu pageUid="{settings.startpageUid}" entryLevel="2" levels="2" expandAll="TRUE" as="menu">
<f:for each="{menu}" as="item">
<li class="{item.class}">
<a href="{item.link}"><i class="fa fa-lg {fontawesomeicon}"></i> {item.linktext}</a>
<f:if condition="{item.hasSubPages}">
<ul>
<f:render section="SubMenu" arguments="{_all}" />
</ul>
</f:if>
</li>
</f:for>
</v:page.menu>
</ul>
</f:section>
<f:section name="SubMenu">
<v:page.menu pageUid="{item.uid}" entryLevel="2" levels="1" as="submenu">
<f:for each="{submenu}" as="subitem">
<li class="{subitem.class}">
<a href="{subitem.link}"><i class="fa {fontawesomeicon}"></i> {subitem.linktext}</a>
</li>
</f:for>
</v:page.menu>
</f:section>
只是为了完成它...将它放在页面布局文件中 Page.html:
<f:layout name="Page" />
<f:render section="MainMenu" partial="Elements" arguments="{_all}" />
<f:render section="Main" />
直接使用变量"fontawesomeicon",值总是一样的,在渲染模板的控制器中设置,需要指定一个新的context。
使用 <f:debug>{varname}</f:debug>
调试 foreach 循环中的变量并检查字段 "fontawesomeicon" 是否存在。
<f:section name="SubMenu">
<v:page.menu pageUid="{item.uid}" entryLevel="2" levels="1" as="submenu">
<f:for each="{submenu}" as="subitem">
<li class="{subitem.class}">
<f:debug>{subitem}</f:debug>
<a href="{subitem.link}"><i class="fa {fontawesomeicon}"></i> {subitem.linktext}</a>
</li>
</f:for>
</v:page.menu>
</f:section>
我还建议对菜单使用 TypoScript (HMENU, TMENU
) 而不是 Fluid-Templates
终于明白了。这是老问题了……如果你不了解真正的问题,你怎么问正确的问题。另一个 post(关于访问 flexform)给了我最后的提示。耶!
<f:section name="MainMenu">
<ul class="sf-menu">
<v:page.menu pageUid="{settings.startpageUid}" entryLevel="2" levels="2" expandAll="TRUE" as="menu">
<f:for each="{menu}" as="item">
<li class="{item.class}">
<!--new:--> <flux:form.data table="pages" field="tx_fed_page_flexform" uid="{item.uid}" as="menuIcon">
<a href="{item.link}"><i class="fa fa-lg {menuIcon.fontawesomeicon}"></i> {item.linktext}</a>
<!--new:--> </flux:form.data>
<f:if condition="{item.hasSubPages}">
<ul>
<f:render section="SubMenu" arguments="{_all}" />
</ul>
</f:if>
</li>
</f:for>
</v:page.menu>
</ul>
</f:section>
<f:section name="SubMenu">
<v:page.menu pageUid="{item.uid}" entryLevel="2" levels="1" as="submenu">
<f:for each="{submenu}" as="subitem">
<li class="{subitem.class}">
<!--new:--> <flux:form.data table="pages" field="tx_fed_page_flexform" uid="{subitem.uid}" as="subMenuIcon">
<a href="{subitem.link}"><i class="fa {subMenuIcon.fontawesomeicon}"></i> {subitem.linktext}</a>
<!--new:--> </flux:form.data>
</li>
</f:for>
</v:page.menu>
</f:section>