Russian TYPO3 community

Russian TYPO3 community (http://forum.typo3.ru/index.php)
-   Разработка расширений / TYPO3 extension development (http://forum.typo3.ru/forumdisplay.php?f=38)
-   -   Константы шаблона TS в BE модулях (http://forum.typo3.ru/showthread.php?t=5803)

Uruguaygrep 28.01.2008 14:46

Константы шаблона TS в BE модулях
 
Пишу BE модуль. Задался вопросом. Как получить значения констант заданых в шаблоне сайта (Template->Constants) в BE модуле?
Возможно ли это в принципе?
Через дебуг пересмотрел все массивы которые передаются в модуль по-умолчанию ($BE_USER,$LANG,$BACK_PATH,$TCA_DESCR,$TCA,$CLIENT ,$TYPO3_CONF_VARS), ничего похожего не нашел.

Буду благодарен за помощь или хотябы за подсказку/идею где рыть.

void 28.01.2008 20:53

В бекенде нет никакого фронтэнда. Поэтому часто приходится использовать некий фейк фронтэнда... Пример можно посмотреть в timtab, как там берутся в BE настройки из фронтэнда.

Uruguaygrep 28.01.2008 21:37

Спасибо,
Посмотрю.

Uruguaygrep 31.01.2008 16:38

Этот же вопрос задал в рассылке typo3.dev
Сначала мне тоже сказали что это невозможно.
Но потом Ingo Renner подкинул один вкусный фокус.
Цитирую:
----------------------------------------------------------------
in BE you can simply initialize a TSFE instance yourself like this:
PHP код:

        // get a TS parser instance
$template t3lib_div::makeInstance('t3lib_tsparser_ext');
$template->tt_track 0;
$template->init();

$sysPage  t3lib_div::makeInstance('t3lib_pageSelect');
$rootLine $sysPage->getRootLine($pageId);

        
// generate the constants config + hierarchy info for the template.
$template->runThroughTemplates($rootLine);
$template->generateConfig();

return 
$template->setup

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

Что бы получить константы, соответственно обращаемся через
PHP код:

$template->constants 

P.S. Ну и конечно нужно подключить соответствуюющие библиотеки:
require_once(PATH_t3lib.'class.t3lib_tsparser_ext. php');
require_once(PATH_t3lib.'class.t3lib_page.php');

void 31.01.2008 20:19

Я именно это и имел в виду. Писал абсолютно такой же код, один в один.
Еще иногда требуется определить в бекенде константу PATH_tslib.
Кстати, главная сложность вот в этом фейковом FE - это узнать $pageId.
Ну и вообще, сложности возникают при желании использовать фе-шные либы - приходится делать фейковый TSFE и пр... достаточно муторное занятие.

Uruguaygrep 31.01.2008 21:09

Да, с PATH_tslib я как то тоже возился, и встречал в какихто модулях переопределение этой константы (по моему даже в ср_фрикап).

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

Для чего-нибудь более-менее универсального нужно будет повозится.


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

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