【问题标题】:Fluid Typo3 - How to get variables definded via flux from different page uidsFluid Typo3 - 如何获取通过来自不同页面 uid 的通量定义的变量
【发布时间】:2015-10-11 21:44:56
【问题描述】:

我想我的问题很容易解决,但我想了好几天,谷歌搜索并没有帮助我。也许我只是不明白这个概念:-)。

在我的提供程序扩展中,我定义了一个带有一个配置选项的简单主页。根据“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>&nbsp;{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>&nbsp;{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" />

【问题讨论】:

    标签: css typo3 fluid flux viewhelper


    【解决方案1】:

    终于明白了。这是老问题......如果你没有真正解决问题,你如何提出正确的问题。另一篇文章(关于访问 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>&nbsp;{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>&nbsp;{subitem.linktext}</a>
     <!--new:-->    </flux:form.data>
                </li>
            </f:for>
        </v:page.menu>
    </f:section>
    

    【讨论】:

      【解决方案2】:

      通过直接使用变量“fontawesomeicon”,其值总是一样的,正如在渲染模板的控制器中设置的那样,你需要指定一个新的上下文。

      使用&lt;f:debug&gt;{varname}&lt;/f:debug&gt; 调试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>&nbsp;{subitem.linktext}</a>
                  </li>
              </f:for>
          </v:page.menu>
      </f:section>
      

      我还建议对菜单使用 TypoScript (HMENU, TMENU) 而不是 Fluid-Templates

      【讨论】:

      • 谢谢你。但这是真正的一点,我似乎缺乏知识和理解力。我需要添加什么变量像这个项目一样得到“foreach-ed”。是否有可能像 {item.uid.fontawesomeicon} 这样使用的层次结构。或者添加pageUid的方法从哪里获取信息?是的,该字段存在,被渲染。 ... 为什么更好地使用 Typoscript?我刚刚从那个切换过来,认为流体方式可能更容易(至少阅读要好得多)。使用液体有什么缺点吗?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-02-13
      • 2014-01-25
      • 1970-01-01
      • 2013-03-25
      • 1970-01-01
      • 1970-01-01
      • 2019-11-13
      相关资源
      最近更新 更多