如何在前端用户表单提交记录存在时修改Typoscript的select语句
实现方案
你可以通过 TypoScript 的numRows统计指定条件下的表单提交记录行数,来判断当前用户是否有提交记录,再根据判断结果动态拼接内容查询的过滤条件,具体实现步骤如下:
1. 先定义用户提交记录判断标记
首先定义一个全局通用的判断对象,用来检测当前登录用户是否存在对应的表单提交记录:
# 判断标记返回值:存在提交记录返回1,无记录返回0 lib.userHasSubmitted = USER_INT lib.userHasSubmitted { select { # 替换为你存储表单提交记录的文件夹PID pidInRoot = 1 # 替换为你实际的表单提交记录表名 from = tx_form_submissions selectFields = uid # 替换为表中存储提交用户ID的字段名,若用user_name查询就替换为对应用户名字段 where = fe_user_id = ###USER_ID### markers { # 读取当前登录前端用户的uid,若用user_name查询就改为TSFE:fe_user|user|username USER_ID.data = TSFE:fe_user|user|uid } max = 1 } # 统计匹配记录的行数 stdWrap.numRows = 1 }
2. 动态拼接内容过滤条件
修改你原有的内容查询逻辑,根据上面的判断标记动态追加排除uid=883的条件:
page.10.variables.CONTENT < styles.content.get page.10.variables.CONTENT { select { where = colPos=0 # 动态追加排除条件 where.append = TEXT where.append { value = AND uid != 883 if { value = 0 equals < lib.userHasSubmitted negate = 1 } } } }
注意事项
- 代码中的表名、字段名、存储PID需要根据你实际的业务数据表配置修改,否则查询会不生效
- 使用
USER_INT是为了避免缓存影响判断结果,如果你站点配置了全页缓存,需要对应调整该对象的缓存规则
内容的提问来源于stack exchange,提问作者user3852729
相关产品推荐
相关产品推荐

