TYPO3渲染之前操作内容元素

3
我们在tt_contents表中添加了一个新字段,并且在TCA中为所有内容元素添加了该字段。根据该字段的值,我们希望控制元素是否应该呈现。
这种行为类似于FE用户的内容元素访问控制。
我正在寻找一个钩子或解决办法。不幸的是,在felogin中我没有找到任何有用的东西,而我也尝试过以下钩子。
contentPostProc
render-preProcess

系统信息:

  • TYPO3:6.2.19
  • Flux:7.2.3
  • Fluidpages:3.3.1

如果有人能指点一下方向,那就太棒了。谢谢。

更新:
必须从tt_contents表中的新字段更改为mm关系表。这使得它更加复杂,因为必须连接表。

更新:
由于有几种解决方案,我尝试了很多,但最终选择了getRecordOverlay挂钩。在接口PageRepositoryGetRecordOverlayHookInterface中,您会找到一个用于前置和后置挂钩的方法。

2个回答

3

听起来非常有希望,但是我只能找到一个hook_checkEnableFields钩子,它仅适用于页面,并且似乎在我的typo3中根本没有被触发。-.- - Tobias Hartmann
实际上,对我来说使用addEnableColumns钩子似乎非常有前途,但不幸的是,这似乎不允许连接到不同的表。 - Tobias Hartmann
你对于在这个任务中使用 postUserFunc 或者 stdWrap Hook 有什么想法? - Tobias Hartmann
当然,在where子句部分(这是您可以使用此钩子修改的部分)中,连接不起作用,但子查询可以工作。但要说得更多,您需要更具体地提出问题。 - helhum

1

对于旧版TYPO3 - 我认为您正在使用css_styled_content。您可以通过自己的扩展和一些TCA代码(我认为您知道如何插入此代码)向tt_content添加一个新字段(例如复选框)。 之后,您可以扩展styles.content.get - 类似于:

styles.content.get = CONTENT
styles.content.get {
    table = tt_content
    select.orderBy = sorting
    select.where = colPos=0 and yourfield=1
    select.languageField = sys_language_uid
}
lib.yourcontent < styles.content.get

目前,我无法想象如何实现这个解决方案。我看到了where因为colPos而在左右两侧被修改的情况。如果我用我的检查覆盖where,并且对mm表进行连接,那么它会破坏系统,我想。 - Tobias Hartmann
在 TYPO3 Slack 上讨论了一下后,我知道该如何处理了。但是,由于我使用 VHS 进行渲染,所以这种处理方式不起作用。实际上,如果我使用自己的视图助手而不是使用 <v:content.render column="0"/>,那么就可以解决问题。 - Tobias Hartmann

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接