Sitecore 6中的一般架构问题......
假设我们有10,000个项目实施"新闻稿"模板.这些项目存储在Sitecore中/sitecore/content/home/press/*.在我们的主页上,我们想要显示一些有关最近3个新闻稿的信息.
我们正在寻找构建与SQL相当的东西:
SELECT TOP 3 * FROM PressReleases ORDER BY ReleaseDate
Run Code Online (Sandbox Code Playgroud)
通过Sitecore的查询文档阅读,这听起来像多数这个查询必须在我们C#应用程序进行处理.就像是:
public Item[] GetRecentPressReleases()
{
string query = "/sitecore/content/home/press/*";
Item[] items = Sitecore.Context.Database.SelectItems(query);
Array.Sort(items, new PressReleaseDateComparer());
return items.Take(3).ToArray();
}
Run Code Online (Sandbox Code Playgroud)
这似乎是加载从数据库到内存中万个Sitecore的项目,然后每一个我们的主页被击中是从性能的角度不可接受的时间对它们进行排序.
是否有更有效的方式来表达此查询?或者我应该专注于输出缓存和/或预先计算?
我有一个我正在开发的Sitecore/ASP.NET项目.今天在某些时候我无意中点击了解决方案上下文菜单中的"清理"选项.我花了一段时间才弄清楚为什么我的网站被无可救药地打破了.结果是Visual Studio继续并从\ bin目录中删除了几个不属于我的项目的必需程序集.
我怎样才能防止这种情况再次发生?
奇怪的是,它并没有删除所有内容......只是少数几个.它留下了很多我的项目没有直接引用的东西.这让我想知道这个功能究竟应该做什么?我可以设置某种文件标志吗?没有文件设置为只读.如果您对细节感兴趣,则删除以下内容:
Sitecore.Analytics.dll
Sitecore.Client.XML
Stimulsoft.Base.dll
Stimulsoft.Report.dll
Stimulsoft.Report.Web.dll
Stimulsoft.Report.WebDesign.dll
Telerik.Web.UI.dll
更新:你知道吗......我想我真正感兴趣的是为什么Visual Studio会丢弃大部分文件而只删除这些特定的文件.
如何使用Sitecore控件在子布局中呈现媒体库项目图像?对于具有"图像"字段的普通内容项,它只是一块蛋糕......只需使用sc:Image或FieldRenderer控制.但我有这样的事情:
<asp:Repeater ID="rptImages" runat="server">
<ItemTemplate>
<sc:FieldRenderer ????>
</ItemTemplate>
</asp:Repater>
Run Code Online (Sandbox Code Playgroud)
而背后的代码:
rptImages.DataSource = Sitecore.Context.Database.SelectItems("/sitecore/Media Library/Images/Some Image Folder/*")
rptImages.DataBind();
Run Code Online (Sandbox Code Playgroud)
那么...... ItemTemplate会发生什么?我可以使用ItemDataBound事件来做一些手动分配,但是我不清楚如何去做.我觉得我在这里错过了一些非常简单的东西.
我们使用Lucene进行文本搜索,作为sitecore的一部分.是否有任何方法可以忽略sitecore搜索中的停用词(如a,an,...)?
如何在工作流程中关闭Sitecore(6.5)XHTML页面验证?
我正在开发并在尝试发布测试页时继续遇到问题,因为它们出错了.我更愿意在浏览器中将错误视为堆栈跟踪.
我不确定在此之前我是否已经改变了一些东西,但我最近采取了将Sitecore转移到多站点解决方案的项目.
我在第一次开发解决方案时没有遇到这些问题,但我使用的是6.4而不是6.5.
我们正在使用一些TDS项目运行Sitecore 6.5,并且我一直在努力让TFS构建在我们的TFS构建服务器上运行.当项目尝试构建时,我们收到以下错误:
C:\Program Files (x86)\MSBuild\HedgehogDevelopment\SitecoreProject\v9.0\HedgehogDevelopment.SitecoreProject.targets (354):
Exception Invalid License(Exception) in file sitecore\content.item.
Stack trace: at HedgehogDevelopment.SitecoreProject.Tasks.CollectSitecoreItems.Execute()
Run Code Online (Sandbox Code Playgroud)
我们已在构建服务器上安装了TDS,并且我已在注册表中验证许可证密钥与我们的许可证匹配.不太确定下一步可能是什么.以前有没有人遇到过TDS持续集成构建的这个问题?
我正在使用Sitecore发布API运行我的Sitecore主数据库的计划发布.我在一天中按计划的时间间隔调用一个Web服务,它运行以下代码(为了便于阅读,略微精简):
// grab the root content node from sitecore
Item contentNode = dbSource.Items[ID.Parse("{0DE95AE4-41AB-4D01-9EB0-67441B7C2450}")];
PublishOptions options = new PublishOptions(sourceDatabase, targetDatabase, PublishMode.Smart, lang, DateTime.Now);
options.RootItem = contentNode;
options.Deep = true;
Publisher p = new Publisher(options);
p.PublishAsync();
Run Code Online (Sandbox Code Playgroud)
当我们运行上面的代码时,它会发布内容节点中的所有内容,包括所有后代,而不管工作流状态如何.这就像它完全忽略了工作流程.这不是我们所追求的,并且在我们的实时网站上造成了很多问题.
如果我们从Sitecore Desktop中运行相同的操作,它会发布内容节点中的所有内容,包括可发布的所有后代(即最终工作流阶段).它不会在树中发布仍处于草稿模式的任何项目.这是必需的行为.
我已经尝试通过使用以下using语句包含上面的代码来将代码实现为非管理员用户:
string userName = @"sitecore\******";
Sitecore.Security.Accounts.User user = Sitecore.Security.Accounts.User.FromName(userName, true);
user.RuntimeSettings.IsAdministrator = false;
using (new Sitecore.Security.Accounts.UserSwitcher(user))
{
...
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,这没有任何效果.
有没有明显的我错过了,或者我做得对,Sitecore做错了吗?有人可以帮忙吗?
我注意到的一个奇怪的事情是,在实时数据库中查看时发布的草稿项目在字段或元数据方面在Sitecore Desktop中绝对没有显示.他们还发出警告说"当前项目中没有"英语:英语"的版本.
我可以使用代码知道如何检测用户是否处于页面编辑器模式?这是因为,我有一个组件,当用户从页面编辑器浏览时,它将搜索master_index文件夹而不是web_index文件夹.
我正在尝试将sitecore数据库导出到bacpac,以便它可以还原到SQL Azure.
但是,我收到以下错误:
在用作数据包一部分的模式中找到了一个或多个不受支持的元素.
Error SQL71564: The element Extended Property: [dbo].[Fields].[MS_DiagramPane1] is not supported when used as part of a data package (.bacpac file).
Error SQL71564: The element Extended Property: [dbo].[Fields].[MS_DiagramPaneCount] is not supported when used as part of a data package (.bacpac file).
Error SQL71564: Table Table: [dbo].[ArchivedFields] does not have a clustered index. Clustered indexes are required for inserting data in this version of SQL Server.
Error SQL71564: Table Table: [dbo].[ArchivedItems] does not have a clustered index. Clustered …Run Code Online (Sandbox Code Playgroud)