Использование жидкости TYPO3 в динамически отображаемом шаблоне

Я готовлю расширение, используя EXTbase и жидкость для 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 не тронуты. Немного смущает. !!
Поиск ответа круглосуточно. Есть идеи?

2

Решение

В вашем действии контроллера вы можете использовать $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

1

Другие решения

Вы загружаете простой шаблон с сервера — здесь нет PHP-кода, который мог бы обработать ваш шаблон. Вам необходимо отправить запрос таким образом, чтобы действие контроллера выполнялось, отображало шаблон, а затем отправляло полученный результат вам.

Самый простой способ сделать это — использовать расширение typoscript_rendering. Чтобы использовать его, создайте ссылку на действие вашего контроллера, используя ViewHelper, предоставляемый расширением. Это будет выглядеть так:

{namespace helhum=Helhum\TyposcriptRendering\ViewHelpers}

// Other stuff

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

Может быть, вам нужно добавить другие параметры — ViewHelper принимает тот же параметр, что и другие f:uri.*-Помощь взять. В вашем JS вы можете отправить запрос на эту ссылку (возможно, поместите ссылку в какой-либо атрибут data) и получите отрендеренный шаблон.

1

Что вам нужно, это частичное: 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. Partials / SomePartial1.html
  2. Partials / SomePartial2.html
1
По вопросам рекламы [email protected]