Russian TYPO3 community Форум больше не используется. Присоединяйтесь к каналу #community-ru в Slack for TYPO3 community  

Вернуться   Russian TYPO3 community > Тематические форумы > TypoScript практикум

Ответ
 
Опции темы Опции просмотра
Старый 14.05.2007, 15:36   #1
c0d3r
Senior Member
 
Регистрация: 13.12.2006
Адрес: ~msk
Сообщений: 277
По умолчанию Передача параметров в userFunc

Возможно ли такое? Не нашёл.

Код:
lib.items = USER
lib.items {
	userFunc = user_Class->items
}
PHP код:
function items($topic) {
...

Требуется в TS указать аргумент $topic для метода items.
Аргумент виден в TTS, например, это ID текущей страницы.
Заранее благодарю за помощь!

P.S. Судя по http://wiki.typo3.org/index.php/TSre...tions#userFunc
Код:
lib.items = USER
lib.items {
	userFunc = user_Class->items(topic)
}
но у меня так не получается.

P.P.S. Что-то меня совсем коротнуло, вопрос вдогонку: как в функцию передать значение ID текущей страницы?
Обыскался по page_id, но, по-моему, переменная по-другому называется.

Последний раз редактировалось c0d3r; 14.05.2007 в 16:31
c0d3r вне форума   Ответить с цитированием
Старый 14.05.2007, 18:21   #2
void
Senior Member
 
Аватар для void
 
Регистрация: 14.03.2006
Адрес: Russia, Penza
Сообщений: 1,504
Отправить сообщение для void с помощью ICQ
По умолчанию

Вы всё перепутали...
userFunc cObject'a USER всегда принимает только два параметра: $content и $conf. Первый в данном случае не используется, а во втором содержится массив TS-параметров.

Ссылка ведёт на описание userFunc-ов TS-условий, это совсем другое!

В функцию плагина можно передать данные следующими способами:
1) через TS-параметры, например
lib.items = USER
lib.items{
userFunc = tx_class->main
topic = 15
}
PHP код:
class tx_class{
function 
main($content,$conf){
 echo 
$conf['topic'];//выведет "15"
}

2) через флексформу
3) через внешнее окружение - GET/POST, кроме того, существует множество тайпо3-объектов с нужными параметрами. $GLOBALS['TSFE']->id, например, содержит id текущей страницы.
__________________
TYPO3 FAQ
void вне форума   Ответить с цитированием
Старый 14.05.2007, 18:32   #3
c0d3r
Senior Member
 
Регистрация: 13.12.2006
Адрес: ~msk
Сообщений: 277
По умолчанию

Большое спасибо.
Да, я путаюсь, поэтому завёл в нашей интранет-вики уже 2 доки по TYPO3.
Разжёвываю там себе переваренное, чтоб не забыть.
Ну, у меня не плагин, просто PHP-класс, попробую завтра TS-параметры.
2) пропускаю, мал ещё (а можно ткнуть в пример?)
3) интересует значение ID страницы в самом TS, а не в PHP
Код:
lib.items = USER
lib.items{
userFunc = tx_class->main
topic = переменная_c_ID_страницы
}
c0d3r вне форума   Ответить с цитированием
Старый 14.05.2007, 19:52   #4
void
Senior Member
 
Аватар для void
 
Регистрация: 14.03.2006
Адрес: Russia, Penza
Сообщений: 1,504
Отправить сообщение для void с помощью ICQ
По умолчанию

Если я правильно вас понимаю, вам нужно нечто типа
Код:
lib.items = USER
lib.items{
userFunc = tx_class->main
topic.data = page:id
}
PHP код:
class tx_class extends tslib_pibase{
 function 
main($cnt,$conf){
  
$topic $this->cObj->stdWrap($conf['topic'],$conf['topic.']);
  return 
$topic;
 }

__________________
TYPO3 FAQ
void вне форума   Ответить с цитированием
Старый 15.05.2007, 10:09   #5
c0d3r
Senior Member
 
Регистрация: 13.12.2006
Адрес: ~msk
Сообщений: 277
По умолчанию

Опять замечу, что речь идёт не о плагине, а о отдельном от TYPO3 классе.
PHP код:
class user_class {
 function 
test($topic){
...
  return 
$content;
 }

В метод test мне нужно передать параметр из TS.

Из Вашего примера выше я понял, что это возможно:
Цитата:
Сообщение от void Посмотреть сообщение
1) через TS-параметры, например
lib.items = USER
lib.items{
userFunc = tx_class->main
topic = 15
}
но в следующим Вашем ответе TS выглядит уже немного другим.

Пошёл пробовать.
Попробовал. Код topic = 15 через TS не катит.

Последний раз редактировалось c0d3r; 15.05.2007 в 10:34
c0d3r вне форума   Ответить с цитированием
Старый 15.05.2007, 13:15   #6
Pavel Antonov
Senior Member
 
Аватар для Pavel Antonov
 
Регистрация: 01.10.2004
Адрес: Россия, Москва
Сообщений: 1,204
Отправить сообщение для Pavel Antonov с помощью ICQ
По умолчанию

Цитата:
Сообщение от c0d3r Посмотреть сообщение
Опять замечу, что речь идёт не о плагине, а о отдельном от TYPO3 классе.
А какая разница?
__________________
Павел Антонов
Rich Media Development Ltd.
Блог: http://codeline.richmd.ru/
Pavel Antonov вне форума   Ответить с цитированием
Старый 15.05.2007, 13:22   #7
c0d3r
Senior Member
 
Регистрация: 13.12.2006
Адрес: ~msk
Сообщений: 277
По умолчанию

Может быть, это?
PHP код:
... extends tslib_pibase{... 
c0d3r вне форума   Ответить с цитированием
Старый 15.05.2007, 14:48   #8
void
Senior Member
 
Аватар для void
 
Регистрация: 14.03.2006
Адрес: Russia, Penza
Сообщений: 1,504
Отправить сообщение для void с помощью ICQ
По умолчанию

Да это не влияет, собственно. Всё что есть USER, может считаться плагином.
Неясно, почему не катит topic = 15 и чем вас не устраивает вариант topic.data = page:title? Можно вообще написать нечто вроде
Код:
lib.items = USER
lib.items{
  userFunc = tx_myclass->main
  topic = TEXT
  topic.data = page:title
  topic.wrap = <h1>|</h1>
}
PHP код:
class tx_myclass{
  function 
main($cnt,$conf){
      
$cobj t3lib_div::makeInstance('tslib_cObj');
      return 
$cobj->cObjGetSingle($conf['topic'],$conf['topic.']);
  }

Опишите лучше свою цель. Чего вы хотите-то?)
__________________
TYPO3 FAQ
void вне форума   Ответить с цитированием
Старый 15.05.2007, 15:29   #9
c0d3r
Senior Member
 
Регистрация: 13.12.2006
Адрес: ~msk
Сообщений: 277
По умолчанию

Спасибо, думаю, Ваш пример работоспособный. Но хотел я немного другого - передать входной параметр в userFunc и там работать с ним БЕЗ использования TYPO3-кода ($conf и т.д.). То есть TS устанавливает входной аргумент для userFunc, PHP берёт его и работает внутри метода - как c $topic.

PHP код:
function test($topic){
...
 
$content "Крутой " $topic;
 return 
$content;

Похоже, предполагается, что userFunc (плагин или не-плагин) принимает только 2 аргумента: $content и $conf. Про второй я уже понял, что передаётся в первом - ещё нет

Я хотел создать CMS-независимую либу, но всё это, похоже, идиллия
c0d3r вне форума   Ответить с цитированием
Старый 15.05.2007, 16:12   #10
Pavel Antonov
Senior Member
 
Аватар для Pavel Antonov
 
Регистрация: 01.10.2004
Адрес: Россия, Москва
Сообщений: 1,204
Отправить сообщение для Pavel Antonov с помощью ICQ
По умолчанию

Цитата:
Сообщение от c0d3r Посмотреть сообщение
Похоже, предполагается, что userFunc (плагин или не-плагин) принимает только 2 аргумента: $content и $conf. Про второй я уже понял, что передаётся в первом - ещё нет
$content - текуще содержимое буфера вывода. Обычно пустое для плагинов. RTFM!!!

Цитата:
Сообщение от c0d3r Посмотреть сообщение
Я хотел создать CMS-независимую либу, но всё это, похоже, идиллия
Либа, отдельно, плагин отдельно... В чем проблема то? Вам токое понятие как API, что нибудь говорит?
__________________
Павел Антонов
Rich Media Development Ltd.
Блог: http://codeline.richmd.ru/
Pavel Antonov вне форума   Ответить с цитированием
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB code is Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Передача параметров во flash filippoff Общие вопросы 5 18.02.2007 15:32
передача данных между двумя сайтами Melnichuk Общие вопросы 8 02.06.2006 14:15
Передача переменных между шаблонами Lato Sergey Общие вопросы 0 05.09.2005 11:16
Передача данных методом POST из одной формы в другую Юрий Общие вопросы 1 19.02.2004 20:01
Как реализовать передачу параметров для кода PHP ? Comwad Общие вопросы 1 20.11.2003 13:36


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


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

Хостинг и техническая поддержка: TYPO3 Лаборатория