2013-06-21 91 views
3

我使用TYPO3擴展feupload,它依賴於extbase。這是我第一次與extbase聯繫。 但問題是關於一般的extbase。設置TYPO3 extbase storagePageIds/storagePid爲當前

我希望TYPO3默認在查詢中包含通常的「IN(當前頁)」pid檢查,除非另有說明 - 但在extbase中看起來不同。或者至少在我的情況下,它不起作用。

在擴展中,有一個常量/設置設置,其中可以設置storagePid。這工作。 但我們不想爲每個頁面手動調整該參數。

persistence { 
     # cat=feupload/persistence; type=integer; label=Storage PID of records 
     storagePid = 
} 

那麼如何讓extbase自動按照預期得到當前頁面的PID?我試過在安裝程序中設置plugin.tx_pluginname.persistence.storagePid.data = {page:uid},但是這樣做不起作用。什麼樣的TS不得不看起來像工作?)

回答

6

嗯,你做了什麼應該的工作,但你必須把它寫這樣的:

plugin.tx_pluginname.persistence.storagePid.data = page:uid 

(在{}當你在一個普通的包裹插入數據字段,只需要)

正如其他人指出的那樣,您必須確保將擴展的配置包含在您的模板中。

如果上面的失敗,你可以通過編程設置storagePid在控制器的initializeAction,像這樣:

$querySettings = $this->myRepository->createQuery()->getQuerySettings(); 
$querySettings->setStoragePageIds(array($GLOBALS["TSFE"]->id)); 
$this->myRepository->setDefaultQuerySettings($querySettings); 
1

我剛剛在TYPO3 ver上測試過。 4.7.x和getText功能的伎倆:

plugin.tx_test { 
    persistence { 
    storagePid.data = field:uid 
    } 
} 

把這個主頁的TS Setup,並覆蓋上如果需要,子頁(S)。

+0

我在TYPO3 4.5試了一下與EXT:feupload,它不工作。可能很難重現。你知道extbase是否應該在查詢中默認包含「當前pid」條件嗎? – Urs

+1

您是否在模板中包含了typoscript配置?不,Extbase默認不包含當前的pid。您必須設置storagePid或在您自己的查詢中將其轉換。 – Shufla

1

測試在TYPO3的6.1.8

plugin.tx_test { 
    persistence { 
    storagePid.override.cObject = TEXT 
    storagePid.override.cObject.field = uid 
    } 
} 
+1

**請考慮解釋您的代碼的作用!** – Victor

+0

使用此代碼,您可以將您的storageID設置爲當前頁面。將代碼添加到您的擴展配置文件。 – Rupert