实际上,当您合并诸如 的字段时,存在不一致的 TBS 行为(版本 3.10.1 及之前)[onload.nonexistant;ifempty=display_me]
,假设您$nonexistant
在全局 PHP 范围内或$TBS->VarRef
范围内都没有变量。
- 默认情况下,此类字段在模板中显示 TBS 错误消息:« item 'nonexistant' is not an existing key in the array »。
- 如果您
noerr
在字段中添加参数,则它会正确合并并替换为“display_me”。
- 但是,如果您不使用参数
noerr
并将选项 'noerr' 设置为 true,则不会显示错误,但该字段根本不会合并。
最后一点的预期行为是该字段应替换为“display_me”。就像使用 MergeField() 时一样。
所以这是一种错误,将在下一个 TBS 版本中修复。
您可以通过替换所有补丁来修补当前的 TBS 版本 (3.10.1)
if (isset($Loc->PrmLst['noerr'])) {
和
if ( $this->NoErr || isset($Loc->PrmLst['noerr']) ) {
在功能meth_Merge_AutoVar()
上。他们是其中的 3 个。
在您的情况下,另一个解决方案只是在您要修复的所有字段中添加参数“noerr”。