2017-10-19 82 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來進行真正必要的設置,例如當我想在幾種可能性之間添加選擇時。 –