Просмотр полной версии : Продолжаю осваивать основы TS, тепер на основе сниппетов typo3wizard.com
Итак, имеется отличый сниппет для генерации "правильного" заголовка окна (сам буду использовать, вместо именования страниц).
config.noPageTitle = 2
page.headerData.5 = TEXT
page.headerData.5.field = subtitle // title
page.headerData.5.wrap = <title>Domain.com: |</title>
Хочу разобрать построчно. Почему config.noPageTitle присваевается 2?
А что это за 5? Имя объекта или что-то ещё? Если имя объекта, то почему 5? Почему нельзя написать page.headerData.field = subtitle // title?
А то и с этими page.10 = USER те же вопросы возникают. Почему 10? И так далее...
Референс посмотрел, но для моего мозга там слишком высокий "штиль". Увидел фигу.
Буду благодарен за ответ. :-)
Про config.noPageTitle всё просто: достаточно прочитать TSREF:
noPageTitle, integer
If you only want to have the sitename (from the template record) in your <title> tag, set this to 1. If the value is 2 then the <title> tag is not printed at all.
Please take note that this tag is required for XHTML compliant output, so you should only disable this tag if you generate it manually already.
Относительно 5, 10 и т.п.
Такой приём часто встречается в TYPO3. Есть специальный тип - COA, content object array. Это тип, который содержит объекты других типов. Поскольку результатом рендеринга любого фрагмента TS-кода является строка, поэтому числовые индексы всего лишь задают последовательность рендеринга внутренних объектов... Чтобы можно было ниже по коду писать .10, а выше - .20. Сами числовые индексы произвольны, главное, они должны быть целыми и положительными. Конечно, .10 и .20 рождают аналогии с Basic =) Но в общем логика примерно та же, что и в бейсике - 10 и 20 можно написать относительно быстро, а "места" между ними вполне достаточно. Соответственно, когда место стоит экономить (.10 и .20 уже есть), используют .5, .3, .15 и т.п.
Относительно 5, 10 и т.п.
Такой приём часто встречается в TYPO3. Есть специальный тип - COA, content object array. Это тип, который содержит объекты других типов. Поскольку результатом рендеринга любого фрагмента TS-кода является строка, поэтому числовые индексы всего лишь задают последовательность рендеринга внутренних объектов... Чтобы можно было ниже по коду писать .10, а выше - .20. Сами числовые индексы произвольны, главное, они должны быть целыми и положительными. Конечно, .10 и .20 рождают аналогии с Basic =) Но в общем логика примерно та же, что и в бейсике - 10 и 20 можно написать относительно быстро, а "места" между ними вполне достаточно. Соответственно, когда место стоит экономить (.10 и .20 уже есть), используют .5, .3, .15 и т.п.
То есть эти цифры, никакие не имена объектов как те же lib. temp. xxx. aaa. а просто определители порядка? То есть если мне надо до вызова
page.10.userFunc = tx_templavoila_pi1->main_page
что-то другое, то нужно написать
page.5.что-то другое = что-то другое
?
В общем случае Вы правильно поняли. Только прежде чем писать
page.5.что-то другое = что-то другое
нужно написать что из себя представляет page.5
В качестве примера:
page.5 = TEXT
//и толькок после этого моэно писать page.5.что-то другое = что-то другое
page.5.value = Hello World!
В общем случае Вы правильно поняли. Только прежде чем писать
page.5.что-то другое = что-то другое
нужно написать что из себя представляет page.5
В качестве примера:
page.5 = TEXT
//и толькок после этого моэно писать page.5.что-то другое = что-то другое
page.5.value = Hello World!
А как можно эту конструкцию перевести на общеизвестные понятия из программирования? Получается что задается тип TEXT, но чему? Объекту page? И если это так, то я правильно понимаю, что в случае следующего объявления ниже по тексту
page.x = что-то другое
объект page примет другое значение? Или как понимать эту конструкцию?
Что означает выделенное в этой конструкции?
tables = sys_template
conf.sys_template >
conf.sys_template = TEXT
А как можно эту конструкцию перевести на общеизвестные понятия из программирования? Получается что задается тип TEXT, но чему? Объекту page? И если это так, то я правильно понимаю, что в случае следующего объявления ниже по тексту
page.x = что-то другое
объект page примет другое значение? Или как понимать эту конструкцию?
Вы не правильно поняли: объект page как был PAGE'ом так им и останется. Просто этот объект включает в себя массив других объектов.
Конструкция "page.5 = TEXT" задает как раз один из объектов этого массива. Для более детальной информации читаем здесь (http://typo3.org/documentation/document-library/references/doc_core_tsref/4.1.0/view/7/5/).
Что означает выделенное в этой конструкции?
tables = sys_template
conf.sys_template >
conf.sys_template = TEXT
Чтобы не возникало подобных вопросов, читаем про синтаксис TypoScript здесь. (http://typo3.org/documentation/document-library/core-documentation/doc_core_ts/4.1.0/view/toc/0/)
В данном случае значит, что удаляется удаляется "объект" который содержался в conf.sys_template. Данная запись примерно эквивалентна функции unset() в php.
Воу, а я и не приметил, что про синтаксис есть мануал. То-то, думаю, в TSRef как-то нифига не сказано об этом, спасибо! Пойду, хоть начну эти иероглифы ">" и "->" различать. :-)
То есть иначе
page.5 = TEXT
page.5.value = Hello World!
можно записать как
PAGE.[TEXT][VALUE]=Hello World!
?
если учесть, что содержимое в скобках есть переменные массива?
Работает на vBulletin® версия 3.8.1. Copyright ©2000-2025, Jelsoft Enterprises Ltd. Перевод: zCarot