Форум больше не используется. Присоединяйтесь к каналу #community-ru в Slack for TYPO3 community |
04.01.2010, 14:45 | #1 |
Senior Member
Регистрация: 25.12.2009
Сообщений: 106
|
получение в темплейт переменных из extension
можно ли, и если можно то как, получить в шаблон необходимые мне данные из моего расширения???
речь идет не о возвращаемом результате (хотя интересует и возможность получения масива данных в шаблон чтоб потом из шаблона управлять выводом этих данных), а о получении какой-то переменной, например я хочу чтоб в бредкрамб попадало не название страницы, а название логической единицы выводимой на данной странице так как страница выводит динамический контент, то к примеру в магазине это может быть наименование товара и я хочу выдать это наименование в своем расширении в переменную, а в шаблоне отловить ее и вставить в бредкрамб Последний раз редактировалось 3ton; 04.01.2010 в 16:58 |
04.01.2010, 17:05 | #2 |
Senior Member
|
Поищите tt_news + breadcrumb
Задача регулярно обсуждается и в гугле можно найти ее решение. Например: http://www.typo3-jack.net/typo3-proj...umb-trail.html Для вашего экстеншена делается по аналогии. |
04.01.2010, 19:17 | #3 |
Senior Member
Регистрация: 25.12.2009
Сообщений: 106
|
спасибо за ссылку, я прочитал топик - действительно полезный, но из него не понятно как именно находясь в шаблоне воспользоваться переменной из расширения.
к примеру есть расширение Test в нем объявлены атрибуты title и mode как находясь в шаблоне получить в temp.mainTemplate.subparts.CONTENT_TITLE = TEXT temp.mainTemplate.subparts.CONTENT_TITLE.value = ????title???? либо проверить [?????????mode=5?????] temp.mainTemplate.subparts.CONTENT_CONTENT < tx_test_pi1 [end] |
04.01.2010, 19:47 | #4 |
Senior Member
|
Я не знаю что вы имеете в виду под атрибутами расширения. В TYPO3 таких терминов я не встречал. Уточните откуда вы ожидаете получить title (БД, GET/POST, FF, TypoScript) ?
В примере по ссылке (и аналогичных) три основных момента: 1. RECORDS - получение записей из БД. 2. source.data = GPvar:tx_ttnews|tt_news - из переменной GET берется параметр tx_ttnews[tt_news]=ID и используется для поиска по PK таблицы tt_news (т.е. возвращается одна запись с указаным в url ID) 3. conf.* - это описание того, что и как должно быть возвращено (выведено на страницу). Все параметры подробно описаны в TSRef. |
04.01.2010, 19:55 | #5 |
Senior Member
Регистрация: 25.12.2009
Сообщений: 106
|
я имел ввиду файл-класс расширения и как любой класс - он имеет атрибуты и методы
я предполагаю что если и есть доступ к объекту расширения, то либо это какой то гетер, либо чтение public атрибутов в моем случае я себе представляю такой механизм действий (не уверен что это возможно) при генерации страницы, вызывается расширение находящееся на этой странице которое сохраняет в своих public атрибутах значения мне необходимые, потом я из TypoScript(из шаблона) обращаюсь к этому объекту и получаю его атрибуты использую их в условии и подставляю в шаблон в данный момент я как раз руководствуюсь этим справочником(TSRef), но к сожалению по моей проблеме ничего найти не смог не исключаю что более продвинутыми людьми это решается другими методами |
05.01.2010, 12:23 | #6 |
Senior Member
Регистрация: 24.06.2006
Сообщений: 143
|
можно передать через GLOBALS['TSFE']->applicationData['tx_ext_key'] (я иногда и просто GLOBALS['tx_ext_key'] юзаю, хотя это не кошерно)
в шаблоне это будет TSFE:applicationData|tx_ext_key (но тут еще надо понимать область видимости - где можно использовать эти данные, я обычно пользуюсь этим внутри TS объекта, который генерируется из php кода плагина через tslib_cObj::cObjGetSingle) можно через TS константы прописать в ext_localconf.php: Код:
t3lib_extMgm::addTypoScriptConstants('tx_ext_key_var1 = 123') но тут минус что тяжелый код не должен помещаться в ext_localconf.php т.к. он инклюдится при любом вызове, здесь лучше размещать только какие-то глобальные переменные конфигурации Последний раз редактировалось jettero; 05.01.2010 в 12:48 |
05.01.2010, 12:58 | #7 |
Senior Member
|
Непосредственно обращаться к методам и атрибутам класса из TS нельзя.
В общем случае шаблон обрабатывается до выполнения пользовательских PHP скриптов из расширений, поэтому applicationData установятся после парсинга шаблона и проверки TS условий. Но есть еще в TS механизм userFunc - когда вызывается указанный метод вашего класса, ему передается часть TS кода шаблона, и он возвращает контент в TYPO3. Аналогичная возможность есть в TS-условиях. ПС: хотя вам 3ton это и не нравится, но иногда быстрее помочь найти решения зная общую решаемую задачу, а не отдельный ее кусок, который TYPO3-способом может быть не решить. |
05.01.2010, 13:06 | #8 | |
Senior Member
Регистрация: 25.12.2009
Сообщений: 106
|
Цитата:
узнать режим работы расширения я смогу лишь в самом расширении обработав переменные из RealUrl из TS и из FF и только после этого я буду знать как отображать ту отдельно расположенную часть интерфейса если есть возможность ее решить другими способами - буду рад выслушать их |
|
05.01.2010, 14:56 | #9 |
Senior Member
|
Было бы проще, что бы ваше расширение само показывало ту, вторую часть. Тогда вы в своем коде можете обрабатывать нужные вам условия.
Вы, например, можете в коде своего расширения создавать и выводить "результат" куска TS кода. Так проще задействовать стандартные средства TYPO3 из вашего PHP кода (например, http://typo3.toaster-schwerin.de/typ.../msg00030.html) Можно и в шаблоне условия прописывать. Каких-то особенных переменных из RealURL не существует - существуют переменные из GET, а RealURL лишь промежуточное звено, о котором ни TS ни ваш PHP код не знает. Если его отключить - сайт будет работать точно также, только URL будут выглядеть по другому. Единственная проблема - сложность ваших условий. Пременные из GET/POST использовать просто: Код:
[globalVar = GP:print > 0] Кроме того, TS-условия создают дополнительные копии контента в кэше. Чем больше условий, тем больше (и медленней) будет кэш TYPO3. |
05.01.2010, 15:01 | #10 |
Senior Member
Регистрация: 25.12.2009
Сообщений: 106
|
в моем случае в зависимости от 2 параметра в URL 3 и 4 могут держать в себе разные переменные для этого расширения, что не позволит в тот момент знать что же я хочу проверить
а вот насчет вывода из своего расширения часть темплейта для другой области страницы - довольно интересно. это может решить многие мои проблемы, не только текущую можно об этом поподорбнее? |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
multilanguage extension | typo27 | Разработка расширений / TYPO3 extension development | 3 | 23.09.2008 16:40 |
DR Wiki - Typo3 Wiki extension Extension key | Костик | Общие вопросы | 1 | 07.08.2008 17:48 |
Extension Manager не работает | Игорь Ф. | Общие вопросы | 38 | 25.06.2008 19:14 |
TYPO3 Fatal Error: Extension key "sv" was NOT loaded! | Tod | Общие вопросы | 2 | 28.10.2007 21:53 |
Multiple vulnerabilities in extension ve_guestbook | RSS Bot | Новости TYPO3 (на английском) | 0 | 02.08.2007 12:51 |