簡體   English   中英

TYPO3 Fluid在動態渲染模板中的使用

[英]TYPO3 Fluid usage in dynamically rendered template

我正在使用EXTbase和fluid為TYPO3 v7 +編寫擴展程序。 我在這里..因為我要根據某些控制器條件渲染流體模板。在這種情況下,我希望從用戶提供的模板文件中渲染諸如html代碼之類的東西。

我使用jQuery繞過了這種情況。

    <script>
        $(function(){
            $("#some_div_id").load("template_file.html");
        });
    </script>

猜猜是什么..我得到了我期望的結果,但不是真的。

<div class="clearfix">
    <ul id="image-gallery" class="gallery list-unstyled cS-hidden">
       <f:for each="{slider}" as="user" key="label" iteration="iterator">
          <li data-thumb="{user.src}"> 
              <f:image crop="{user.crop}" treatidasreference="true" src="{user.filepath}" alt="{user.title}" style="width:100%; height:auto;"></f:image>
                <f:if condition="{config.metadata.switch}!= 0">
                  <f:if condition="{user.title}">
                    <p class="light-caption" style="background: {config.metadata.opacity}; color: {config.metadata.color}; font-size: {config.metadata.size}%; text-align:{config.metadata.align};">{user.title}</p>
                  </f:if>
                </f:if>
          </li>
      </f:for>
    </ul>
</div>

上面是代碼的結果。.看,TypoScript變量是不變的。有點尷尬。!
晝夜不停地尋找答案。有什么想法嗎?

您正在從服務器加載普通模板-不涉及任何可渲染模板的PHP代碼。 您需要以執行控制器動作,呈現模板的方式發送請求,然后將呈現的結果發送給您。

最簡單的方法是使用擴展名typoscript_rendering 要使用它,請使用擴展提供的ViewHelper呈現指向控制器動作的鏈接。 它看起來像這樣:

{namespace helhum=Helhum\TyposcriptRendering\ViewHelpers}

// Other stuff

<helhum:uri.ajaxAction action="actionName" controller="YourController"/>

也許您需要添加其他參數-ViewHelper的參數與其他f:uri.* -ViewHelpers的參數相同。 然后,在您的JS中,您可以向該鏈接發送請求(也許將該鏈接放入某些數據屬性中),然后將接收呈現的模板。

在控制器操作中,可以使用$this->view->setTemplate('myDynamicTemplateName'); 使用與操作名稱建議的模板不同的模板。

請參閱: https : //typo3.org/api/typo3cms/class_t_y_p_o3_1_1_c_m_s_1_1_fluid_1_1_view_1_1_template_view.html#a9c46c7bfe6a39b26478a2f37aec38d80

您需要的是部分內容: https : //docs.typo3.org/typo3cms/ExtbaseGuide/Fluid/ViewHelper/Render.html

在您的Fluid模板中,您將基於控制器提供的變量添加條件

<f:if condition="{showPartial1}">
    <f:render partial="SomePartial1" arguments="{_all}" />
</f:if>
<f:if condition="{showPartial2}">
    <f:render partial="SomePartial2" arguments="{_all}" />
</f:if>

通常將分頁添加到Partials文件夾中(應與Templates文件夾位於同一文件夾中)

  1. 諧音/ SomePartial1.html
  2. 諧音/ SomePartial2.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM