Russian TYPO3 community

Russian TYPO3 community (http://forum.typo3.ru/index.php)
-   TypoScript практикум (http://forum.typo3.ru/forumdisplay.php?f=27)
-   -   Вложенные content select (http://forum.typo3.ru/showthread.php?t=11828)

mlnid 03.09.2015 19:54

Вложенные content select
 
Здравствуйте.
Есть задача - получить список объектов самописного плагина в группировке по свойствам этих объектов с использованием typoscript.

Возможно ли в обработке результатов запроса создать вложенный запрос с подстановкой в него значений полученный в родительском запросе?

Код:

20 = CONTENT
       
        20.table = tx_bbmoebel_domain_model_logo
       
        20.select {
                   
                # здесь параметры запроса       
       
        }
        20.renderObj = COA
       
    20.renderObj {

                #вложенный запрос
                10 = CONTENT
       
                10.table = tx_bbmoebel_domain_model_logo

                10.select {
               
                        # здесь использовать данный из родительского запроса
                        # тут параметры запроса       

                }
               
        }


Или у таких задачь решение в typo3 другое?

Спасибо.

Николай Сипко 03.09.2015 21:29

https://wiki.typo3.org/Ru:Ts45min#CO....8B_TypoScript

"Для начала создаем объект PAGE, чтобы что-то могло быть выведено. В этом объекте PAGE мы создаем объект CONTENT, которым можно управлять при помощи различных параметров TypoScript.

TS TypoScript:

page = PAGE
page.typeNum = 0

# Объект content выполняет запросы к базе данных и загружает содержимое
page.10 = CONTENT
page.10.table = tt_content
page.10.select {

# "sorting"- это столбец из таблицы tt_content, где
# отслеживается порядок, заданный во внутреннем интерфейсе
orderBy = sorting

# столбец normal
where = colPos = 0
}

# renderObj выполняется для каждой строки-результата из запроса к базе данных,
# а внутренний массив данных заполняется содержимым. Это гарантирует нам
# возможность вызова свойства .field и мы получаем соответствующее значение
page.10.renderObj = COA
page.10.renderObj {

10 = TEXT

# Поле tt_content.header обычно содержит заголовок.
10.field = header

10.wrap = <h1>|</h1>

20 = TEXT

# Поле tt_content.bodytext содержит текст содержимого
20.field = bodytext

20.wrap = <p>|</p>
}

Объект CONTENT выполняет запрос SQL к базе данных. За запрос отвечает "select". "Select" определяет, что нам нужны все записи из столбца 0 (являющийся столбцом "NORMAL" во внутреннем интерфейсе), а порядок выдачи результата определяется полем "sorting". Если свойство pidInList не установлено или удалено, запрос будет ограничен текущей страницей. Например, если страница с ID 100 ссылается на объект CONTENT, то будут возвращены лишь записи со страницы с pid=100.

Свойство renderObj определяет то, как записи будут выданы. Здесь оно было определено, как COA (Content Object Array – массив объектов содержимого), который может содержать любое количество объектов TypoScript. В данном случае используются два объекта TEXT, выводимые друг за другом. Порядок их вывода не зависит от порядка следования в коде TypoScript, а присвоенным им номером. Объект TEXT "10" выводится перед объектом TEXT "20".

=======

У объекта PAGE, в дополнение к многочисленным свойствам, имеется бесконечное количество объектов, которые могут определятся только лишь номерами (так называемый массив содержимого). Это значит, что эти объекты обозначены лишь номерами, в соответствии с ними они и упорядочиваются при выводе на страницу. Первым идет объект с наименьшим номером, последним – с наибольшим. Порядок их появления в TypoScript не имеет значения.

TS TypoScript:

mypage.30 = TEXT
mypage.30.value = This is last

# Первым будет выведен объект номер 10, затем 20 и 30. Объект номер 25 по логике
# будет выведен между объектами 20 и 30
mypage.20 = TEXT
mypage.20.value = I'm the middle

# Этот объект будет выведен первым
mypage.10 = TEXT
mypage.10.value = Hello World!

# здесь мы создаем второй объект для режима печати
print = PAGE
print.typeNum = 98
print.10 = TEXT
print.10.value = This is what the printer will see.


Часовой пояс GMT +4, время: 18:54.

Работает на vBulletin® версия 3.8.1.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot