ОПЕЧАТКА3: использование констант страницы в HMENU / TMENU

#menu #constants #typo3 #typoscript

#меню #константы #опечатка3 #typoscript

Вопрос:

в шаблоне страницы я устанавливаю константу, например

 yl.page.backgroundColor = #ff0000
  

Теперь, есть ли способ получить доступ к значению backgroundColor элемента меню, который отображается TMENU? Я думал примерно так:

 lib.mainNavigation.1.NO.wrapItemAndSub = <li style="background-color: {$record.yl.page.backgroundColor}">|</li>
  

Использование только {$yl.page.backgroundColor}, конечно, отобразит цвет, установленный на текущей странице, а не тот, который я установил в соответствующем пункте меню…

Ссылка на getText, к сожалению, даже не содержит слова «Константа».

Ответ №1:

Я понимаю, что вы пытаетесь сделать, но это не так, как работает TypoScript. Действительно, данные с текущей страницы используются, когда {$yl.page.backgroundColor} .

Чтобы добиться того, чего вы пытаетесь, вам нужно будет придумать немного грязи. Я бы посоветовал вам сохранить цвет фона в одном из неиспользуемых полей страниц (например, субтитры, если вы не используете это). В противном случае вы, конечно, также можете добавить поле в таблицу страниц и использовать его вместо этого.

Следующим шагом будет загрузка вашего цвета фона (установленного в моем случае в поле «субтитры») в ваш перенос примерно следующим образом.

 lib.mainNavigation.1.NO.wrapItemAndSub.dataWrap = <li style="background-color: {field:subtitle}">|</li>
  

Комментарии:

1. Это действительно возможно, я пробовал аналогичный способ (путем определения моего пользовательского поля в TCA). Но я переключаюсь на константы из-за его собственного поведения наследования. Я хотел бы, чтобы цвет фона был унаследован… И я действительно не хочу, чтобы и поле, и константа были избыточными…

2. Единственный способ сделать это с помощью констант — создать отдельный PHP-скрипт, который отображает весь шаблон указанной страницы. Если вы хотите использовать возможность слайда, то внутри TypoScript есть что-то подобное. Однако вам нужно будет использовать поле базы данных. данные = levelfield: -1,субтитры, слайд