我一直在与USER和USER_INT挣扎了很长一段时间。起初我以为我的问题与TemplaVoila有关,但最后我又恢复了TYPO3版本4.5.40的干净安装,问题仍然存在。
为了测试它我已经进行了4.5.40版的新安装 我的模板设置如下所示:
includeLibs.beechgroveTest = fileadmin/php/test.php
page = PAGE
page {
10 = USER
10 {
userFunc = getBeechgroveTest
}
}
在fileadmin / php / test.php中我有这段代码:
<?php
function getBeechgroveTest($content, $conf) {
return "func";
}
echo "Load: ";
?>
在页面模块中,我添加了标准页面的快捷方式。标准页面没有内容元素 除此之外,自安装以来没有进行任何更改。
当我加载网站时,我看到文本'加载:' 如果我重新加载网站,那么文本就会消失 如果我将USER更改为USER_INT,则当我重新加载网站时,文本仍然存在 这告诉我USER和USER_INT被识别,但似乎忽略了userFunc。
我使用6.2.13版本的干净安装进行了相同的测试 但在这里我得到了文本'Load:func' 当我重新加载它改为'func'。 如果我使用USER_INT,当我重新加载时,文本'Load:func'仍然存在。
换句话说,版本6.2它按预期工作,但不是4.5版本。我能找到的所有信息表明它应该在4.5中工作,所以我错过了什么? 是否需要进行一些配置才能在4.5中启用userFunc?
答案 0 :(得分:1)
在此链接中找到了解决方案: http://docs.typo3.org/typo3cms/TyposcriptReference/DataTypes/Functionname/Index.html
它声明函数名称必须以'user_'开头。
因此,以下代码按预期工作:
模板:
includeLibs.beechgroveTest = fileadmin/php/test.php
page = PAGE
page {
10 = USER
10 {
userFunc = user_getBeechgroveTest
}
}
PHP:
<?php
function user_getBeechgroveTest($content, $conf) {
return "func";
}
echo "Load: ";
?>
显然,这个限制已在版本6.2中取消。
答案 1 :(得分:0)
这可以调用PHP函数或类中的方法。如果要合并自己的数据处理或内容,这非常有用。 http://docs.typo3.org/typo3cms/TyposcriptReference/ContentObjects/UserAndUserInt/Index.html
这意味着你必须将你的函数放在一个类中,确保这个类是可自动加载的(naming convention
)并使用class->method
形式来注册你的方法。
请记住,可能的类名受到限制。