TYPO3 7:从扩展控制器中覆盖或删除页面模板
TYPO3 7: override or remove page template from within extension controller
我希望我的日历扩展为 return 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 的设计方式。
我希望我的日历扩展为 return XML 和 iCal 输出,同时避免需要任何额外的 TypoScript (额外的页面或 typeNum)。为此,我创建了一个专用的导出控制器。正在加载正确的 XML 扩展模板,但包装在常规 HTML 页面模板中。
这是我在 ExportController->listAction()
中尝试过的方法。由于输出中没有 HTML <head>
部分,因此以下行符合我的预期:
$GLOBALS['TSFE']->config['config']['disableAllHeaderCode'] = 1;
尽管我可以看到 $GLOBALS['TSFE']->tmpl->setup
:
$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 的设计方式。