0

我已经与 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,当我重新加载时,文本“加载:函数”仍然存在。

换句话说,对于 6.2 版,它可以按预期工作,但在 4.5 版中则不行。我能找到的所有信息都表明它应该在 4.5 中工作,那么我错过了什么?
为了在 4.5 中启用 userFunc,是否需要进行一些配置?

4

2 回答 2

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 版中取消。

于 2015-06-23T19:49:08.723 回答
0

这会调用 PHP 函数或类中的方法。如果您想合并自己的数据处理或内容,这将非常有用。 http://docs.typo3.org/typo3cms/TyposcriptReference/ContentObjects/UserAndUserInt/Index.html

这意味着你必须将你的函数放在一个类中,确保这个类是可自动加载的(naming convention)并使用表单class->method来注册你的方法。

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

于 2015-06-23T09:01:33.037 回答