В моем расширении у меня есть метод singleAction
. Я хочу изменить шаблон внутри этого метода, потому что у меня есть 2 шаблона для одного действия. Является ли это возможным? Если это невозможно, как я могу решить эту проблему? Может быть, сгенерировать другое действие?
Шаблон изменения TYPO3 внутри метода действия
Ответы (2)
Установить шаблон не так просто. setTemplate
и getTemplate
не существуют в представлении. Вы можете вернуться к реализации автономного представления, которая поддерживает использование setTemplatePathAndFilename
(пример скопирован из Ludwig)
/**
* Renders the fluid email template
* @param string $template
* @param array $assign
* @return string
*/
public function renderFluidTemplate($template, Array $assign = array()) {
$templatePath = \TYPO3\CMS\Core\Utility\GeneralUtility::getFileAbsFileName('EXT:myextension/Resources/Private/Templates/' . $template);
$view = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\\CMS\\Fluid\\View\\StandaloneView');
$view->setTemplatePathAndFilename($templatePath);
$view->assignMultiple($assign);
return $view->render();
}
echo renderFluidTemplate('mail.html', array('test' => 'This is a test!'));
Вы также можете переключиться на другой шаблон с помощью typoscript.
plugin.tx_yourpluginname.view.templateRootPaths = EXT:extension_name/Resources/Private/CustomPath/Templates/
И это может быть помещено в любое условие типоскрипта, которое вы хотите.
person
Pim Broens
schedule
08.08.2016
Ха, оказывается, ты прав. Я использовал свой код в контексте StandaloneView.
- person j4k3; 09.08.2016
Лучший способ справиться с этим — просто включить в шаблоне действия переключатель, загружающий другой фрагмент. Таким образом, весь поток логики остается нетронутым и сразу становится понятным для всех, кому впоследствии придется редактировать ваш код.
person
Waldgeist
schedule
20.03.2020