Sitecore 8 MVC Glass 查询数据源
Sitecore 8 MVC Glass Query Datasource
使用 glass 时,Sitecore 8 MVC 似乎不支持查询数据源(例如:查询:...)。我想创建一个相对路径,以便分支模板在创建时指向正确的数据源。有没有办法使用 Sitecore 的查询生成器来做到这一点?我看到了自定义查询选项,其中可以指定路径但似乎无法进行任何操作。我想我可能会在模型被玻璃绑定之前添加一个管道处理器,以将以 query:
开头的数据源更改为已解析的路径,并将其沿着管道参数传递。
您可以将数据源查询添加到 Sublayout
或 Rendering
Datasource Layout
字段。您需要将新的 Processor
添加到 getRenderingDatasource
Pipeline
。我自己已经在 Branch Templates
上使用它来创建到正确数据源的相对路径。
你的query:.
需要定义在sublayout/rendering的Datasource Location
中,利用ancestor-or-self
做相对路径,遍历树找到父节点包含数据源的项目。
query:.ancestor-or-self:: *[@@templatename = 'home']/*[@@templatename = 'storage']/*[@@templatename = 'articles']
处理器将需要使用 GetRenderingDatasourceArgs
。这些争论将为您提供几乎所有您需要的东西。本质上,您需要获取您在 Datasource Locations
中编写的 query:.
。
args.RenderingItem["Datasource Location"];
将查询的开头替换为上下文项路径(以便其相对),然后调用以获取项;
private IEnumerable<Item> GetDatasourceLocationsFromQuery(string query)
{
string queryPath = query.Replace("query:.", args.ContextItemPath);
return args.ContextDatabase.SelectItem(queryPath);
}
这将 return 作为数据源父项的匹配项。
使用 glass 时,Sitecore 8 MVC 似乎不支持查询数据源(例如:查询:...)。我想创建一个相对路径,以便分支模板在创建时指向正确的数据源。有没有办法使用 Sitecore 的查询生成器来做到这一点?我看到了自定义查询选项,其中可以指定路径但似乎无法进行任何操作。我想我可能会在模型被玻璃绑定之前添加一个管道处理器,以将以 query:
开头的数据源更改为已解析的路径,并将其沿着管道参数传递。
您可以将数据源查询添加到 Sublayout
或 Rendering
Datasource Layout
字段。您需要将新的 Processor
添加到 getRenderingDatasource
Pipeline
。我自己已经在 Branch Templates
上使用它来创建到正确数据源的相对路径。
你的query:.
需要定义在sublayout/rendering的Datasource Location
中,利用ancestor-or-self
做相对路径,遍历树找到父节点包含数据源的项目。
query:.ancestor-or-self:: *[@@templatename = 'home']/*[@@templatename = 'storage']/*[@@templatename = 'articles']
处理器将需要使用 GetRenderingDatasourceArgs
。这些争论将为您提供几乎所有您需要的东西。本质上,您需要获取您在 Datasource Locations
中编写的 query:.
。
args.RenderingItem["Datasource Location"];
将查询的开头替换为上下文项路径(以便其相对),然后调用以获取项;
private IEnumerable<Item> GetDatasourceLocationsFromQuery(string query)
{
string queryPath = query.Replace("query:.", args.ContextItemPath);
return args.ContextDatabase.SelectItem(queryPath);
}
这将 return 作为数据源父项的匹配项。