2016-11-17 24 views
0

我使用的是自定義插件,我需要添加頁面標題爲插件的設置變量之一:typoscript變量在插件設置?

plugin.tx_fsearch { 
    settings { 
    resultsPath = search-results/brand/{field:title}/make/{field:title} 
    resultsPath.insertData = 1 
    } 
} 

然而,這是輸出字「陣」,而不是我所需要的路徑。 有誰知道我可以如何做這項工作?

+1

至少您需要使用冒號'{field:title}'而不是點'{field.title}'來訪問TS中的字段。 –

回答

-2

嘗試文本對象

plugin.tx_fsearch { 
    settings { 
    resultsPath = TEXT 
    resultsPath.value = search-results/brand/{field.title}/make/{field.title} 
    } 
} 
+0

相同的結果「數組」 – user500665

+0

您是否想在FLUID或控制器中獲取resultsPath? – jokumer

+1

正如我在答案中所解釋的,解決設置時不提供stdWrap –

2

沒有可用於設置在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。

+0

我沒有寫擴展名,所以 - 請耐心等待 - 我直接在控制器中表達什麼意思? – user500665

+0

不好意思,這是你的擴展。如果不是,你可以XCLASS控制器來擴展它,但這是一個不同的任務 –