无法在 Sitefinity CMS 中查看自定义占位符

问题描述 投票:0回答:1

我是 Sitefinity 的新手,目前正在从事 Sitefinity 15 项目。

enter image description here 我已将自定义占位符(语言选择器)添加到我的 MVC 视图 (NavigationView.cshtml),如下所示:

@model Telerik.Sitefinity.Frontend.Navigation.Mvc.Models.INavigationModel

@using Telerik.Sitefinity.Frontend.Mvc.Helpers;

<nav class="navbar navbar-expand-lg navbar-dark bg-dark">
    <div class="container px-5">
        <a class="navbar-brand" href="/">Test Site</a>
        <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation"><span class="navbar-toggler-icon"></span></button>
        <div class="collapse navbar-collapse" id='@Html.UniqueId("navbar")'>
            <ul class="navbar-nav ms-auto mb-2 mb-lg-0">
                @{
                    int i = 0;
                    foreach (var node in Model.Nodes)
                    {
                        @RenderRootLevelNode(node, i);
                        i++;
                    }
                }
            </ul>
            <!-- Add your placeholder here -->
            @Html.SfPlaceHolder("language-selector")
        </div>
    </div>
</nav>

@* Helper methods and rendering logic *@

但是,在编辑页面时,我无法在 Sitefinity CMS 中查看或配置语言选择器占位符。

采取的步骤:

  1. 添加了@Html.SfPlaceHolder(“语言选择器”) 导航视图.cshtml.

  2. 将模板分配给相关页面 网站有限性。

  3. 尝试将小部件拖放到占位符区域 在 CMS 中编辑页面时。

问题:

  • 语言选择器占位符不会出现在页面编辑器中。
  • 我不确定 CMS 中是否需要额外配置 使该占位符可见且可用。

请求帮助:

  • 我是否缺少特定的步骤或配置来制作 语言选择器占位符在 Sitefinity CMS 中可见吗?

  • 我是否需要注册占位符或配置其他内容 Sitefinity 可以进行编辑吗?

任何指导或建议将不胜感激。预先感谢您!

致以诚挚的问候,

苏雷什·拉亚拉库拉

navigation widget placeholder sitefinity
1个回答
0
投票

您只能在布局视图(您的基本页面模板)中使用

@Html.SfPlaceHolder
,不能在另一个小部件的视图中使用它。 如您所见,导航小部件需要一个 INavigationModel 类型的模型。 想象一下,您将一个语言选择器小部件放入其中,语言选择器小部件将如何获得自己的模型? 这就是为什么它不能那样工作。

因此,您需要稍微修改一下 html。 这就是我要做的:

在您的基本页面模板中输入以下代码:

<nav class="navbar navbar-expand-lg navbar-dark bg-dark">
    <div class="container px-5">
        <a class="navbar-brand" href="/">Test Site</a>
        <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation"><span class="navbar-toggler-icon"></span></button>
        <div class="collapse navbar-collapse" id='@Html.UniqueId("navbar")'>
           @Html.SfPlaceHolder("TopNav")
            <!-- Add your placeholder here -->
            @Html.SfPlaceHolder("language-selector")
        </div>
    </div>
</nav>

注意,TopNav 有一个新的 SfPlaceholder。

然后,将导航小部件放入 TopNav 区域内,然后将此 html 放入导航小部件的视图中:

 <ul class="navbar-nav ms-auto mb-2 mb-lg-0">
                @{
                    int i = 0;
                    foreach (var node in Model.Nodes)
                    {
                        @RenderRootLevelNode(node, i);
                        i++;
                    }
                }
            </ul>
© www.soinside.com 2019 - 2024. All rights reserved.