我们如何在单页应用程序中按需加载 2sxc 内容块?
How can we load 2sxc content-blocks on demand in a single page app?
目标:在单页应用程序中按需加载 2sxc 内容块。
如果我们可以获得为内容块提供支持的数据,而不是标记,那也很好。
这是使用来自 webapi 端点的标记进行响应的第一个天真尝试:
[HttpGet]
[DnnModuleAuthorize(AccessLevel = SecurityAccessLevel.Anonymous)]
[ValidateAntiForgeryToken]
public dynamic CityDetails(string id)
{
return from city in AsDynamic(App.Data["City"])
where city.Name == id
select new {
Name = city.Name,
Details = city.Details.Aggregate("", (markup, contentBlock) =>
markup += contentBlock.Render())
};
}
不胜感激!
这不是问题的答案,而是我们使用的解决方法。
我们用这种结构制作了一个内容类型:
- 简介
- 配置文件详细信息实体 A
- 个人资料详细信息实体 B
我们制作了两个 API 端点:
- 获取个人资料概览
- 获取个人资料详细信息
端点提供来自 WYSIWYG 的数据和标记的混合,它提供客户端模板。
在版本 2 中,出于 SEO 的原因,我们将构建更类似于 2sxc 博客应用程序的应用程序。制作一些动画会更加困难,但目前保守地倾向于服务器渲染似乎是个好主意。
目标:在单页应用程序中按需加载 2sxc 内容块。 如果我们可以获得为内容块提供支持的数据,而不是标记,那也很好。
这是使用来自 webapi 端点的标记进行响应的第一个天真尝试:
[HttpGet]
[DnnModuleAuthorize(AccessLevel = SecurityAccessLevel.Anonymous)]
[ValidateAntiForgeryToken]
public dynamic CityDetails(string id)
{
return from city in AsDynamic(App.Data["City"])
where city.Name == id
select new {
Name = city.Name,
Details = city.Details.Aggregate("", (markup, contentBlock) =>
markup += contentBlock.Render())
};
}
不胜感激!
这不是问题的答案,而是我们使用的解决方法。
我们用这种结构制作了一个内容类型:
- 简介
- 配置文件详细信息实体 A
- 个人资料详细信息实体 B
我们制作了两个 API 端点:
- 获取个人资料概览
- 获取个人资料详细信息
端点提供来自 WYSIWYG 的数据和标记的混合,它提供客户端模板。
在版本 2 中,出于 SEO 的原因,我们将构建更类似于 2sxc 博客应用程序的应用程序。制作一些动画会更加困难,但目前保守地倾向于服务器渲染似乎是个好主意。