【问题标题】:How to use a typo3 constant in an href?如何在href中使用typo3常量?
【发布时间】:2018-03-11 22:10:47
【问题描述】:

为方便起见,我可以在模板中将页面的主 url 定义为常量:tx_dti.settings.url = https:/someserver/

现在我喜欢在我的文本元素中使用这个常量来链接一个内部页面,例如:
<a href="{tx_dti.settings.url}?id=13" class="internal-link">Contact Form</a>

很遗憾,我上面提到的方法不起作用。
用常量替换服务器的正确语法是什么?
目标是我只想在从开发服务器转移到生产服务器时更改常量。

【问题讨论】:

    标签: typo3


    【解决方案1】:

    一般:
    您不能在打字稿模板(常量和设置)之外使用打字稿常量。如果您想在其他上下文中使用打字稿常量的值,则需要传递该值。

    如果你想在流体中使用常量,你需要将值传递给流体变量。

    temp.content = FLUIDTEMPLATE
    temp.content {
        template = ...
        variables {
            domain = TEXT
            domain.value = {$myTSconstant}
            :
        }
    }
    

    settings { 
        domain = TEXT
        domain.value = {$myTSconstant}
        :
    }
    

    如果您想在内容元素的数据字段中使用常量,您可以使用标记并将标记替换为印刷文字作为渲染的最后一步。

    "<p>This is my text and here I use a marker: __MYMARKER__</p>"
    

    对应的排版:

    page {
        :
    
        stdWrap.replacement {
             1.search = __MYMARKER__
             1.replace = {$myTSconstant}
        }
    }
    

    注意:
    始终在大括号内的名称前使用带有 $ 的 TS 常量。
    不要将它与流体中的变量用法混淆(没有$)。

    关于您的问题:
    正如 Riccardo 所说:不要在链接中使用常量,甚至:不要手动构建链接。如果您确实需要在 url 中使用您的域,请使用 config.absRefPrefix 设置自动执行它(最好是 config.baseURL

    【讨论】:

    • “不要手动建立链接”,好的。因此,如果我有一个内容页面,例如用户想要指向一个联系表单 -> myserver/?id=13" class="internal-link">联系表单 我将如何构建它,我想遵循最佳实践规则。那是使用上面的 config.* vars 吗?如果是这样,上面给出的href会是什么样子?如果这太基本了,我很乐意获得一个可以帮助我自己的链接。
    • 在可以使用链接的内容字段中,您可以使用 RTE(富文本编辑器)选项来链接标记的文本。这将启动一个链接向导,您可以在其中选择链接目标。此向导将在内容中构建一个 a-tag,但它是通过自动化逻辑完成的,并使用定义的语法在之后自动计算。如果您已配置 config.absRefPrefix 或使用 realurl,也会考虑此链接。
    • 回顾一下:当我使用 RTE 的链接向导时,它当前会生成一个链接,如 devserver:8081/?id=13" class="internal-link" title="Opens internal link in当前窗口“文本”。在我的模板中,我设置了: tx_dti.settings.url = https:/someserver/ 由于未反映此设置,我假设我需要在某处设置 config.baseURL = tx_dti.settings.url ?
    • 如果 TYPO3 呈现一个链接,它会考虑它的每个活动配置。其中包括配置值(主要是用于 URL 的 absRefPrefixbaseURL 以及用于自动目标参数的 intTargetextTarget 之类的配置,以及用于将 URL 修改为人类可读格式的 realurl 之类的扩展)。如果您修改生成的语法或手动创建链接,这可能不会被视为 TYPO3 可能无法检测到要处理的链接。
    【解决方案2】:

    我猜你可以使用config.absRefPrefixconfig.baseURL(见https://docs.typo3.org/typo3cms/TyposcriptReference/Setup/Config/

    您可以在 TypoScript 中设置常量:

    tx_dti.settings.url = http://myserver
    

    然后在 TypoScript 设置中:

    config.baseURL = {$tx_dti.settings.url}
    

    config.absRefPrefix = {$tx_dti.settings.url}
    

    这就足够了还是我误解了你的要求?

    【讨论】:

    • 假设我已经设置了上面提到的配置变量。我将如何在我的 html 代码中使用它?这个网址中的相对链接会是什么样子? myserver/id=13" class="internal-link">联系表格
    • 如果我们谈论的是使用富文本编辑器(或 CKEditor,如果您使用 TYPO3 8.7)添加的某些文本中的链接,正如 Bernd Wilke 在之前的请求中所说,您必须选择带有向导中的表单,链接语法将自动调整(包括将自动添加的 absRefPrefix 或 baseURL。
    猜你喜欢
    • 2017-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-19
    相关资源
    最近更新 更多