【问题标题】:TYPO3 Manipulate Content Elements before renderingTYPO3 在渲染前操作内容元素
【发布时间】:2017-05-05 17:58:07
【问题描述】:

我们在 tt_contents 以及 TCA 中的所有内容元素中添加了一个新字段。根据该字段中的值,我们想要控制是否应该渲染元素。

该行为类似于 FE 用户的内容元素访问控制。

我正在寻找一个 Hook 或如何解决这个问题的想法。不幸的是,我在 felogin 中找不到任何有用的东西,我也尝试了以下 Hooks。

contentPostProc
render-preProcess

系统信息:

  • TYPO3:6.2.19
  • 通量:7.2.3
  • 流体页面:3.3.1

如果有人能给我指个方向,那就太好了,谢谢。

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

更新
由于有多种解决方案,我尝试了很多,但以getRecordOverlay 挂钩结束。在必须使用的接口PageRepositoryGetRecordOverlayHookInterface 中,您可以找到一种用于 pre-hook 和 post-hook 的方法。

【问题讨论】:

    标签: typo3 rendering hook typo3-6.2.x


    【解决方案1】:

    【讨论】:

    • 这听起来很有希望,但我只能找到一个 hook_checkEnableFields 钩子,它只用于页面,似乎在我的错字3 中根本没有触发 -.-
    • 实际使用 addEnableColumns 钩子对我来说似乎很有希望,不幸的是,这似乎不允许连接到不同的表。
    • 您对使用postUserFuncstdWrap Hook 完成这项任务有何想法?
    • 当然,连接在 where 子句部分不起作用(这是您可以使用此挂钩修改的部分),但子选择会起作用。但要说更多,您需要更具体地提出您的问题。
    【解决方案2】:

    对于旧的 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
    

    【讨论】:

    • 目前,我无法想象如何实施此解决方案。由于 colPos,我已经看到左右修改了 where。如果我用我的检查覆盖 where 并为 mm 表做一个连接,我猜它会弄乱系统。
    • 在typo3 slack 中讨论了一下这个问题后,我知道如何处理它,但是因为我使用vhs 进行渲染,所以这不起作用。如果我将自己的视图助手放入而不是使用&lt;v:content.render column="0"/&gt;,实际上会起作用
    猜你喜欢
    • 1970-01-01
    • 2020-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-05
    相关资源
    最近更新 更多