![]() |
Передача данных из PHP в TS или TV-FCE
Уважаемые, подскажите как реализовать сабж.
У меня есть своя библиотека, генерящая HTML. Создал HTML шаблон, подключил через TV. Как мне залить HTML данные из PHP скрипта в TS или FCE TV-шаблона? Если у кого есть пример, я бы оттолкнулся от него, разжёвывать не надо, мне нужно просто понять на пальцах, как брать данные из внешних PHP скриптов. то есть вот это мне понятно page.10.userFunc = tx_templavoila_pi1->main_page но вот как задать данные конкретному блоку этого шаблона? Кое-что нашёл в вики: http://wiki.typo3.org/index.php/Typo...HP_Interaction, но там речь о своём плагине и без TV. Ещё вот что нашёл: TypoScript by example - PHP include-scripts http://typo3.org/documentation/docum...0.16/view/8/1/ TSref - PHP include scripts http://typo3.org/documentation/docum...1.0/view/13/1/ Но все эти доки - без применения к TV. Заранее благодарю за помощь! |
включаемый скрипт - это обычный TS объект. значит можно замапить нужную область как TS object path (как меню) и передать туда нужный объект
|
Работающий код:
Код:
lib.myObject = TEXT Код:
lib.myObject = PHP_SCRIPT PHP код:
Код:
lib.myObject = PHP_SCRIPT PHP код:
Где я туплю в синтаксисе TS? |
Цитата:
Setup: Код:
lib.myObject = PHP_SCRIPT Код:
<? |
У меня не работало, пока я не перенёс конфу объекта выше подключения TV.
Код:
lib.myObject = PHP_SCRIPT Код:
page.10.userFunc = tx_templavoila_pi1->main_page |
Появился вот ещё какой интересный вопрос. Назначение FCE вроде бы понятно - генерация и выдача контента :) Но на каждый чих создавать FCE тоже как-то неоптимально. Например, есть заголовок сайта "Добро пожаловать на сайт SITE.RU!", входящий в шаблон с несколькими FCE, в этом заголовке, например, для нескольких доменов меняется только маленькая строковая переменная - написание домена (.NET, .COM и .т.д.). Можно ли передать из TS шаблона эту строку в шаблон? Может быть, использовать включения на PHP? Но, по-моему, они вырезаются при обработке шаблона (я имею в виду обработку TV замапенного HTML-шаблона).
Что-то в этом роде: Код:
...<td>Добро пожаловать на сайт SITE.<?php echo$TSparserObject->setup['site.']['domainCode']?><td>... Но весь сыр-бор от желания максимально разместить HTML разметку в одном файле - шаблоне, для общей наглядности. |
Для таких вещей существует наследование и подключение TS-шаблонов. Т.е. все общее выносится в один шаблон, а отальные делаются based on на нем.
http://typo3.org/documentation/docum...2/6/#id3038155 |
Спасибо. К сожалению, у меня нет опыта в построении многошаблонной иерархии, да и тема это несколько другая. Меня устраивает 1 шаблон для TV. Вопрос был несколько другого плана: подстановка имеющихся TS-данных в шаблон.
То есть в TS-setup происходит инициализация некоторых данных, а в TV шаблоне есть какой-то способ отображения этой информации (без создания FCE). Или я что-то не просёк из предыдущего ответа? |
скорее я не понял вопроса. Если я не ошибаюсь, так просто как вы хотите - не получится. Т.е. придется отдельно замапить .first-level-domain причем outer (или SITE.SMTH), а потом в него выводить нужное значение из TS или php. Причем я бы сделал строго наоборот, чем вы - замапил все приветствие, и весь его текст ввел вы в template setup. Или (более изящное решение) - ввел вы этот текст как контент-элемент на странице-хранилище, ввел бы в него маркер вместо имени сайта, и вставил бы с заменой маркера.
|
> как контент-элемент на странице-хранилище
Спасибо. "контент-элемент" - имеется в виду FCE? И можно ли пример более изящного решения разжевать для чайника? Заранее благодарю за помощь. + Не понял термин "маркер". И ещё. Я, конечно, сейчас больше мыслю как PHP-кодер, а не как TYPO3-разработчик - практики мало, теории много - запутаться легко. Поэтому пока у меня алгоритм такой - замапить несколько мега-FCE сайта, например, блок "новости". А все наполнение блоков делать через подключаемые PHP классы ну и плюс некоторое кол-во TS-setup. То есть пока понимание TV/FCE на самом общем уровне типа Код:
lib.htmlHeaderTop = PHP_SCRIPT |
http://codeline.richmd.ru/?p=3
спасибо Павлу! |
Огромное спасибо!
Похоже на то, что мне нужно, попробую уже завтра :) |
Прочитал статью "Подстановка данных в блоки контента", вопрос остался открытым, потому что, по-моему, у меня несколько другой случай, у меня нет объекта TEMPLATE и маркеры отпадают, как я понимаю. А шаблон используется TV. Вариант 2 (insertData) тоже, по-моему, не мой случай. Мне требуется подставлять значения из TS *вне* FCE-объектов, то есть в самом HTML-шаблоне, который после всех подстановок будет обрабатываться в TV, где уже сгенерится FCE-контент.
То есть сначала в HTML-шаблон подставляются всякие мелочи там и сям типа текущего года и т.д. А потом TV работает с FCE. Вот такое вот возможно? Заранее благодарю за помощь! Далее можно не читать, вопрос снят, оставил для поиска, может кому пригодится :) 2. Возвращаясь к начальному вопросу, начал рефакторить код и наткнулся на неработоспособность следующего: Код:
config { PHP код:
PHP код:
Fatal error: Undefined class name 'testclass' in ...test.inc ... Конечно, я могу подключить php либу непосредственно в test.inc, но почему либа не подключается через TS? Решение: использовать page.includeLibs или просто includeLibs Код:
page.includeLibs { |
если объекта TEMPLATE нет, то его всегда можно создать :) использование TV этому не мешает. По-моему, вы хотите невозможного (в силу устройства TV), и бесполезного. Правильный, с точки зрения TYPO3 и TV алгоритм такой: мапите все области которые будут изменяться, а не только области контента. И потом описываете в template setup подстановку в эти изменяемые области. Т.е. идет одновременная подстановка и контента, и значений заданых (сгенерированных) в TS. И непонятен смысл пытаться сделать это по этапам.
|
Спасибо, разжевали :) К тому и пришёл. Вчера делал хидер, только в нём насчитал 7 изменяемых областей, включая небольшие строки кода, где изменяться будет буквально одно слово. (типа "Здравствуйте, гость" -> ""Здравствуйте, c0d3r").
Не многовато ли? Этак у меня вся страница разбухнет до полусотни объектов - при условии максимального разделения дизайна и кода. Конечно, можно и упростить, объединять в одном FCE несколько уник. сущностей и генерить для них HTML в PHP методах, но этот подход мне не нравится. Поэтому и было желание разгрузить от таких мелочей TV - может быть, я не должен этого хотеть, не спорю, но знания TS всё ещё зачаточные, пишу свой hello world :) Кто-нибудь может сказать - сколько у вас было максимальное кол-во FCE на шаблон? :) |
Немножко определимся с терминологией - FCE - flexible content element - а вовсе не область (area) которую вы мапите в TV.
Ну а что до количества - ну если у вас столько областей вывода, то что поделаешь. Язык описания есть язык описания, область (логически) есть- извольте описать. |
Спасибо за помощь!
Ну, FCE я уже не путаю с area, неточно выразился. |
Часовой пояс GMT +4, время: 16:30. |
Работает на vBulletin® версия 3.8.1.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot