我使用的是自定義插件,我需要添加頁面標題爲插件的設置變量之一:typoscript變量在插件設置?
plugin.tx_fsearch {
settings {
resultsPath = search-results/brand/{field:title}/make/{field:title}
resultsPath.insertData = 1
}
}
然而,這是輸出字「陣」,而不是我所需要的路徑。 有誰知道我可以如何做這項工作?
我使用的是自定義插件,我需要添加頁面標題爲插件的設置變量之一:typoscript變量在插件設置?
plugin.tx_fsearch {
settings {
resultsPath = search-results/brand/{field:title}/make/{field:title}
resultsPath.insertData = 1
}
}
然而,這是輸出字「陣」,而不是我所需要的路徑。 有誰知道我可以如何做這項工作?
嘗試文本對象
plugin.tx_fsearch {
settings {
resultsPath = TEXT
resultsPath.value = search-results/brand/{field.title}/make/{field.title}
}
}
相同的結果「數組」 – user500665
您是否想在FLUID或控制器中獲取resultsPath? – jokumer
正如我在答案中所解釋的,解決設置時不提供stdWrap –
沒有可用於設置在extbase擴展stdWrap,不管使用TEXT cObj或insertData!
作爲一種變通方法,您可以修復自己被做類似EXT:新聞在這裏所做的https://github.com/georgringer/news/blob/master/Classes/Controller/NewsController.php#L495
public function injectConfigurationManager(
\TYPO3\CMS\Extbase\Configuration\ConfigurationManagerInterface $configurationManager
) {
$this->configurationManager = $configurationManager;
$typoScriptService = GeneralUtility::makeInstance(\TYPO3\CMS\Extbase\Service\TypoScriptService::class);
$typoScriptArray = $typoScriptService->convertPlainArrayToTypoScriptArray($originalSettings);
$stdWrapProperties = GeneralUtility::trimExplode(',', $originalSettings['useStdWrap'], true);
foreach ($stdWrapProperties as $key) {
if (is_array($typoScriptArray[$key . '.'])) {
$originalSettings[$key] = $this->configurationManager->getContentObject()->stdWrap(
$originalSettings[$key],
$typoScriptArray[$key . '.']
);
}
}
}
$this->settings = $originalSettings;
}
或者你跳過TS一部分,並直接在您的控制器調用stdWrap。
我沒有寫擴展名,所以 - 請耐心等待 - 我直接在控制器中表達什麼意思? – user500665
不好意思,這是你的擴展。如果不是,你可以XCLASS控制器來擴展它,但這是一個不同的任務 –
至少您需要使用冒號'{field:title}'而不是點'{field.title}'來訪問TS中的字段。 –