自定义区域中的 Piranha CMS 图像扩展

Posted

技术标签:

【中文标题】自定义区域中的 Piranha CMS 图像扩展【英文标题】:Piranha CMS Image Extenion in Custom Region 【发布时间】:2013-09-26 05:49:49 【问题描述】:

我创建了一个自定义区域,现在我想向它添加一个图像。

如何在这个自定义区域中实现图像选择器?

我看到了一个示例 here,它向您展示了如何对核心扩展执行此操作,但我似乎无法让它与自定义区域一起使用。

public class AccordionItem

    public string Title  get; set; 
    public string Body  get; set; 


[Export(typeof(IExtension))]
[ExportMetadata("InternalId", "AccordionRegions")]
[ExportMetadata("Name", "Accordion")]
[ExportMetadata("ResourceType", typeof(Piranha.Resources.Extensions))]
[ExportMetadata("Type", ExtensionType.Region)]
[Serializable]
public class AccordionRegion : Extension

    [Display(Name = "Title")]
    public string Title  get; set; 

    public IList<AccordionItem> Items  get; set; 

    public AccordionRegion()
    
        Items = new List<AccordionItem>();
    

【问题讨论】:

【参考方案1】:

我查看了您的代码并找到了一个关于如何将图像合并到您的 SlideItem 中的非常简单的解决方案。但首先是另一件事。

[ExportMetadata("ResourceType", typeof(Piranha.Resources.Extensions))]

此元数据字段在您想要获取在 Name 元字段中输入的键以启用基于文化的不同语言时才有效。由于核心中不存在 Accordion 键,因此它搞砸了,至少对我来说是这样。

现在到图像上。为了让它工作,我只是将您的滑块项目修改为以下内容:

public class AccordionItem

    public string Title  get; set; 
    public string Body  get; set; 
    public ImageRegion Image  get ; set ; 

    public AccordionItem() 
        Image = new ImageRegion() ;
    

这样我们可以重用核心项目中可用的 ImageRegion 的标准功能。由于您没有为您的视图提供源代码,因此我将它们模拟成这样。

AccordionRegion.cshtml

@model AccordionRegion

<ul class="form">
    <li>@html.LabelFor(m => m.Title)
        <div class="input">@Html.TextBoxFor(m => m.Title)</div>
    </li>
</ul>
@Html.EditorFor(m => m.Items)

EditorTemplates/AccordionItem.cshtml

@model AccordionItem

<fieldset>
    <legend>An item</legend>
    <ul class="form">
        <li>@Html.LabelFor(m => m.Title)
            <div class="input">@Html.TextBoxFor(m => m.Title)</div>
        </li>
        <li>@Html.LabelFor(m => m.Body)
            <div class="input">@Html.TextAreaFor(m => m.Body)</div>
        </li>
    </ul>
    @Html.PartialFor("ImageRegion", m => m.Image)
</fieldset>

由于 ImageRegion 呈现大量 HTML,我将实现某种服务器端代码,该代码生成一个新的 AccordionItem 并使用 AJAX 将其发送回客户端,而不是在视图中硬编码大量 HTML/JS 内容。

【讨论】:

以上是关于自定义区域中的 Piranha CMS 图像扩展的主要内容,如果未能解决你的问题,请参考以下文章

Piranha CMS 想用新数据扩展用户?

Piranha CMS 自定义实体

未找到 Piranha CMS 管理自定义控制器

Piranha CMS - 自定义块不会保存

Piranha CMS 创建区域扩展

在 Piranha CMS 中访问全球站点区域