Extbase DatabaseQueryProcessor должен уважать сортировку - PullRequest
0 голосов
/ 02 июля 2018

Как заставить DatabaseQueryProcessor сортировать записи так, как будто они упорядочены в поле бэкэнда (хранится разделенный запятыми список полей «страницы»?

10 = TYPO3\CMS\Frontend\DataProcessing\DatabaseQueryProcessor
10 {
    table = pages
    pidInList = 1
    recursive = 99
    where {
        data = field:pages
        wrap = nav_hide=0 AND uid IN (|)
    }
    as = pages
}

1 Ответ

0 голосов
/ 05 июля 2018

Попробуйте ниже непроверенный образец:

10 = TYPO3\CMS\Frontend\DataProcessing\DatabaseQueryProcessor
10 {
    table = pages
    pidInList = 1
    recursive = 99

    where = TEXT
    where {
        data = field:pages
        wrap = nav_hide=0 AND uid IN (|)
    }

    order = TEXT
    order.stdWrap {
        field = pages

        split {
            token = ,
            cObjNum = 1|*|2

            1.current = 1
            1.trim = 1
            1.noTrimWrap = |uid=||

            2.current = 1
            2.trim = 1
            2.noTrimWrap = |, uid=||
        }
    }

    as = pages
}

В основном я создаю следующую order by оценку (позволяет использовать 1,2,3 в качестве образцов uid):

Order By uid=1, uid=2, uid=3

Я использую функцию splite typoscript, чтобы разбить список uid запятой, а затем cObjNum, чтобы обернуть первый элемент с конфигурацией 1, а остальные с конфигурацией 2. cObjNum не очень хорошо документировано, но вы можете взглянуть на модульные тесты исходного кода, чтобы получить представление о формате: \ TYPO3 \ CMS \ Core \ Tests \ Unit \ Service \ TypoScriptServiceTest :: explodeConfigurationForOptionSplitProvider

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...