userFunc在TYPO3 4.5中无效

时间:2015-06-22 22:58:12

标签: typoscript typo3-4.5

我一直在与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?

2 个答案:

答案 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形式来注册你的方法。

请记住,可能的类名受到限制。