如何创建使用外部数据源的umbraco小部件?

时间:2016-03-25 04:42:17

标签: umbraco umbraco7

我正在创建一个Umbraco网站,我希望网站管理员能够在一个页面上放置一个“小部件”(不确定这是否是正确的术语),该页面将使用来自http服务的数据呈现一个表。

一个组成的示例服务

假设我有一个带有http api的外部数据服务,它公开了一个电影片名数据库。让我们假装它有两个端点

1)列表类型 - 返回类型的JSON列表

http://api.movies.com/genres 

2)搜索 - 返回与搜索参数匹配的标题的JSON列表

http://api.movies.com/search?genre=comedy

我在Umbraco管理员中的理想用户体验

我想为umbraco用户提供一种方法,在Umbraco管理员的页面上放置一个“电影类型小部件”。将小部件放在页面上后,他们可以通过从下拉列表中选择一个类型来指定此小部件的类型。该下拉列表将由端点#1填充。

当页面呈现给最终用户时,它会调用端点#2来填充与umbraco用户为此小部件指定的类型匹配的电影列表。

我是Umbraco的新手(截至今天)。我花了3个小时阅读文档并查看入门套件,我不知道如何实现这一目标。

有人能指出我正确的方向吗?这应该是插件吗?一个模板?属性编辑器?

感谢任何帮助。

2 个答案:

答案 0 :(得分:5)

您需要实现的两个不同组件是后台属性编辑器,以显示下拉菜单,其中包含从外部服务加载的值和前端组件根据先前选择的值

加载外部数据

首先,后台属性编辑器。虽然您可以开发自己的custom property editor using Angular,但我建议您查看nuPickers package,它似乎提供了一些可能适合您目的的下拉列表实现。完成此操作后,编辑对类型的选择将保留在数据库中。

现在,您使用所选流派加载影片窗口小部件的部分。最简单的解决方案是将窗口小部件作为嵌套在Umbraco模板中的部分视图

您可以通过多种方式检索类型下拉属性值(例如,使用强类型或动态API),例如:

var selectedGenre = Model.Content.GetPropertyValue<string>("selectedGenre")

您需要确保的一件事是所选的类型值由模板传递给部分,如下所示:

@Html.Partial("movieWidget", selectedGenre)

另外,请确保您的局部视图模型与selectedGenre的类型匹配,在此示例中为string

最后一部分是调用您的电影服务并将其传递给所选的流派值。到目前为止,最简单的解决方案是继续从小部件局部视图中调用服务。

虽然这可能适用于简单/小型项目,但通常认为将逻辑移至控制器是最佳做法。这是Umbraco中更高级的场景,您必须使用自己的控制器而不是它用于渲染模板的默认控制器。如果您需要采用这种方法,请查看creating custom controllers in Umbraco

的文档

答案 1 :(得分:0)

也许看看Archetype包? http://24days.in/umbraco/2015/umbraco-zeitgeist/#picked-widgets

如果使用普通宏,则无法将外部数据源作为参数值。但是创建一个&#34;小部件存储库&#34;允许你(或你的编辑)创建自定义内容位,然后你可以在你的页面上创建一个选择器。

使用由外部值填充的下拉列表创建数据类型编辑器应该相对简单 - 有关如何执行此操作的示例应该在our.umbraco.org上结束。

最后,作为Umbraco的新手,考虑一下(一个月)订阅umbraco.tv - 这里有一堆很棒的视频可以帮助你入门:-)#h5yr

相关问题