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

Опитвам се да покажа uid или име на моята категория като class="category.uid" в моя шаблон FLUID.

Ако опитам <f:debug>{data}</f:debug>, ще видя, че има резултат като: categories => '1' (1 chars)

Но как мога да напиша category-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

  • `{data} {data}

person user2310852    schedule 11.08.2015    source източник
comment
Какво е {categories}? Масив ли е или 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>само получава променлива bool (1 или 0). С f:forViewHelper получавам само uid, не заглавието. Така че това не е достатъчно. Ще намеря друг начин да вкарам класа си в шаблона. Благодаря   -  person user2310852    schedule 12.08.2015
comment
Създадох заявка за функция за течност: forge.typo3.org/issues/82010   -  person cweiske    schedule 31.07.2017


Отговори (3)


Същият проблем се обсъжда тук (вижте 11:30 - 12:31).

Така че няма viewhelper за това. Трябва да регистрирате ContentController с Flux.

person Ronny Sternecker    schedule 26.08.2015
comment
Мисля, че писането на персонализиран ViewHelper е по-добро решение за тази задача. Вижте stackoverflow.com/a/39224703/2564552 - person spackmat; 16.11.2017

Използвал съм вариант на решението тук: Как мога да получа обекта на категорията във 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 в течност. И също така внимавайте, че записите в категорията трябва да са в основния елемент, а не на страница. И съвет за спестяване на време: получената 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