Typo3:将USER_INT与 HMENU 的 special.value 一起使用



我只是试图在page.typoscript文件中使用PHP代码以编程方式计算一个值。这就是我所做的:

dataProcessing {
1010 = TYPO3CMSFrontendDataProcessingMenuProcessor
1010 {
levels = 2
special = directory
special.value = USER_INT
special.value {
userFunc = VendorExtensionUtilsNavigationBarUtils->getPlatformRootPid
}
as = menuMain
}
... 
}

这个方法叫做

public function getPlatformRootPid(): int
{
return 1;
}

当我加载menuMain为空的任何页面时。命名空间正确。此外,我还使用了这样的方法来计算同一个page.typoscript文件中的其他一些值,它们都能工作。

当将该值设置为special.value = 1时,它将按预期工作。

MenuProcessor(即HMENU(的special.value和USER_INT是否有问题?它们在某种程度上是不相容的吗?还是我错过了别的东西?

提前感谢您!

我认为您错过了类型。

special.value需要一个值,该值可能会被.stdWrap函数修改。

您试图将属性修改为对象,但这是不可行的
您分配了值(字符串(USER_INT和stdWrap函数userFunc,但该函数不存在。

如果要将对象用于某个值,则需要使用.cObject。所以你的解决方案可能是:

1010 {
levels = 2
special = directory
special.value.cObject = USER_INT
special.value.cObject {
userFunc = VendorExtensionUtilsNavigationBarUtils->getPlatformRootPid
}
as = menuMain
}

最后,我找到了一种方法:

1010 { 
levels = 2
special = directory
special.value.postUserFunc = VendorExtensionUtilsNavigationBarUtils->getPlatformRootPid
as = menuMain 
}

实际上,它实现了我想要的,通过调用PHP方法以编程方式设置该值。

最新更新