2017-10-19 49 views
0

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

这是我在ExportController->listAction()尝试。下面的代码行做什么,我希望它会因为没有HTML <head>部分输出:

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

具有以下行而不是页面仍然被完全解析,虽然我可以看到在F中的变化:调试的$GLOBALS['TSFE']->tmpl->setup输出:

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

我甚至更进一步,并试图从我的Typo脚本($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'); 

是否有任何非Typo脚本的方式来实现我想要什么?

回答

1

的动作模板文件得到解决之前控制器动作被调用。我所知道的唯一方法,是重写控制器,例如setViewConfiguration和编程添加一个额外的模板根路径上的方法 - 但是这并不一定是你的用例兼容。 它要求模板对象不指定模板路径和文件名,它必须仅指定一个模板名称和一个(一组)模板根路径

您的使用案例看起来像文件的路径和文件名获得TS设置,在这种情况下,不,你不能覆盖该TS之外。

有时,接受你需要使用TS一些事情只是简单的方法。毕竟,TYPO3是如何设计的。

+0

谢谢你,克劳斯。我现在用一个专用的pageType去寻找TS解决方案 - 也因为我不懂如何使用'setViewConfiguration'。我的方法总是尽可能地在脚本中进行,并只使用TS来进行真正必要的设置,例如当我想在几种可能性之间添加选择时。 –