TYPO3 получает uid категории в шаблоне FLUID (sys_category)

Я пытаюсь показать uid или имя моей категории как class="category.uid" в моем шаблоне FLUID.

Если я попробую <f:debug>{data}</f:debug>, я увижу вывод вроде: categories => '1' (1 chars)

Но как я могу записать uid категории или -name в свой FLUID/HTML, примерно так:

<div id="container" class="{data.nav_title}">
<!-- I need the categories --> 
<div id="container" class="{categories.uid}">

Спасибо за вашу помощь.

РЕДАКТИРОВАТЬ: несколько скриншотов. Информация находится в таблице sys_categorytitle, uid, pid..

sys_category TYPO3


пример некоторых категорий в целом TYPO3

  • `{данные} {данные}

person user2310852    schedule 11.08.2015    source источник
comment
Что такое {категории}? Это массив или ObjectStorage? Правильно ли он отображен в вашей модели предметной области? Пожалуйста, предоставьте больше информации.   -  person Viktor Livakivskyi    schedule 12.08.2015
comment
Общие категории TYPO3 (== системные записи в таблице sys_category), см. мой edit ..скриншот   -  person user2310852    schedule 12.08.2015
comment
Я вижу сейчас. Я еще не работал с системными категориями, но, скорее всего, вам следует перебрать их через f:for ViewHelper, а затем вы можете получить id   -  person Viktor Livakivskyi    schedule 12.08.2015
comment
Хорошо спасибо. Я вижу, что <f:debug>data</f:debug>получается только логическая переменная (1 или 0). С f:forViewHelper я получаю только uid, а не заголовок. Так что этого недостаточно. Я найду другой способ добавить свой класс в шаблон. Спасибо   -  person user2310852    schedule 12.08.2015
comment
Я создал запрос функции для жидкости: forge.typo3.org/issues/82010   -  person cweiske    schedule 31.07.2017


Ответы (3)



Я использовал вариант решения здесь: Как я могу получить объект категории в Fluid of Typo3 Content Element Pictures?

TypoScript

lib.categories = CONTENT
lib.categories {
    table = sys_category
    select {
        pidInList = root
        selectFields = sys_category.uid
        join = sys_category_record_mm on sys_category_record_mm.uid_local = sys_category.uid
        where.field = recordUid
        where.wrap = sys_category_record_mm.uid_foreign=|
    }
    renderObj = COA
    renderObj {
        1 = TEXT
        1 {
            field = uid
            stdWrap.noTrimWrap = | cat-||
        }
    }
}

Гибкий шаблон

<f:cObject typoscriptObjectPath="lib.categories" data="{recordUid: data.uid}" />
person maechler    schedule 17.02.2017
comment
Это работает, но возвращаемые категории представляют собой строку и, следовательно, должны отображаться в TypoScript, а не в теге for внутри Fluid. А также имейте в виду, что записи категории должны быть в корневом элементе, а не на странице. И совет для экономии времени: результирующий SQL-запрос не отображается, когда [SYS][sqlDebug] установлено на 2. - person spackmat; 16.11.2017

Извините за ответ - у меня недостаточно репутации, чтобы комментировать.

Что такое {data}?

Это то, что вы получаете от своего контроллера?

$data = $this->configurationManager->getContentObject()->data;
$this->view->assign('data', $data);

Если это так, вам нужно будет выполнить дополнительную обработку в вашем контроллере, поскольку $data является связанным массивом, а не объектом/моделью с внедрением отношений.

person Lasse    schedule 12.08.2015
comment
шаблон: я получу из <f:debug>{data}</f:debug>см. скриншот выше. - person user2310852; 12.08.2015
comment
Да я вижу. Это похоже на запись страницы из таблицы pages. Где вы назначаете переменную {data} вашему шаблону жидкости? Вы должным образом сделали что-то подобное в своем контроллере шаблонов $this->view->assign('data' ,$GLOBALS['TSFE']->page); categories => '1' - это не uid категории, а количество ссылок, используемых внутри TYPO3 CMS. Если вы попытаетесь добавить другую категорию, вы увидите, что эта переменная изменилась на categories => '2'. - person Lasse; 12.08.2015