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)

c0d3r 10.05.2007 18:47

Доступ к константам TS в PHP
 
Знаю, что к значениям объекта config в PHP доступ можно получить вот так:
PHP код:

$GLOBALS['TSFE']->config['config'][...] 

А как получить доступ к значениям объекта constants?

Например, есть такой TTS:
Код:

constants {
        main_title = Мой сайт
}

Как получить значение main_title в PHP?

Заранее спасибо за помощь!

c0d3r 10.05.2007 18:54

Вопрос закрыт:
PHP код:

$GLOBALS["TSFE"]->tmpl->setup["constants."][...] 


Pavel Antonov 10.05.2007 19:32

А можно узнать для чего нужно обращение к константам из PHP?
Просто интересно, обычно все делают через TS (там можно и константы подставить)

c0d3r 10.05.2007 19:33

Павел, во-первых, чтобы знать, во-вторых, я хороший PHP-программист, но плохой TS-кодер, и пока мне тяжело даётся TYPO3.
Мне понравился объект USER и я его вовсю педалирую его userFunc :) Хочется использовать как можно более абстрактную common-либу. Поэтому пока явный крен в пользу PHP против TS. Болезнь роста.

Разумеется, первый проект будет кособокий... но я не могу позволить себе читать, читать, читать, счас вот у меня пришло время авральной практики... практического применения констант пока нет, но возможно вот-вот потребуется.

Чувствую, что можно разрулить в пользу имспользования TS в тех же флехформах, но пока нет знаний...

В выходные буду смотреть подкасты - отдохну типо3 :)

c0d3r 10.05.2007 19:39

Есть ещё вопрос - доступ к TS константам в HTML шаблоне.

Прочитал на форуме, что можно писать в шаблоне типа <!--###USERNAME###--> и в маркер будет подстановка соответствующей константы.

Если это так, как можно совместить сие чудо с TV?
Прописываю константу, маркер, но подстановки нет.
Ясно, что где-то туплю, но где?
Неужели надо соотв. плагин подключать?

Pavel Antonov 10.05.2007 19:42

Цитата:

Сообщение от c0d3r (Сообщение 11901)
Павел, во-первых, чтобы знать, во-вторых, я хороший PHP-программист, но плохой TS-кодер, и пока мне тяжело даётся TYPO3.
Мне понравился объект USER и я его вовсю педалирую его userFunc :)

Ну так и кладите все параметры в USER. Они будут приходить в параметре $config в вызове функции.

Pavel Antonov 10.05.2007 19:44

Цитата:

Сообщение от c0d3r (Сообщение 11903)
Есть ещё вопрос - доступ к TS константам в HTML шаблоне.

Прочитал на форуме, что можно писать в шаблоне типа <!--###USERNAME###--> и в маркер будет подстановка соответствующей константы.

Если это так, как можно совместить сие чудо с TV?
Прописываю константу, маркер, но подстановки нет.
Ясно, что где-то туплю, но где?
Неужели надо соотв. плагин подключать?

А зачем Вам маркеры в TV? Она для того и сделана что бы подменять напрямую код через меппинг... В шаблоне определяете что манять, в TS описываете на что менять. Маркеры ни к чему...

c0d3r 10.05.2007 20:09

Цитата:

Сообщение от Pavel Antonov (Сообщение 11904)
Ну так и кладите все параметры в USER. Они будут приходить в параметре $config в вызове функции.

Можно пример кода в студию? :)
Мне интересно, но я пока устал читать доки %)

По поводу маркеров - умом понимаю, что не нужны они в TV, а сердцем нет :)
Если серьёзно, то это отголоски темы http://forum.typo3.biz/showthread.php?t=3293,
там мой последний пост неотвечен, поэтому пошёл в обход, ухватившись за маркеры.

Pavel Antonov 10.05.2007 21:20

Цитата:

Сообщение от c0d3r (Сообщение 11906)
Можно пример кода в студию? :)
Мне интересно, но я пока устал читать доки %)

Ну а посмотреть TS код любого плагина? Все плагины подключаются через USER или USER_INT

Цитата:

Сообщение от c0d3r (Сообщение 11906)
По поводу маркеров - умом понимаю, что не нужны они в TV, а сердцем нет :)
Если серьёзно, то это отголоски темы http://forum.typo3.biz/showthread.php?t=3293,
там мой последний пост неотвечен, поэтому пошёл в обход, ухватившись за маркеры.

Я не понял о чем Вы там спрашиваете.

c0d3r 12.05.2007 17:43

Да, про $conf я вчера уже прочитал, вопрос снимаю, просто с ходу не понял, что это только для плагинов.
Я там сам ничего не понимаю уже. По моему, в голове каша из MTB1/FTB :(

P.S. Из-за постоянного белого экрана TV уже очень злой. Причём в превью всё нормально, а что ему не нравится в FE - не ясно! Пропускал HTML шаблон через Tidy, CSE, никаких ошибок верстки они не находят. Сегодня если не справлюсь, буду пробовать MTB, меня время просто поджимает уже.

P.S.S. Оказывается, WSOD появился из-за однострочного коммментария, это я украшал setup.ts по-пехапешному.
/*--- LIB. ---*/
Второй раз наступаю на грабли с окончанием комментария */ не с новой строки.
jEdit TS-синтаксис подсветил без ошибок, это меня и расслабило.

Соответственно, делаю вывод - если получаешь WSOD на FE, но в TV-превью всё хорошо, нужно искать ошибку в TTS.
Надеюсь, с терминологией не напутал ;)

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'); 

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

c0d3r 04.06.2007 17:48

При изучении t3lib/config_default.php наткнулся на:
PHP код:

'defaultTypoScript_constants.' => Array(),    // Lines of TS to include after a static template with the uid = the index in the array (Constants) 

У кого-нибудь есть пример практического использования? :)


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

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