Russian TYPO3 community Форум больше не используется. Присоединяйтесь к каналу #community-ru в Slack for TYPO3 community  

Вернуться   Russian TYPO3 community > Тематические форумы > TypoScript практикум

Ответ
 
Опции темы Опции просмотра
Старый 20.06.2007, 12:54   #1
c0d3r
Senior Member
 
Регистрация: 13.12.2006
Адрес: ~msk
Сообщений: 277
По умолчанию Порядок обработки TS - объекты USER

Уважаемые, в доках пишется, что TS обрабатывается последовательно по строкам.

Но так ли это применительно к объектам USER?

Код:
lib.test1 = USER
lib.test1 {
	userFunc = user_view->test1
}

lib.test2 = USER
lib.test2 {
	userFunc = user_view->test2
}
Я добавил отладку (echo) в оба метода test.
test2 отрабатывает первым.
Хочется понять как такое может быть и почему?

ps Оба определения не обязательно в одном конфиги, могут последовательно подгружаться файлы .ts

Заранее спасибо за помощь.
c0d3r вне форума   Ответить с цитированием
Старый 20.06.2007, 14:31   #2
Pavel Antonov
Senior Member
 
Аватар для Pavel Antonov
 
Регистрация: 01.10.2004
Адрес: Россия, Москва
Сообщений: 1,204
Отправить сообщение для Pavel Antonov с помощью ICQ
По умолчанию

TS обрабатывается не в порялке написания, а в порядке подключения в рендеринге.

если lib.test2 подключен на странице "выше" чем lib.test1, то он будет обработан первым
__________________
Павел Антонов
Rich Media Development Ltd.
Блог: http://codeline.richmd.ru/
Pavel Antonov вне форума   Ответить с цитированием
Старый 20.06.2007, 15:22   #3
c0d3r
Senior Member
 
Регистрация: 13.12.2006
Адрес: ~msk
Сообщений: 277
По умолчанию

Спасибо, так оно и есть.
Хотя для TV столкнулся с несколько иным поведением - порядок обработки соответствует порядку в DS, а не в TS.

Последний раз редактировалось c0d3r; 04.07.2007 в 11:35
c0d3r вне форума   Ответить с цитированием
Старый 29.08.2007, 15:39   #4
c0d3r
Senior Member
 
Регистрация: 13.12.2006
Адрес: ~msk
Сообщений: 277
По умолчанию

Возвращаясь к напечатанному. Всё-таки столкнулся с непонятным
Есть блок контента и пейджеры вверху и внизу.

Вот как это прописано в DS:
...
mainContent
mainTopPager
mainBottomPager
...

Вот как это прописано в TS setup:
Код:
lib.mainContent = USER_INT
lib.mainContent {
	userFunc = user_view->mainContent
}

// пейджеры нужны только на определённых страницах
[PIDinRootline = {$PAGE_ID1}] [PIDinRootline = {$PAGE_ID2}] ...
lib.mainTopPager = USER_INT
lib.mainTopPager {
	userFunc = user_view->mainPager
}

lib.mainBottomPager = USER_INT
lib.mainBottomPager {
	userFunc = user_view->mainPager
}
[GLOBAL]
При выводе debug() отладки для TV получаем:
tx_templavoila_pi1->processdatavalues: field_maincontent
tx_templavoila_pi1->processdatavalues: field_maintoppager
tx_templavoila_pi1->processdatavalues: field_mainbottompager

Но если вставить отладочные эхи в оба метода, то получается, что mainPager отрабатывает раньше, чем mainContent.

Кто-нибудь сталкивался с таким?
Мне важно, чтобы mainContent отрабатывался раньше mainPager.

Ещё вопрос можно ли второму, нижнему пейджеру, передать контент ($content) из первого, верхнего с помощью TS?
Сейчас там тупо через PHP static свойство...

Заранее благодарю за любую помощь!
c0d3r вне форума   Ответить с цитированием
Старый 29.08.2007, 16:54   #5
void
Senior Member
 
Аватар для void
 
Регистрация: 14.03.2006
Адрес: Russia, Penza
Сообщений: 1,504
Отправить сообщение для void с помощью ICQ
По умолчанию

А почему бы не сделать так:
Код:
lib.mainContent = USER_INT
lib.mainContent {
	userFunc = user_view->justMain
        whoiam = content
}

// пейджеры нужны только на определённых страницах
[PIDinRootline = {$PAGE_ID1}] [PIDinRootline = {$PAGE_ID2}] ...
lib.mainTopPager = USER_INT
lib.mainTopPager {
	userFunc = user_view->justMain
        whoiam = pagerTop
}

lib.mainBottomPager = USER_INT
lib.mainBottomPager {
	userFunc = user_view->justMain
        whoiam = pagerBottom
}
[GLOBAL]
и
PHP код:
class user_singleton{
 static 
$instance;
  static 
$generated;
  static 
$content;
  static 
$pagerTop;
  static 
$pagerBottom;

 private function 
__construct() {}
 
   public static function 
getInstance() {
     if (!
self::$instance instanceof self) {
       
self::$instance = new self();
     }
     return 
self::$instance;
   }
 function 
justMain($content,$conf){
   if (!
$generated){
      
$this->content $this->genContent();
      
$this->pagerTop $this->genPagerTop();
      
$this->pagerBottom $this->genPagerBottom();
      
$generated true;
   }
   switch (
$conf['whoiam']){
    case 
'content':return $this->content;
    case 
'pagerTop':return $this->pagerTop;
    case 
'pagerBottom':return $this->pagerBottom;
  }
 }
}
class 
user_view
  
$inst;
  function 
__construct(){
     
$this->inst user_singleton::getInstance();
  }
  function 
justMain($content,$conf){
     
$this->inst->justMain($content,$conf);
  }

__________________
TYPO3 FAQ

Последний раз редактировалось void; 29.08.2007 в 17:11
void вне форума   Ответить с цитированием
Старый 29.08.2007, 17:06   #6
c0d3r
Senior Member
 
Регистрация: 13.12.2006
Адрес: ~msk
Сообщений: 277
По умолчанию

Большое спасибо за пример, это реальная помощь. Можно сделать и так. Я уже подумал, что можно объединить в одну функцию, правда, тогда придётся немного перемапить страницу, ну что ж, можно и перемапить ради результата

А по поводу второго вопроса есть опыт? Чисто для багажа знаний, там ещё не вагон и тележка.

Цитата:
Ещё вопрос можно ли второму, нижнему пейджеру, передать контент ($content) из первого, верхнего с помощью TS?
c0d3r вне форума   Ответить с цитированием
Старый 29.08.2007, 17:47   #7
void
Senior Member
 
Аватар для void
 
Регистрация: 14.03.2006
Адрес: Russia, Penza
Сообщений: 1,504
Отправить сообщение для void с помощью ICQ
По умолчанию

Средствами TS сделать это невозможно.
__________________
TYPO3 FAQ
void вне форума   Ответить с цитированием
Старый 29.08.2007, 18:02   #8
c0d3r
Senior Member
 
Регистрация: 13.12.2006
Адрес: ~msk
Сообщений: 277
По умолчанию

Благодарю за помощь!
c0d3r вне форума   Ответить с цитированием
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB code is Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Многократная инициализация user_ объектов PHP c0d3r Общие вопросы 9 17.06.2007 11:42
проблемы с FE User Registration MDG Общие вопросы 1 22.08.2006 16:26
Новое решение для user list archive Valery Romanchev Новости TYPO3-разработки 0 27.03.2006 04:51


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


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

Хостинг и техническая поддержка: TYPO3 Лаборатория