繁体   English   中英

TYPO3 7:从扩展控制器中覆盖或删除页面模板

[英]TYPO3 7: override or remove page template from within extension controller

我希望我的日历扩展名返回XML和iCal输出,同时避免任何其他TypoScript (附加页面或typeNum)的需要 为此,我创建了一个专用的导出控制器。 正确的XML扩展模板正在加载,但包装在常规HTML页面模板中。

这是我在ExportController->listAction()尝试过的方法。 由于输出中没有HTML <head>部分,因此以下行完成了我希望的操作:

$GLOBALS['TSFE']->config['config']['disableAllHeaderCode'] = 1;

在下面的行中,尽管我可以看到$GLOBALS['TSFE']->tmpl->setup的f:debug输出中的更改,但页面仍被完全解析:

$GLOBALS['TSFE']->tmpl->setup['page.']['10.']['file'] = 'path/to/empty/templatefile.xml';

我甚至走得更远,尝试从我的TypoScript中覆盖所有模板设置( $GLOBALS['TSFE']->tmpl->setup['page.']['10.']['file.']['stdWrap.']['cObject.']['default.'] )–具有相同的结果。

而当设置$GLOBALS['TSFE']->tmpl->setup = null; ,页面的某些内容不见了:扩展的XML模板之后及其上方的所有内容元素的所有输出–但模板的该部分仍然存在。

此外,但没有成功,我尝试了以下操作:

$this->objectManager->get(\TYPO3\CMS\Core\Page\PageRenderer::class)->setTemplateFile('path/to/empty/templatefile.xml');

是否有任何非TypoScript方法可以实现我想要的?

在调用控制器动作之前 ,动作模板文件已解析。 我知道的唯一方法是覆盖控制器上的方法(如setViewConfiguration并以编程方式添加其他模板根路径-但这不一定与您的用例兼容。 它要求模板对象不指定模板路径和文件名,而必须仅指定模板名称和(一组)模板根路径

您的用例看起来像在TS中设置了文件路径和文件名,在这种情况下,不可以,您无法在TS外部覆盖它。

有时候,接受您需要使用TS做某些事情只是更简单的方法。 毕竟,这就是TYPO3的设计方式。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM