【问题标题】:Orchard and editing page - adding script果园和编辑页面 - 添加脚本
【发布时间】:2025-12-03 01:25:02
【问题描述】:

我可以通过仪表板将脚本添加到页面(通过将页面内容项编辑为html)。脚本已添加到页面并进行评估,但为时过早 - 尚未加载任何脚本(例如,jQuery)。

我不想将脚本添加到Layout,因为为所有页面添加此脚本没有意义。

有没有办法通过仪表板将脚本添加到单个页面的内容中,以便对其进行正确评估?

或者我应该创建一个包含特殊内容部分的单独模块(以包含视图/形状的适当脚本)并将该部分添加到自定义 ContentType(还包含 BodyPart 和其他内容,例如 @987654325 @ 内容项)?

或者我应该以交互部分是小部件并且不应该在Page Content Item 中编辑的方式分隔整个内容?

【问题讨论】:

  • 您尝试过 Vandelay Industries 吗?

标签: orchardcms


【解决方案1】:

你可以使用 Script.Foot() 扩展方法吗?

@using(Script.Foot()) {

... }

Using jQuery from Orchard module page

【讨论】:

    【解决方案2】:

    您可以将脚本文件添加到 html 内容的顶部,如下所示:

    <p>
    <script type="text/javascript" src="/*path of the file*/">// <![CDATA[
    
    // ]]></script>
    </p>
    

    添加步骤:仪表板->内容->打开特定页面->Html源编辑器->在顶部添加上面的脚本和你的脚本文件路径。

    【讨论】:

    • 是的,但就像我提到的 - 脚本被评估为早期。大部分脚本都包含在脚中,所以我可以使用它们。
    • @pwas 页脚内容是放在页面中还是在小部件中单独提供?
    • @pwas 我的问题有意义吗?
    • 不,不是 :( 页面呈现在内容区域,但脚本包含在页脚中(脚本包含在主题中)
    • @pwas 在小部件中使用您的特定 url 为图层规则创建一个新图层,并在页脚部分添加新的 html 小部件,添加脚本并根据需要选择图层。
    【解决方案3】:

    我建议为您的脚本添加一个部分,例如:

    public class CustomScriptPart : ContentPart<CustomScriptPartRecord>
    {
        public bool AtFoot
        {
            get { return Record.AtFoot; }
            set { Record.AtFoot = value; }
        }
        public string Script
        {
            get { return Record.Script; }
            set { Record.Script = value; }
        }
    }
    

    视图/零件/CustomScript.cshtml

    @if(Model.AtFoot) {
        using(Script.Foot()) {
            <script type="text/javascript">
                @Model.Script
            </script>
        }
    } else {
        <script type="text/javascript">
            @Model.Script
        </script>
    }
    

    但可能已经做了类似的事情,例如 Vandelay Industries。

    【讨论】: