Russian TYPO3 community

Russian TYPO3 community (http://forum.typo3.ru/index.php)
-   Мастер-класс (http://forum.typo3.ru/forumdisplay.php?f=41)
-   -   [TS] Динамический getText (http://forum.typo3.ru/showthread.php?t=7990)

Sergey M Nikitin 21.09.2009 10:35

[TS] Динамический getText
 
Порой нужно в объекте типа getText (см. TSref стр. 9) вставить динамические данные. Например: есть замечательный, скажем так "getText" (поправьте если есть другое обозначение) - DB:

Цитата:

DB: Value from database, syntax is [tablename] :
[uid] : [field]. Any record from a table in TCA can be
selected here. Only marked-deleted records does not
return a value here
С помощью него можно всегда произвести выборку конкретного поля. Но порой идентификатор записи является динамическим (например передается из значения поля, либо url-запросу), что тогда делать? На помощь приходит stdWrap c его помощью можно вставить данные в поле определяющее данные (сорри за тавталогию)

пример:
Код:

some.ts.obj = TEXT
some.ts.obj{
  field = [dynamicData]
  wrap = {DB:tx_th_allocations:|:name}
  insertData = 1
}

Если данный объект находиться в контексте объекта CONTENT либо RECORDS, то значение поля [dynamicData] сначала подставляется в wrap объекта и только после этого обрабатывается ф-ей getData, благодаря insertData = 1

более комплексный пример:
Код:

some.ts.obj = TEXT
some.ts.obj{
  stdWrap.cObject = TEXT
  stdWrap.cObject{
    stdWrap.cObject = COA
    stdWrap.cObject{
      10 = LOAD_REGISTER
      10{
          myPrettyField.cObject = TEXT
          myPrettyField.cObject.field = [dynamicData#1]
          myPrettyTable.cObject = TEXT
          myPrettyTable.cObject.data = [dynamicData#2]
          myPrettyFieldTitle.cObject = CONTENT
          myPrettyFieldTitle.cObject{
          .....
          }
      }
     
      #Вставка 3х динамических элементов
      20 = TEXT
      20{
        value = DB:{register:myPrettyTable}:{register:myPrettyField}:{register:myPrettyFieldTitle}
        insertData = 1
      }
    }
    wrap = {|}
    insertData = 1
  }
  #на этом уровне мы можем пропускать через stdWrap конечный результат
  crop = 32 | ...
}

Данный подход позволяет вставлять любые данные и любое кол-во данных в поле типа getText, это дает очень хорошие решения во многих ситуациях. Данный пример был создан по причине того, что в typo3 есть не понятный глюк связанный с тем что вложенный в CONTENT объект RECORDS не позволяет выводить объекты этого жи типа при дальнейшем выполнение скрипта, данные примеры помогают избежать эти проблемы. Пользуйтесь на здоровье.


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

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