Russian TYPO3 community

Russian TYPO3 community (http://forum.typo3.ru/index.php)
-   Мастер-класс (http://forum.typo3.ru/forumdisplay.php?f=41)
-   -   [TS] Удобный CONTENT (http://forum.typo3.ru/showthread.php?t=7996)

Sergey M Nikitin 21.09.2009 20:45

[TS] Удобный CONTENT
 
в этом примере я покажу как удобней всего (по мне так) организовать CONTENT объект при этом отделив данные от вида.

классический способ использования CONTENT
Код:

some.ts.obj = CONTENT
some.ts.obj{
  #Обрамляем наш объект, контейнер для вывода записей блога
  wrap = <div class="posts">|</div>
  table = [some_table]
  select{
    ... bla bla bal ... (см. select)
  }
  #вот здесь пошел объет вывода.
  #представим что у нас запись блока и мы выводом, заголовок, дату и текст
  renderObj = COA
  renderObj{
    #Обрамляем каждую запись, контейнер для вывода поста
    wrap = <div class="post">|</div>
    10 = TEXT
    10{
      field = title
      wrap = <h1>|</h1>
    }
    20 = TEXT
    20{
      field = date
      wrap = <span>|</span>
      strftime = [strftime format]
    }
    30 = TEXT
    30{
      field = bodytext
      wrap = <div class="post_body">|</div>
    }
  }
}

как видем из этого примера шаблон записи блога "размазан" по конфигурации content объекта

мой способ (отделяем данные от вида):
Код:

some.ts.obj = CONTENT
some.ts.obj{
  #Обрамляем наш объект, контейнер для вывода записей блога
  wrap = <div class="posts">|</div>
  table = [some_table]
  select{
    ... bla bla bal ... (см. select)
  }

  renderObj = COA
  renderObj{
    #ДАННЫЕ
    10 = LOAD_REGISTER
    10{
      post_title.cObject = TEXT
      post_title.cObject.field = title

      post_date.cObject = TEXT
      post_date.cObject{
        field = date
        strftime = [strftime format]
      }
      post_body.cObject = TEXT
      post_body.cObject.field = bodytext
    }

    #ВИД
    20 = TEXT
    20{
      value(
<div class="post">
  <h1>{register:post_title}</h1>
  <span>{register:post_date}</span>
  <div class="post_body">{register:post_body}</div>
</div>
      )
      insertData = 1
    }
  }
}


преимущества такого способа:
1. Компактность
2. Прозрачность

Pavel Antonov 21.09.2009 23:49

Это уже перебор. Большой наглядности это не добавлят, а попытка сделать MVC внутри TS больше похожа на шутку.

Так же надо учитывать, что данный способ несет накладные расходы:
  • по памяти, для хранения регистров. Естественно зависит от того что буде зраниться.
  • по времени выполнения, для парсинга данных и нахождение {getData} вставок

В то же время польза сомнительная.

На мой взгляд.

Sergey M Nikitin 22.09.2009 09:25

Код:

по памяти, для хранения регистров. Естественно зависит от того что буде зраниться.
собстно, регистр это массив $GLOBALS['TSFE']->register, в котором во время рендеринга CONTENT элемента переопределяются значения ключей, кол-во элементов массива при этом остается фиксированным.

Код:

по времени выполнения, для парсинга данных и нахождение {getData} вставок
Здесь нужно проводить конкретные тесты, на фоне не кэшируемой, медленной работы typo3 - скорей всего незначительно. Меня этот способ хорошо спасает когда на странице не сколько блоков с примерной одной структурой данных, но не много разными шаблонами и свойствами запроса. Да и просто хочется привнести в этот безумный "мир" ts хоть чуточку порядка :)


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

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