вот проблема - здесь поиск работает не так как хотелось бы - выдает записи - а ссылки на само обсуждение нет
Было обсуждение по теме на этом форуме - найти не могу
Привожу то что у меня было скачано - если кто объяснит как просмотреть весь thread - буду благодарен
PHP variables in TS stdWrap
Lato Sergey
Коллеги, перерыл все, что только можно и никак не могу решить передачу переменных из PHP в TS.
Существует меню, схема которого описана ниже.
Требуется назначить переменную $menu_title из метода user_SectionMenu->write.
Каким образом можно это сделать?
temp.page_menu = HMENU
temp.page_menu {
special = userfunction
special.userFunc = user_SectionMenu->write
stdWrap.wrap (
<div>
{$menu_title}
<br>|
</div>
)
1 = TMENU
1 {
noBlur = 1
NO = 1
NO.linkWrap = <div>|</div>
}
}
12-09-05 15:26:04
Андрей Шварцкопф
Нет такого понятия - передача переменных из PHP в TS, это нужно делать как то по-другому. Что именно ты хочешь передать?
12-09-05 15:33:15
Lato Sergey
Предполагается для каждого меню делать свой заголовок, который назначается через PHP.
12-09-05 15:43:08
Андрей Шварцкопф
1) Почему не делать этого внутри конфигурации TYPO3 или сохранять в заголовке какой-либо страницы, например в поле $GLOBALS['TSFE']->page['subttitle']?
2) почему не делать этого с помощью дополнительной функции, например
stdWrap.prepend = USER
stdWrap.prepend.userFunc = user_SectionMenu->write
Принцип работы должен быть такой - работай вместе с системой и используй ее преимущества по максимуму, а не работай против нее. Т.е. свести количество внешних блоков на минимум. Конечно, иногда это не удается. Я все-таки подозреваю, что у тебя какая-то концепциональная ошибка.
12-09-05 15:51:25
Lato Sergey
1) Хорошо. Но как значение этой переменной передать в
stdWrap.wrap (
<div>
{$menu_title}
<br>|
</div>
)
2) ищу пример реализации
12-09-05 15:59:52
Андрей Шварцкопф
1)
stdWrap.prepend = TEXT
stdWrap.prepend.data = page:subtitle
stdWrap.prepend.wrap = <div>|<br>
stdWrap.outerWrap = |</div>
12-09-05 16:08:49
Lato Sergey
1) Хорошо, даже если явно указать GLOBALS['TSFE']->page['subttitle'] в подгружаемом методе:
special = userfunction
special.userFunc = user_SectionMenu->write
то переменная назначается.
но ведь дробить общий шаблон stdWrap.wrap на несколько частей не хорошо - малоли таких переменных будет несколько?
скажем,
stdWrap.wrap (
<div>
{$menu_super_title} : {$menu_title}
<br>
{$menu_href}
<br>|
</div>
)
Можно конечно еще дробить код. Но это очень некрасиво.
Спасибо за быстрый ответ.
12-09-05 16:14:36
Андрей Шварцкопф
"Хорошо, даже если явно указать GLOBALS['TSFE']->page['subttitle'] в подгружаемом методе"
Да нет, я имел в виду реальную страницу в бэкенде. Открываешь страницу, вводишь там текст в поле subtitle. Он выводится моим кодом над меню. А почему не дробить stdWrap? Я теперь совсем не понимаю, что за menu_title ты там выводишь. Какая вообще цель? Что это за заголовки? Откуда они появляются изначально?
12-09-05 16:25:26
Lato Sergey
Приведем простой пример:
<a href="news.html">НОВОСТИ</a> сайта SITE.RU
<ul>
<li>новость 1</li>
<li>новость 2</li>
</ul>
TS:
temp.page_menu = HMENU
temp.page_menu {
special = userfunction
special.userFunc = user_SectionMenu->write
stdWrap.wrap (
<a href="{$MENU_HREF}">{$MENU_HEADER}</a> сайта SITE.RU
<ul>|</ul>
)
1 = TMENU
1.noBlur = 1
1.NO = 1
1.NO.linkWrap = <li> |</li>
1.NO.doNotLinkIt=1
}
Можно представить, что <li>новость 1</li> берется из БД. Разумеется, что массив меню мы дописываем с помощью user_SectionMenu->write
Но встает вопрос, как формировать {$MENU_HREF} и {$MENU_HEADER}? Если учесть, что $MENU_HEADER может браться из тойже базы динамически/
Благодарю.
12-09-05 16:33:54
Андрей Шварцкопф
Тогда мне кажется, что объект HMENU сюда не подходит. HMENU подходит оптимально только к страницам. На все остальное лучше брать или CONTENT или же программировать полностью свой плагин, который выдает готовый список с ссылками. А что, tt_news не подходит?
13-09-05 07:02:31
Lato Sergey
Это довольно упрощеный вариант, т.к. структура меню изначально повторяет структуру разделов на сайте, поэтому использование HMENU необходимо.
13-09-05 08:26:45
Lato Sergey
Пришлось пойти обходным путем:
TS =====================
temp.page_menu = HMENU
temp.page_menu {
special = userfunction
special.wrap = <a href="{$MENU_HREF}">{$MENU_HEADER}</a> сайта SITE.RU
special.userFunc = user_SectionMenu->write
stdWrap.prepend = TEXT
stdWrap.prepend.data = page:img_menu_title
stdWrap.prepend.wrap = |<ul>
stdWrap.outerWrap = |</ul>
...
}
PHP=====================
class user_SectionMenu {
function set_menu_title($title, $url, $template) {
$template = str_replace('{$MENU_HREF}', $title, $template);
$template = str_replace('{$MENU_HEADER}', $href, $template);
$GLOBALS['TSFE']->page['img_menu_title'] = $template;
return true;
}
function write($content, $conf) {
...
$this->set_menu_title($some_title, $some_url, $conf[wrap]);
...
}
}