Typoscript DatabaseQueryProcessor - скользить, если поле пустое - PullRequest
0 голосов
/ 27 февраля 2019

У меня есть поле отношения мм в настройках моей страницы.

$myext_pages_fields = array(
    'tx_myext_topofferitem' => Array(
        'label' => 'Relation',
        'config' => Array(
            'type' => 'group',
            'internal_type' => 'db',
            'allowed' => 'tx_myext_topofferitem',
            'MM' => 'tt_content_tx_topofferitem_mm',
            'size' => '20',
            'maxitems' => '99',
            'show_thumbs' => '1',
            'suggestOptions' => [
                'default' => [
                    'searchWholePhrase' => 1
                ],
                'pages' => [
                    'searchCondition' => 'doktype = 1'
                ]
            ],
        )
    ),
);

\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addTCAcolumns('pages', $myext_pages_fields);

\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addToAllTCAtypes('pages', '--div--;Top Offers,tx_myext_topofferitem');

Если поле пустое - должны быть указаны элементы следующей заполненной корневой строки.

Чтобы получить предметы, я использую DatabaseQueryProcessor.

page = PAGE
page {
  10 = FLUIDTEMPLATE
  10 {
    200 = TYPO3\CMS\Frontend\DataProcessing\DatabaseQueryProcessor
    200 {
      table = tx_myext_topofferitem
      pidInList = root,-1
      recursive = 99
      selectFields = tx_myext_topofferitem.*
      join = tt_content_tx_topofferitem_mm ON tt_content_tx_topofferitem_mm.uid_foreign = tx_myext_topofferitem.uid
      where.data = field:uid
      where.intval = 1
      where.wrap = tt_content_tx_topofferitem_mm.uid_local=|
      orderBy = tt_content_tx_topofferitem_mm.sorting
      as = tx_myext_topofferitem_items
    }
  }
}

Я пытался использовать это как where.data, но это не работает.

levelfield : -1 , uid, slide

(TYPO3 9LTS)

1 Ответ

0 голосов
/ 14 марта 2019

Кажется, здесь лучше использовать обработку вложенных данных.Поэтому сначала получите корневое меню, а затем выберите элементы, которые принадлежат определенной странице этого меню.

page = PAGE
page {
    10 = FLUIDTEMPLATE
    10 {
        dataProcessing {
            10 = TYPO3\CMS\Frontend\DataProcessing\MenuProcessor
            10 {
                special = rootline
                special.range = 0|-1
                special.reverseOrder = 1
                as = rootline
                dataProcessing {
                    10 = TYPO3\CMS\Frontend\DataProcessing\DatabaseQueryProcessor
                    10 {
                        if.isTrue.field = tx_myext_topofferitem
                        table = tx_myext_topofferitem
                        pidInList.field = uid
                        selectFields = tx_myext_topofferitem.*
                        join = tt_content_tx_topofferitem_mm ON tt_content_tx_topofferitem_mm.uid_foreign = tx_myext_topofferitem.uid
                        where.data = field:uid
                        where.intval = 1
                        where.wrap = tt_content_tx_topofferitem_mm.uid_local=|
                        orderBy = tt_content_tx_topofferitem_mm.sorting
                        as = tx_myext_topofferitem_items
                    }
                }
            }
        }
    }
}
...