You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MODX Tickets预览评论时强制显示表单输入名称而非用户全名的方法

解决MODX Tickets已授权用户预览评论显示个人资料全名的问题

嘿,刚好对MODX Tickets的这类逻辑有点经验,我来帮你搞定这个问题!

问题根源很明确:MODX Tickets默认对已登录用户,会优先调用他们个人资料里的全名来填充预览的name字段,而不是你表单里实际输入的内容。要修正这个,我们可以从几个方向入手:

1. 调整预览模板/Chunk的占位符取值逻辑

首先找到负责评论预览的模板Chunk(通常可能命名为ticketPreview或者类似的名称),定位到你提到的那行输入框代码。默认的[[+name]]占位符可能是从用户资料里拉取的,我们要改成优先取表单提交的name参数:

你可以把原来的代码改成这样:

<input type="text" class="text form-control" name="name" id="comment-name" value="[[!+_POST.name:default=`[[+user.fullname]]`]]" placeholder="Your name"/>

这里用[[!+_POST.name]]直接获取表单提交的名称值,如果提交的值为空(比如用户没输入),再 fallback 到用户的个人资料全名——当然如果你想完全忽略用户资料,直接去掉:default=那部分就行。

2. 修改处理预览的Snippet逻辑

如果模板层面的调整不生效,那就要去看处理预览的后端Snippet(比如ticketPreviewSnippet之类的)。找到赋值name占位符的地方,强制优先读取请求中的name参数:

在Snippet里添加或修改这段代码:

// 优先获取表单提交的name值
$submittedName = $modx->request->getParameter('name', 'POST');

// 赋值给模板变量,只有当提交值为空时才用用户资料
$tplVars['name'] = !empty($submittedName) ? $submittedName : $modx->user->get('fullname');

这样不管用户有没有登录,只要表单里输入了名称,预览就会显示输入的内容;如果没输入,才会用个人资料的名字(你也可以把后面的fallback去掉,直接留空或者显示占位符)。

3. 检查MODX Tickets的后台设置

有些版本的MODX Tickets可能自带“自动填充已登录用户信息”的开关,你可以去插件的后台设置里找找看,如果有这个选项,直接关掉它,系统就不会自动用用户资料填充预览字段了,只会保留表单里输入的内容。

测试验证

修改完之后记得测试两种场景:

  • 已登录用户:输入一个和个人资料不同的名称,预览时应该显示你输入的内容
  • 未登录用户:正常输入名称,预览显示输入的内容(保持原有逻辑不变)

内容的提问来源于stack exchange,提问作者enigmaster90

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 03:55:32