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

如何在前端用户表单提交记录存在时修改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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 21:27:04