在Lucene.Net中,可以使用该TopDocs.TotalHits属性检索匹配文档的总数.
使用QueryRunner类中的参数在Advanced Database Crawler API中公开了此功能out.
使用Sitecore 7的新LINQ API检索总结果计数的推荐方法是什么?如果不枚举整个结果集,似乎不可能.这是我到目前为止:
var index = ContentSearchManager.GetIndex("sitecore_web_index");
using (var context = index.CreateSearchContext())
{
var query = context.GetQueryable<SearchResultItem>()
.Where(item => item.Content == "banana");
var totalResults = query.Count(); // Enumeration
var topTenResults = query.Take(10); // Enumeration again? this can't be right?
...
}
Run Code Online (Sandbox Code Playgroud) 我有300+" 类别 "(可以进入4个子级别)项目和1Mn +"产品项目"存储在Sitecore数据库中.我正在设计Sitecore内容树.
我正在考虑两种选择,
选项1 - 模型为"Category" --> Sub category .... --> "Product Items"
选项2 - 单独模型"类别"树,并分别具有"产品项目".(Home -> Categories -> cat 1...)和(Home -> Product Items -> All Product Items)
根据我的经验,如果我选择选项1,如果我需要修改类别项目并发布,那将会非常缓慢.(即使有一些增强功能)
选项2不会创建一个平衡良好的树,但类别节点的编辑速度会快得多.
请帮我解决这个问题.我在用Sitecore 7.
我有这个非常奇怪的问题,我无法理解.也许有人可以指出我做错了什么.
基本上,我只是尝试使用Linq搜索项目到Sitecore.
所以,我的班级看起来像(我也在使用玻璃)
[SitecoreType(TemplateId = "{TEMPLATE_GIUD}")]
public class MyMappedClass : SharedFieldClass
{
[SitecoreField(FieldName = "mylist")]
public virtual IEnumerable<SharedFieldClass> MyMultilistField { get; set; }
[SitecoreField(FieldName = "field1")]
[IndexField("field1")]
public virtual MyKeyValue field1 { get; set; }
}
[SitecoreType]
public class MyKeyValue
{
public virtual Sitecore.Data.ID Id {get;set;}
public virtual string MyValue{get;set;}
}
Run Code Online (Sandbox Code Playgroud)
因此,当我执行以下查询时,它可以正常工作.
var results = context.GetQueryable<SearchResultItem>()
.Where(c => ((string)c["field1"]) == "{GUID}").GetResults();
Run Code Online (Sandbox Code Playgroud)
但是,当我执行以下操作时,它返回0结果.
List<MyMappedClass> results = context.GetQueryable<MyMappedClass>()
.Where(c => c.field1.MyValue == "{GUID}").ToList();
Run Code Online (Sandbox Code Playgroud)
我看过这个链接.我已经按照此处描述的第二个过程使用Glass来使用Sitecore7 Search("SharedFieldClass"包含所有基本索引字段).
这是一个非常明显的场景,我相信很多人已经做过了,我在做一些愚蠢的事情.
提前致谢.
/ …
我正在使用带有DMS的Sitecore(Sitecore 7.2),并且我在布局上设置了各种控件,以根据用户配置文件卡从不同的文件夹中提取内容.我希望这些文件夹成为"桶"文件夹,因为每个配置文件卡都有一个文件夹,每次新的配置文件卡都必须手动更新所有这些文件夹,这会让人感到有点不愉快被添加.
" 项目桶和搜索的开发人员指南 "说:
默认情况下,项目是根据项目创建的日期和时间进行组织的,但可以将其配置为使用不同的行为
理想情况下,我想将我的项目存放在模板中定义的字段上,以便我的所有"可存储"项目模板继承.我将该字段设置为配置文件卡列表中的选择下拉列表.
我发现了使用Bucketing.GuidFolderPath类的Sitecore Autohaus演示 - 看起来我需要用方法定义其中一个类?但是,如何告诉我的Sitecore存储桶项目我想要使用该类进行存储?GetFolderPath
我安装了visual studio 2012(支持MVC4和.NET 4.5)和Sitecore CMS 7.2 rev.140526.我可以使用管理员用户运行Sitecore并启动网站.
我正在阅读关于MVC与Sitecore集成的教程,它在visual studio中创建了一个MVC应用程序,然后集成到Sitecore CMS站点中.当我按照相同的步骤,我得到了错误.本教程中使用的MVC版本是MVC3,Sitecore版本是7.1.
我在我的机器上尝试了同样的但是得到了错误Could not load file or assembly 'System.Web.Mvc, Version=5.1.0.0.从错误我明白它正在寻找MVC5但在机器中我只有MVC4.
有什么方法可以解决这个问题吗?首先,Sitecore 7.2是用MVC4还是MVC5编译的?
我具有按以下方式工作的用户角色:管理员是Manger中的角色,Manger中是Logged in User中的角色。我希望这样做,以便如果用户具有管理员角色,那么他们还将具有“登录用户”角色。这是因为要检查代码。我真的不想写一些东西来逐步检查每个角色,以查看用户是否可以访问某些东西,而我只能检查他们是否是登录用户。现在,我希望能够将安全性应用于Sitecore项目。我遇到的问题是,如果对于用户而言,拒绝访问将覆盖访问。我可以分离角色并进行增量检查(甚至以相反的方式嵌套它们),但我想知道是否有一种方法可以将拒绝访问和覆盖访问切换为相反的方法。即
在General Link现场,内容作者将设置一些类。
我想改变类,而渲染,所以我用了反光镜和得到的代码Link.cs,并试图扩大PopulateParameters类似方法和长相this.CssStyle和this.CssClass总是空白。有什么方法可以获取在该General Link字段中输入的class的值?
如何在模板的DataSource中编写查询以生成项目的路径?
如果我在DataSource字段中编写查询并且页面使用模板,则数据源值将是项目的路径作为动态数据源,如屏幕截图.

我在Sitecore的网站定义中定义了一个网站。路径是/localhost/mysite/home。而且有效。
我需要创建一个自定义控制器,以使用绕过Sitecore的API提交表单。因此,我FormsController(从MVC控制器继承)具有名为“ Test”的操作,不带任何参数。
我在初始化管道中定义了路由,如下所示:
public class Initialize
{
public void Process(PipelineArgs args)
{
MapRoutes();
GlassMapperSc.Start();
}
private void MapRoutes()
{
RouteTable.Routes.MapRoute(
"Forms.Test",
"forms/test",
new
{
controller = "FormsController",
action = "Test"
},
new[] { "Forms.Controller.Namespace" });
}
}
Run Code Online (Sandbox Code Playgroud)
路由已正确添加到路由表中,并且在调试时就已存在。现在,当我尝试调用方法“ test”时,找不到路由,并且调试器未在操作中达到断点。
我正在尝试不同的路线:
/localhost/mysite/home/forms/test/localhost/forms/test (默认网站)但到目前为止没有运气。
----更新-
更深入地讲,我注意到Sitecore的行为有问题。如果上下文项为空(简化),则TransferRoutedRequest处理器应该中止httpRequestBegin管道,将控制权交还给MVC。经过一些检查后,它会发生,其中一项是对RoutTable数据的检查。但是对RouteTable.Routes.GetRouteDatareturn 的调用始终为null,这使处理器可以在不中断管道的情况下返回。我改写了它以使其正确地中止管道,但是即使我调用method args.AbortPipeline(),管道也不会中止并且路由也无法解析。
这是原始的TransferRoutedRequest样子:
public class TransferRoutedRequest : HttpRequestProcessor
{
public override void Process(HttpRequestArgs args)
{
Assert.ArgumentNotNull((object) args, "args");
RouteData routeData …Run Code Online (Sandbox Code Playgroud) 我已经看到了我们如何为新创建的存储桶项提供默认条件和默认操作.我也知道我们可以根据自定义日期字段创建自定义规则来构建路径.
但是,如何在日期字段和保存时设置项目路径.考虑一个例子.我们有一个桶项目模板说"新闻",其日期字段说"发布日期".我们有项目创建的设置,项目路径的创建日期如"/ News/2015/09/16/item1".现在,我们需要有一些逻辑,我们可以在更新"item1"的"发布日期"并且项目已保存时更改路径.
当项目的发布日期更新且项目被保存时,我们如何更新项目路径!我需要在OnItemSaved()方法中实现一些逻辑吗?
sitecore ×10
sitecore7 ×10
sitecore7.2 ×4
bucket ×1
c# ×1
datasource ×1
glass-mapper ×1
linq ×1
roles ×1
routing ×1
sitecore-dms ×1
sitecore-mvc ×1
sitecore8 ×1