Typo3 8.7 + DirectMail 5.3:&type=99纯文本邮件渲染异常求助
针对你遇到的HTML版本正常但&type=99纯文本版本只显示默认模板内容的问题,结合TYPO3 8.7和DirectMail 5.3的特性,给你几个针对性的解决步骤:
第一步:先排查前端纯文本渲染是否正常
先直接访问你的新闻通讯页面URL并加上&type=99,如果此时还是显示默认的「Hello. This is default template...」文本,说明问题出在前端页面的TS配置,而非DirectMail本身。这时候需要调整页面的typeNum=99的配置,确保它会渲染页面的内容元素,而不是加载默认模板。你可以在模板的setup.ts里添加或修改以下配置:
[globalVar = GP:type = 99] page = PAGE page.typeNum = 99 # 加载页面的内容元素 page.10 < styles.content.get # 禁用所有HTML头部代码 page.config.disableAllHeaderCode = 1 # 设置纯文本的Content-Type page.config.additionalHeaders = Content-Type: text/plain; charset=utf-8 [global]第二步:为第三方FCE添加纯文本渲染逻辑
你使用的是提供商扩展的FCE,这类扩展通常只提供HTML渲染的逻辑,不会默认处理纯文本场景。你需要为该FCE添加针对type=99的TS渲染规则,提取FCE里的文本内容并去除HTML标签。找到你使用的FCE的内容元素类型key(比如
tx_yourext_fce_newsletter),然后在setup.ts里添加:[globalVar = GP:type = 99] tt_content.tx_yourext_fce_newsletter.20.renderObj = TEXT tt_content.tx_yourext_fce_newsletter.20.renderObj { # 优先读取bodytext字段,没有的话用header value.data = field:bodytext // field:header # 去除所有HTML标签 stripHtml = 1 # 可以添加换行符优化纯文本格式 wrap = |\n\n } [global]替换
tx_yourext_fce_newsletter为你实际使用的FCE类型key即可。第三步:排除simplegrids的布局干扰
simplegrids的布局容器在纯文本里是不需要的,反而会导致内容被隐藏或者输出无效的文本。你可以在type=99的条件下禁用simplegrids的渲染:[globalVar = GP:type = 99] lib.simplegrids = TEXT lib.simplegrids.value = [global]这样就能忽略布局容器,只保留实际的内容文本。
第四步:检查DirectMail的纯文本模板配置
确保DirectMail使用的纯文本模板是基于前端的type=99页面,而不是硬编码的默认模板。在DirectMail的后台设置里,找到「纯文本模板」相关选项,确认选择的是「从页面获取」或者关联了正确的typeNum=99的页面模板。
完成以上步骤后,先刷新前端的&type=99页面,确认纯文本内容正常显示,再测试DirectMail的发送预览,应该就能正确渲染FCE的纯文本内容了。
内容的提问来源于stack exchange,提问作者Swissdude

