【问题标题】:How to add external JavaScript or CSS files to our Tridion page?如何将外部 JavaScript 或 CSS 文件添加到我们的 Tridion 页面?
【发布时间】:2026-02-04 15:15:01
【问题描述】:

我有一个外部 JavaScript 和一个 CSS 文件。我不知道如何将此文件添加到我的页面。我正在为 CT 和 PT 使用 DWT TBB

我暂时在我的页面 TBB 中编写内部 CSS 以获取输出。但我不知道如何实现 JavaScript。有人可以帮助我吗?

我应该将这些文件作为组件并将它们呈现在我的页面上吗?这是正确的方法吗?如果是,请告诉我要遵循的步骤。

【问题讨论】:

    标签: tridion tridion-2011


    【解决方案1】:

    这是一个广泛讨论的话题,我将尝试概述各种可能性:

    1. 将 CSS 和 JS 创建为二进制组件,从 DWT 模板链接到这些组件
    2. 将 CSS 和 JS 创建为二进制组件,作为 DCP 发布到服务器,通过 url 链接到二进制
    3. 将 CSS 和 JS 创建为文本组件,放置在页面中,发布到服务器,将 url 链接到页面
    4. 将 CSS 和 JS 复制到交付服务器(不是 Tridion),通过 url 链接到 css 和 js

    选项 #1 是最简单的,但有很多缺点。

    • 使用您需要的 CSS 和 JS 文件在 Tridion 中创建多媒体组件。
    • 记下 URI,然后在 DWT 中使用类似的内容:
    <link href="tcm:27-2762" rel="stylesheet" type="text/css" />
    <script src="tcm:27-2763" type="text/javascript"></script>
    

    如果您的模板使用默认完成操作构建块,那么 Tridion 将解析对这些二进制文件的引用并将其与您的页面一起发布。 这样做的副作用是这些二进制文件将与使用相同模板的所有页面一起发布。

    选项 #2 要求您编写一个动态组件模板,可能需​​要一些代码来确定文件发布到哪里。这更符合我通常实施的方式,但目前我不建议您这样做。随着您对 Tridion 知识的了解,您会感到很自在,可以自己完成这项工作。使用此选项,您可以将 CSS/JS 文件发布到给定位置,然后在 DWT 中使用引用,而不是使用 TCM URI(如上),而是使用文件发布到的 URL。

    选项 #3 要求您创建“代码组件和模板”,这意味着只有一个大文本字段(不是富文本)的简单架构,在其中复制/粘贴 CSS 或 JS 的内容。然后编写一个简单的组件模板,它将按原样输出内容。类似于@@Fields.Code@@。 最后你用一个 DW 模板创建了 2 个页面模板(一个扩展名为 .js,另一个扩展名为 .css):

    <!-- TemplateBeginRepeat name="Components" -->
    @@RenderComponentPresentation()@@
    <!-- TemplateEndRepeat -->
    

    最后,同样重要的是(有很多方法可以给这只猫换皮),您可以直接将这些 CSS/JS 文件放在您的网络服务器上,然后在您的 DWT 中添加一个链接,指向这些文件可用的 URL。

    希望这能给你一些选择。请记住,应在页面模板级别(最好在页面的 &lt;head&gt; 部分)而不是在组件模板中包含 CSS/JS。

    【讨论】:

    • 非常感谢您,先生,我得到了我需要的所有信息,甚至更多,再次感谢您
    • 防止与其中一些技术相关的过度发布的一种常见方法是对 head 元素中的 CSS 和 JS 链接使用服务器端包含。
    • 感谢您的精彩回答
    【解决方案2】:

    Building Blocks 中有一系列很棒的文章解释了这一点

    查看以下链接:

    1. http://blog.building-blocks.com/publishing-code-files-from-sdl-tridion
    2. http://blog.building-blocks.com/css-in-sdl-tridion-part-2-handling-image-references
    3. http://blog.building-blocks.com/tridion-tbb-automatically-minify-css-javascript-on-publish

    如果您想让事情变得非常简单(但我不建议这样做,因为它会在您每次发布页面时重新发布您的 CSS 或 JS)。您可以将 CSS 存储为多媒体组件(并记下其 URI)并在 DWT 页面布局中像这样引用它:

    <link rel="stylesheet" href="tcm:1-2-16" />
    
        or
    
    <script type="text/javascript" src="tcm:1-2-16"></script>
    

    然后使用默认完成操作确保二进制文件已发布并且链接已解析。

    【讨论】:

    • 他们使用 c# TBBs 这样做,我们不能在 DWT TBB 中有任何其他选项吗?
    • 我建议遵循其中一种链接方法,但我已经用另一种方法更新了我的答案。还请考虑通过area51.stackexchange.com/proposals/38335/… 提交 SDL Tridion 提案,我们确实需要整个 Tridion 开发社区来帮助我们创建一个出色的问答平台
    最近更新 更多