2017-02-21 10 views
1

最近のページと共通のsys_categoriesを持つランダムなページのページとexcerpを取得する必要があります。TYPO3:Extbaseがsys_categoriesで関連ページを取得する

私はそうのようなwhere句のための猫のIDを取得しようとした:

$categories = $GLOBALS['TSFE']->page['categories']; 
$cats = explode(',',$categories); 
foreach($cats as $cat) { 
    if($whereClauses != '') $whereClauses .= " OR "; 
    $whereClauses .= $cat.' IN pages.categories'; 
} 

しかし、私は$this->pageRepository->getRecordsByField のwhere句として、この作業を取得していないが、誰もがページにアクセスして私を助けることができると思います。

それだけでページが割り当てられているカテゴリの数が含まれている7.6.xのTYPO3だと

答えて

0

pages.categoriesをextbase。

実際のカテゴリIDはmmテーブルsys_category_record_mmにあります。

2

カテゴリはMM関係テーブル(sys_category_record_mm)に割り当てられているため、カテゴリはページテーブルに保存されません。

カテゴリに割り当てられたページを取得するには、このテーブルをクエリする必要があります。

例:

$GLOBALS['TYPO3_DB']->exec_SELECT_mm_query('*', 'sys_category', 'sys_category_record_mm', 'pages', 'tablenames = "pages" AND sys_category.uid = 123') 

EDIT:CategoryCollectionと使用法の例:

$collection = \TYPO3\CMS\Core\Category\Collection\CategoryCollection::load($id, false, 'pages'); 
$items = $collection->getItems(); 
+0

次の2つが正しいです。私はすでに次のようにテストしました: '$ pid = $ GLOBALS ['TSFE'] - > page ['uid']; $ query = \ TYPO3 \ CMS \ Extbase \ Domain \ Repository \ CategoryRepository :: createQuery(); $ query->声明(「sys_category_record_mm FROM uid_local SELECT \t \t \t \t \t \t \t \t \t \t \t \tテーブル名を= 'ページ' \t \t \t \t \t \tと \t \t \t \t \t \t uid_foreign = "$ pid); $ categories = $ query-> execute(); ' しかし、猫がページを取得できません。 –

+0

私はあなたがいくつかのextbaseのものでカテゴリからページをフェッチできるとは思わない。 '\ TYPO3 \ CMS \ Core \ Category \ Collection \ CategoryCollection'を使ってページを取得できます。 –

+0

CategoryCollectionのサンプルコードをいくつか追加しました。 –

関連する問題