主题中的覆盖编辑器模板会影响管理视图

时间:2014-02-12 20:30:33

标签: orchardcms

我使用CustomForms模块创建了一个表单,需要控制我在表单中包含的输入字段的标记(以添加引导程序特定的类)。我在/Views/EditorTemplates/Fields/Input.Edit.cshtml位置为我的主题添加了一个视图,这使我可以更新输入字段的标记。

我的问题是我的主题中的视图也在管理视图中被选中。我没想到这种行为,但它正在发生。我尝试使用备用命名约定将视图覆盖范围限定为url(Input.Edit-url-contact.cshtml)和内容类型(Input.Edit-ContactRequest.cshtml),但在这种情况下它们似乎不起作用。

有没有办法在我的主题中调整Input.Edit.cshtml视图的范围,以便它只适用于网站的前端?或者有更好的方法来实现我想要做的事情吗?

1 个答案:

答案 0 :(得分:3)

我最后通过实现一个形状表提供程序(基于Bertrand的建议)来解决这个问题,以便在我的主题中指定不同的模板名称,以便它们不会在管理员中被选中。这是它的样子:

public class EditorFieldShapeProvider : IShapeTableProvider
{
    public void Discover(ShapeTableBuilder builder)
    {
        builder.Describe("EditorTemplate")
            .OnDisplaying(displaying =>
            {
                var shape = displaying.Shape;

                if (shape.ContentField is InputField) {
                    shape.TemplateName = "CustomInputField";
                }
            });
    }
}

只需将该类放在主题中的某个位置,然后在/ThemeName/Views/EditorTemplates/CustomInputField.cshtml中创建视图