Russian TYPO3 community

Russian TYPO3 community (http://forum.typo3.ru/index.php)
-   TypoScript практикум (http://forum.typo3.ru/forumdisplay.php?f=27)
-   -   Доступ к константам TS в PHP (http://forum.typo3.ru/showthread.php?t=3360)

Pavel Antonov 13.05.2007 01:50

"WSOD" - это уж через чур.... 8=)

c0d3r 13.05.2007 15:16

Уж очень досадить хотелось этой фиче :)
Ничего личного, TYPO3 я уже почти люблю :)

c0d3r 01.06.2007 15:11

В общем, в этом топике мы разобрались с FE-константами (из TS Setup).
А как получить в PHP значения константант из TS Constants?
Например:
Код:

TSC_DOMAIN = site.ru
Хочу использовать значение в PHP (в своих методах для объекта USER).

void 01.06.2007 17:16

Проще всего сделать где-нибудь в EXT:my/static/setup.txt
Код:

plugin.tx_my{
 domain = {$TSC_DOMAIN}
}

а затем использовать значение
PHP код:

$GLOBALS['TSFE']->tmpl->setup['plugin.']['tx_my.']['domain']; 


c0d3r 01.06.2007 17:30

Интересно, большое спасибо!
А без создания плагина? :)

void 01.06.2007 19:13

Говорим USER - подразумеваем плагин.
Говорим "плагин" - подразумеваем USER.

c0d3r 04.06.2007 10:48

Подразумеваете - оно конечно так...
Только вот есть у меня USER, да нет плагина - не до него пока.
Соотв., ваш совет насчёт plugin.tx_my{domain = {$TSC_DOMAIN}} не поможет :(
Попробую дампануть TSFE и вытащить путь :)

c0d3r 04.06.2007 15:57

В общем, как я понял, описание TS констант в стиле PHP ни к чему не приводит, требуется добавлять константы в системные или user-классы.

Вот такие определения попросту нигде не всплывают в PHP, хотя TS с ними отлично работает.
Код:

TSC_DOMAIN = RU

void 04.06.2007 15:57

Ну каким-то же образом вы его вставили?
Например,
Код:

config.includeLibs.my = fileadmin/php/mylib.php
lib.myplace = USER
lib.myplace.userFunc = user_my->main

А раз вставили, то значит, можете передать параметры:
Код:

config.includeLibs.my = fileadmin/php/mylib.php
lib.myplace = USER
lib.myplace.userFunc = user_my->main
lib.myplace.param = this_is_param

Причем параметры могут быть константами:
Код:

config.includeLibs.my = fileadmin/php/mylib.php
lib.myplace = USER
lib.myplace.userFunc = user_my->main
lib.myplace.param = {$TSC_DOMAIN}


c0d3r 04.06.2007 17:03

Огромное спасибо за такой детальный ответ, Вы ответили на мой другой вопрос по поводу параметров в функции :) Сразу в догонку вопрос - а как должны быть описана в PHP эта функция с параметром? Насколько я понимаю, в параметрах классов типа user_ подразумевается наличие $content и $conf...

Я многое в тайпо пока что делаю по примерам, просветляясь по ходу дела или позже, спасибо участникам форума! Сидеть и раскуривать все доки оказалось крайне непрактичным делом :(

Передал я так:
const.ts (тут только константы для TS, их немного. так как они юзаются в разных .ts):
Код:

TSC_DOMAIN = RU
TSC_DOMAIN_FULL = SITE.{$TSC_DOMAIN}
...

setup.ts (здесь уже только те константы, которые уйдут в PHP):
Код:

constants {
TSC_WELCOME = Добро пожаловать на сайт {$TSC_DOMAIN_FULL}!
...
}

Код:

lib.myplace = USER
lib.myplace.userFunc = user_my->main

но так как мне константа нужна не как параметр, то в user_my создаём метод :)
PHP код:

/**
* Получение TS-константы в PHP
* setup.ts: constants {...}
* @param string $name
* @return mixed
* @static
*/
function cmsConst($name) {

    if (!empty(
$GLOBALS['TSFE']->tmpl->setup['constants.'][$name])) {
        return 
$GLOBALS['TSFE']->tmpl->setup['constants.'][$name];
    } else {
        return 
false;
    }



и где надо, юзаем его:
PHP код:

echo $this->cmsConst('TSC_WELCOME'); 

В тайпо всё это так просто ;)


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

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