【问题标题】:TYPO3 – DCE extension: Get uids of current DCE instance and of section instanceTYPO3 – DCE 扩展:获取当前 DCE 实例和部分实例的 uid
【发布时间】:2014-10-05 10:54:52
【问题描述】:

我在 TYPO3 6.2 中使用动态内容元素 (dce) 来构建 Twitter Bootstrap 手风琴元素。
为此,我构建了一个带有存储所有手风琴项的 section 元素的手风琴 DCE。

现在,Bootstrap 要求我有一种方法可以从每个手风琴项目中引用整个手风琴实例。 (这是必需的,因为同一页面上可能有多个手风琴。)

我找到了一种使用 {contentObject.uid} 的方法。这给了我唯一的 DCE 的 TYPO3 内容元素 uid。在每页中有一些从 1 开始的计数器会更好。我想,DCE 有类似的东西,但我现在知道如何访问它。

真正的问题是我还需要为整个手风琴中的每个手风琴项目提供一个唯一的 ID。 DCE 中应该有一些部分元素 uid,但我现在知道它是如何命名的以及如何从流体模板访问它。

这是我当前的 DCE 流体模板:

{namespace dce=Tx_Dce_ViewHelpers}
<f:layout name="Default" />

<f:section name="main">
    <div class="panel-group" id="accordion_{contentObject.uid}">
        <f:for each="{field.accelement}" as="accordion-element">
            <div class="panel panel-primary">
                <button type="button" class="btn btn-primary btn-block" data-toggle="collapse" data-parent="#accordion_{contentObject.uid}" data-target="#collapse_{accordion-element.uid}">{accordion-element.elheadline}</button>
                <div id="collapse_{accordion-element.uid}" class="panel-collapse collapse">
                    <div class="panel-body">
                        {accordion-element.elcontent}
                    </div>
                </div>
            </div>
        </f:for>
    </div>
</f:section>

不工作的元素是 {accordion-element.uid}。我尝试了从 {accordion-element.id} 到 {field.accelement.id} 和 {field.accelement.uid} 的任何方法 - 但没有运气。

【问题讨论】:

    标签: twitter-bootstrap typo3 fluid typo3-6.2.x


    【解决方案1】:

    嗯——像往常一样:
    休息后,我立即看到了我之前两个小时找不到的解决方案。

    key 属性添加到 for-each-loop 会产生神奇的效果。

    {namespace dce=Tx_Dce_ViewHelpers}
    <f:layout name="Default" />
    
    <f:section name="main">
        <div class="panel-group" id="accordion_{contentObject.uid}">
            <f:for each="{field.accelement}" key="n" as="accordion-element">
                <div class="panel panel-primary">
                    <button type="button" class="btn btn-primary btn-block" data-toggle="collapse" data-parent="#accordion_{contentObject.uid}" data-target="#collapse_{contentObject.uid}_{n}">{accordion-element.elheadline}</button>
                    <div id="collapse_{contentObject.uid}_{n}" class="panel-collapse collapse">
                        <div class="panel-body">
                            {accordion-element.elcontent}
                        </div>
                    </div>
                </div>
            </f:for>
        </div>
    </f:section>
    

    为了确保即使在同一页面上放置多个手风琴,所有手风琴项都是唯一的,我们必须同时使用 contentObject.uid 和当前循环键:collapse_{contentObject.uid}_{n}

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多