PDA

Просмотр полной версии : Работа с константами


c0d3r
17.05.2007, 12:51
Уважаемые! Почитал в tsref про константы: http://typo3.org/documentation/document-library/references/doc_core_tsref/4.1.0/view/6/1/

Но практика обламывает :(

constants {
...
PAGES_MAIN_PID = 5
}
....
lib.menu = HMENU
lib.menu.special = directory
lib.menu.special.value = {$constants.PAGES_MAIN_PID}
lib.menu.1 = TMENU
lib.menu.1.NO {
before =  
after =   | |*|   | |*|  
}


Меню не работает.
Если ставлю там пятёрку цифрой, то без проблем.
В чём я туплю?

ps {$PAGES_MAIN_PID} тоже не работает.

c0d3r
17.05.2007, 13:00
Поковырявшись, нашёл ошибку.
Я прописываю константы в шаблоне в разделе Setup, в подключаемом файле.
Прописал явно в разделе Constants, {$PAGES_MAIN_PID} заработал.

Не понятно, зачем тогда нужен блок constants {}, который можно прописывать в Setup?

c0d3r
17.05.2007, 14:54
Не обращайте внимания на этот пост, он сбивает с толку.
Было:
TSconfig объяснил кое-что, но, может быть, на русском короче и понятнее получится у кого-нибудь :)
http://typo3.org/documentation/document-library/references/doc_core_tsconfig/4.1.0/view/1/3/#id3546072

Дылгеров Ц.В.
18.05.2007, 09:57
вроде бы там написано начинать с TSFE.constants и т.д.
а у вас просто constants

c0d3r
18.05.2007, 11:27
Это прописывать её так можно. А читать как раз предлагается без всяких довесков.

Example:
TSFE.constants.websiteConfig.id = 123

In the TypoScript templates you can now insert this constant as {$websiteConfig.id}

Упс, перечитал доку, я всех с толку сбил, меня интересует именно блок constants {} в TTS, а не TSFE.constаnts в Page TSconfig :(
Пошёл поищу ссылку.
В TSref буквально пара строчек, ничего не объяснили.

Пока использую реальные константы :)

c0d3r
06.06.2007, 18:29
Внимание, вопрос :) Кто-нибудь может доступно объяснить, зачем в TS есть константы в блоке Сonstants и TLO-константы в блоке Setup, constants {}? В чём их принцпиальное различие? Спасибо!

Пока что обнаружил, что TLO-константы можно прочитать в PHP:

$GLOBALS['TSFE']->tmpl->setup['constants.'][$name]

а вот первые пока никак не могу задействовать, на форуме всплывало, что их можно передавать как параметры user_ функций

lib.myplace = USER
lib.myplace.userFunc = user_my->main
lib.myplace.param = {$TSC_DOMAIN}

но хочется несколько большего...

И, наоборот, первые легко юзаются в TS через {$CONST_NAME}, а со вторыми затык, не выходит каменный цветок...

void
06.06.2007, 23:10
Вроде бы те, которые из setup, оверрайдят те, которые в constants. Точно не скажу.
Попробуйте
$GLOBALS['TSFE']->tmpl->generateConfig_constants();

c0d3r
07.06.2007, 10:58
у tmpl нет метода generateConfig_constants()
он есть в class.t3lib_tsparser_ext.php и class.t3lib_tsstyleconfig.php

А как можно использовать TLO-константы в TS? Конструкция {$const} для них не работает... у меня, по крайней мере....