Я готовлю расширение, используя 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 не тронуты. Немного смущает. !!
Поиск ответа круглосуточно. Есть идеи?
В вашем действии контроллера вы можете использовать $this->view->setTemplate('myDynamicTemplateName');
использовать шаблон, отличный от предложенного в названии действия.
Вы загружаете простой шаблон с сервера — здесь нет PHP-кода, который мог бы обработать ваш шаблон. Вам необходимо отправить запрос таким образом, чтобы действие контроллера выполнялось, отображало шаблон, а затем отправляло полученный результат вам.
Самый простой способ сделать это — использовать расширение typoscript_rendering
. Чтобы использовать его, создайте ссылку на действие вашего контроллера, используя ViewHelper, предоставляемый расширением. Это будет выглядеть так:
{namespace helhum=Helhum\TyposcriptRendering\ViewHelpers}
// Other stuff
<helhum:uri.ajaxAction action="actionName" controller="YourController"/>
Может быть, вам нужно добавить другие параметры — ViewHelper принимает тот же параметр, что и другие f:uri.*
-Помощь взять. В вашем JS вы можете отправить запрос на эту ссылку (возможно, поместите ссылку в какой-либо атрибут data) и получите отрендеренный шаблон.
Что вам нужно, это частичное: 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), вот так