【问题标题】:Is it possible to add sitefinity widget to my custom widget?是否可以将 sitefinity 小部件添加到我的自定义小部件?
【发布时间】:2019-02-26 07:49:29
【问题描述】:

我正在尝试在 Sitefinity 11 中创建一个自定义小部件。目标是在页面上显示标签,每个可点击标签下方都有内容面板。我正在使用引导程序来完成这个,这很简单。

我希望能够为每个选项卡添加一个 Sitefinity 占位符,这将允许编辑者将一个小部件(例如内容块)拖放到该选项卡。但似乎当我尝试这样做时,占位符区域永远不会显示在 CMS 中,就像我在自定义模板中添加了占位符一样。

这可能吗?

这是一个简短的代码示例:

<div class="container mt-3">
<!-- Nav tabs -->
  <ul class="nav nav-tabs">
    <li id="tab1" class="nav-item">
        <a class="nav-link active" data-toggle="tab" href="#panel1">@Model.Tab1Name</a>
    </li>
    <li id="tab2" class="nav-item">
        <a class="nav-link" data-toggle="tab" href="#panel2">@Model.Tab2Name</a>
    </li>
  </ul>
  <!-- Tab panes -->
  <div class="tab-content">
    <div id="panel1" class="container tab-pane active">
        @Html.SfPlaceHolder("Panel1")
        <p>here is text</p>
    </div>
    <div id="panel2" class="container tab-pane fade">
        @Html.SfPlaceHolder("Panel2")
    </div>
</div>

感谢任何帮助。

【问题讨论】:

    标签: sitefinity


    【解决方案1】:

    您不能将 SfPlaceHolder 放在小部件上,它必须在您的布局文件(页面模板)中。

    您可以做的是为您的小部件创建一个自定义设计器并将一个或多个内容块放入其中,例如每个标签对应一个。

    然后在视图中,您只需渲染内容。

    https://www.progress.com/documentation/sitefinity-cms/create-custom-designer-views-mvc

    编辑:要实现这一点,您需要:

    控制器/MyRichTextController.cs

        public string RichText
        {
            get;
            set;
        }
    

    视图/MyRichText/DesignerView.Default.cshtml

    <div class="form-group">
        <sf-html-field class="kendo-content-block"
                       sf-images-settings="@SettingsHelpers.GetMediaSettings("Image")"
                       sf-videos-settings="@SettingsHelpers.GetMediaSettings("Video")"
                       sf-documents-settings="@SettingsHelpers.GetMediaSettings("Document")"
                       sf-model="properties.RichText.PropertyValue">
        </sf-html-field>
    </div>
    

    视图/MyRichText/DesignerView.Default.json

    {
      "priority": 1,
      "components": [ "sf-html-field" ]
    }
    

    另一种选择是使用上述 html 结构创建一个 Layout 小部件,这将允许用户将内容块放在布局区域内。

    您可以复制任何现有的布局小部件并对其进行处理。请注意,使用这种方法,您可能会有一些 css 规则隐藏除第一个选项卡面板之外的所有内容,因此您需要为后端添加一些额外的 css 规则,以便显示所有面板,以便用户可以将小部件拖动到他们。这将使这种方法更加棘手。

    【讨论】:

    • 在您的第一个建议中,您提到在设计器中使用“内容块”,但您实际上并不是指 Sitefinity 内容块小部件...对吗?您说的是简单的文本字段...如果我错了,请纠正我,因为我看不到在设计器本身中使用内容块小部件的方法。我们希望在选项卡中使用内容块小部件,以便我们的非编码编辑器使用。听起来您的第二个解决方案可能是解决此问题的唯一方法,但同样需要一些解决方法来隐藏和显示,如您所说。
    • 在我上面的评论中,我应该说“我们希望在选项卡中使用富文本编辑器(最好带有图像控件)以便于使用......”。如果我能弄清楚如何做到这一点,我想我可以让我的自定义小部件工作。我正在尝试在我的设计器视图中使用: 在 json 文件中:“components”:[“sf-html- field"] 但富文本编辑器不显示。
    • 你把priority:1放在json文件里了吗?像这样的东西:{“优先级”:1,“组件”:[“sf-html-field”]}
    • 用 v.11 中的代码示例更新了我上面的答案
    • Veselin,非常感谢!我现在用你的例子让它工作。在您对示例的最后回应之前,我已经很接近了,但我认为我的 json 文件的命名约定有误。你的例子让我意识到这一点。一旦我纠正了这一点,它就开始工作了。非常感谢您的时间!
    猜你喜欢
    • 2017-10-08
    • 2014-04-08
    • 2015-11-19
    • 1970-01-01
    • 1970-01-01
    • 2012-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多