Я хочу включить вывод php-скрипта в typoscript, используя lib-объект …
Я с треском провалился 🙂
Я объявляю объект lib следующим образом:
TS:
includeLibs.bannerLib = fileadmin/banner/banner.php
lib.banner = USER
lib.banner{
userFunc = user_banner->user_showBanner
}
Затем мне нужно использовать переменную (?), Чтобы включить это в остальную часть TS:
{f:cObject(typoscriptObjectPath:lib.banner)}
Это наиболее вероятно, где это терпит неудачу. Я не использую жидкость, но я думаю, что f: cObject относится к шаблону жидкости?
Вот (очень простой) php-скрипт, который я использую:
class user_banner{
public $cObj;
/**
* Scans the files in the images folder
* for images and returns it, if present
*/
public function user_showBanner($content, $conf){
$images = scandir('images');
return implode(',', $images);
}
}
Что я делаю неправильно???
Я использую Typo3 4.6.x
Страница была сделана каким-то треком T3, и весь контент обернут в некоторый lib-объект, а затем визуализирован с какой-то библиотекой (я думаю). Вот как это выглядит (частично):
lib{
markupBodyColumns {
1 >
2 {
value (
<div id="col2" class="col">
//here I try to insert my banner
<span class="bannerClass">{$lib.banner}</span>
<div class="pageTitle">
{renderLib:markupBodyPageTitle}
</div>
<div class="contentWraper">
<div class="content">
{renderLib:markupBody}
</div>
{renderLib:markupFooter}
</div>
</div>
)
}
}
[РЕДАКТИРОВАТЬ 2]
Хорошо, это сводит меня с ума … это действительно делает …
Первое исправление: я использую Typo3 4.6.x не так, как указано вначале 4.7.x
Я пытаюсь включить userFunc в typoscript, но он отказывается что-либо выкладывать.
PHP-функция (класс) сверху остается прежней. Функция в классе не вызывается вообще.
В опечатке я попробовал:
1-я попытка:
includeLibs.user_banner = fileadmin/banner/user_banner.php
lib.myBanner = USER_INT
lib.myBanner{
userFunc = user_banner->user_showBanner
}
page.100000 < lib.myBanner
Нет выхода вообще
2-я попытка:
page = PAGE
page.200000 = USER_INT
page.200000.userFunc = user_banner->user_showBanner
опять — не выводится …
Что, черт возьми, я делаю не так ???
Если вы не используете Fluid на своем веб-сайте, это не даст никакого результата, потому что
{f:cObject(typoscriptObjectPath:'lib.banner')}
является встроенной нотацией Fluid ViewHelper, которая может использоваться только в шаблонах Fluid.
С вашим TypoScript и userFunc вы получите возвращаемое значение showBanner, доступное в lib.banner. Вам просто нужно отобразить это где-то на сайте.
Если у вас есть объект PAGE на вашем веб-сайте, вы можете добавить его на свою страницу следующим образом:
page.20141031 < lib.banner
(Где 20141031 — это уникальный номер, который еще не используется для другой части вашего объекта PAGE.)
Других решений пока нет …