在sitecore我想得到继承形式“工业产品”的所有孩子和大孩子 模板。
以下是快速查询,但它给出错误 错误:预期在第5位的字符串结尾。
快速查询:
_masterdb.SelectItems("query:/sitecore/content/Product Catalog/Industrial/Products/*[@@templatename='Industrial Product']")
答案 0 :(得分:6)
这不是快速查询,您使用的是普通查询。 请使用类似的内容:
Sitecore.Data.Items.Item[] items =
database.SelectItems("fast:/sitecore/content/Product Catalog/Industrial/Products//*[@@templateid='yourTemplateId']");
另外请使用@@ templateid而不是@@ templatename,我做了一些测试,使用@@ templateid更快。
还要看看有关使用FastQuery的here。
答案 1 :(得分:6)
您的查询不是快速查询,如果您使用以下查询,它对我有用:
_masterdb.SelectItems("fast:/sitecore/content/Product Catalog/Industrial/Products//*[@@templatename='Industrial Product']");
此查询中有两处更改:
query
替换为fast
。这意味着它不是“普通”Sitecore查询,它成为Sitecore快速查询。有关使用快速查询的更多信息,请阅读this guide。*[@@templatename='Industrial Product']
选择项目之前,我添加了一个双斜杠//
。这意味着,它使用您的模板对所有项目进行递归搜索。使用您的查询,您只搜索直接子项。此外,我建议您使用关键字@@templateid
代替@@templatename
,因为sitecore climber表示它更快,如果您重命名模板也没问题。因此,您的查询最终可能如下所示:
fast:/sitecore/content/Product Catalog/Industrial/Products//*[@@templateid='{76036F5E-CBCE-46D1-AF0A-4143F9B557AA}']
注意:这不仅选择您的孩子和大孩子。这会以递归方式为您提供包含此模板的所有项目。
答案 2 :(得分:2)
请使用以下查询
_masterdb.SelectItems(&#34; query:/ sitecore / content / #Product Catalog#/ Industrial / Products // * [@@ templatename =&#39; Industrial Product&#39;]&#34;)< / p>
答案 3 :(得分:0)
试试这个
_masterdb.SelectItems("fast:/sitecore/content/#Product Catalog#/Industrial/Products//*[@@templatename='Industrial Product']")
或
_masterdb.SelectItems("fast:/sitecore/content/#Product Catalog#/Industrial/Products//*[@@templatename='industrial product']")
在某些情况下,您可能需要转义包含空格的名称,例如@#Updated by#。