我的Sitecore 6.2 Content Delivery服务器上的自定义Lucene索引似乎不对.所以我想我需要重建所有3个自定义索引.我怎么做?我只需要使用共享源索引查看器模块吗?现在我已经在我的CD服务器上安装了它,但由于某种原因它无法正常工作.当我在Index Viewer中选择我的自定义索引时 - 没有任何反应.所以我无法以这种方式重建索引.我可以从硬盘驱动器中删除索引文件吗?如果是这样,Lucene将以多快的速度重建它们?
这是我尝试过的,似乎没有用.我没有收到任何错误,但它似乎也没有将文件添加到媒体库.
using(new Sitecore.SecurityModel.SecurityDisabler())
{
if(myFileControl.HasFile)
{
MediaCreatorOptions _options = new MediaCreatorOptions();
_options.Database = Factory.GetDatabase("master");
_options.FileBased = false;
_options.IncludeExtensionInItemName = false;
_options.KeepExisting = false;
_options.Versioned = false;
_options.Destination = "/sitecore/media library";
MediaItem _newFile = MediaManager.Creator.CreateFromStream(myFileControl.FileContent, myFileControl.FileName, _options);
}
}
Run Code Online (Sandbox Code Playgroud)
我最大的问题是我并不真正了解一些不同的参数和属性.MediaCreatorOptions的"目的地"属性是什么?它应该只是一个文件夹吗?它应该也有项目名称吗?CreateFromStream方法的三个参数是什么?第一个似乎是流 - 我明白了.但第二个是"FileName".这应该是什么?如果我是从Stream创建的,为什么我需要告诉Sitecore FileName?
任何帮助,将不胜感激.
(我认为我没有正确地提出这个问题 - 但我不知道如何描述它)
这是我想要做的:
假设我有一个具有PersonID字段的Person表.让我们说一个人可以属于许多群体.因此,存在具有GroupID字段的Group表和GroupMembership表,GroupMembership表是两个表之间的多对多连接,GroupMembership表具有PersonID字段和GroupID字段.到目前为止,它是一个简单的多对多加入.
给定一个GroupID列表,我希望能够编写一个查询,返回所有这些组中的所有人(不是这些组中的任何一个).并且查询应该能够处理任意数量的GroupID.我想避免动态SQL.
是否有一些简单的方法可以解决这个问题?谢谢,科里
我有一个多站点Sitecore安装.我正在尝试创建一个发送的电子邮件,其中包含指向每个项目的Sitecore编辑器的链接.除了正确的域名,我都能正常工作.给定一个项目ID,我将如何使用API获取该项目的域名?例如 - 我想生成如下的URL:
http://www.mySite1.com/sitecore/shell/sitecore/content/Applications/Content Editor.aspx?id = id
我不确定的唯一部分是如何以编程方式检索"www.mySite1.com"部分.有任何想法吗?我在Sitecore API中找不到这样的东西,虽然我确信它存在于某个地方.
我有一个使用AD模块连接到Active Directory的Sitecore站点.假设我们在Sitecore中定义了一个名为"内容作者"的角色.内容作者可能包含单个用户帐户 - "jsmith" - 或者它可能包含整个AD组 - "Northeast Managers".我需要直接或间接(通过AD组)获取"内容作者"角色中所有用户的列表.现在我的代码似乎只返回直接成为"内容作者"角色成员的用户.这是我的代码:
string[] _roleUserNames = System.Web.Security.Roles.GetUsersInRole("Content Authors");
Run Code Online (Sandbox Code Playgroud)
我假设这段代码会返回该角色中每个人的"有效"列表.它似乎只会让那些直接担任这个角色的人回归.有谁知道是否有其他方式让每个人都参与其中?
保存Sitecore项目时,我试图显示一个弹出窗口以与用户进行交互.根据他们已更改的数据,我可能会显示一系列1或2个弹出窗口,询问他们是否要继续.我已经想出如何使用OnItemSaving管道.这很简单.我无法弄清楚的是如何显示弹出窗口并对用户的输入作出反应.现在我想我应该以某种方式使用Sitecore.Context.ClientPage.ClientResponse对象.这是一些代码,显示了我想要做的事情:
public class MyCustomEventProcessor
{
public void OnItemSaving(object sender, EventArgs args)
{
if([field criteria goes here])
{
Sitecore.Context.ClientPage.ClientResponse.YesNoCancel("Are you sure you want to continue?", "500", "200");
[Based on results from the YesNoCancel then potentially cancel the Item Save or show them another dialog]
}
}
}
Run Code Online (Sandbox Code Playgroud)
我应该使用不同的方法吗?我看到还有ShowModalDialog和ShowPopUp以及ShowQuestion等.我似乎无法找到关于这些的任何文档.此外,我甚至不确定这是否是这样做的正确方法.
我正在使用Sitecore 7.5和Glass Mapper 3.2.3构建一个站点.当我将子布局添加到页面的演示文稿详细信息时,Glass Mapper将假定子布局的数据源应该是当前页面.我还可以通过在演示文稿详细信息对话框中选择站点上的其他页面来显式设置渲染的数据源.

Glass Mapper仍然可以正常工作,并使用其他选定的页面作为渲染的数据源.但是,如果我尝试使用"构建查询"对话框并为我的数据源构建查询,Glass Mapper似乎忽略了这一点,只使用当前页面作为数据源.有没有办法使用我使用Build Query对话框构建的查询?

编辑:这里有一些关于我的设置的更多信息.我在Sitecore中有一个名为ContentPage的数据模板.它有一个字段:内容.我在网站中有多个页面使用此数据模板.我有一个名为sublayoutPageContent的子布局.它继承自GlassUserControl.它只是显示内容字段.如果我将此子布局添加到页面A的演示文稿详细信息中,并且不指定数据源,则它可以正常工作.当我调出页面A时,它会完美地显示页面A中的内容字段.我还可以查看子布局的演示文稿详细信息,并告诉它使用不同的页面作为数据源 - 比如页面B.如果我这样做,然后我去查看页面A,我将看到页面B中的内容字段太棒了 - 这是按预期工作的.现在,而不是选择数据源的页面,
我试图从C#中的URI读取安全的XML文档.我理解XmlReader类的基础知识.但是我无法弄清楚如何在代码中为URI提供用户名和密码.我觉得它与XmlSecureResolver对象有关.但我无法弄清楚如何设置用户名和密码.谁能帮助我如何设置凭据?
谢谢,科里
有没有其他人在使用Sitecore 7.x和Solr 4.7与Glass Mapper 3.3一起工作时遇到问题?似乎Glass Mapper使用Castle Windsor IOC容器.并且Sitecore建议也使用Castle Windsor IOC容器进行Solr.
根据Sitecore,他们告诉我应该使用Solr 4.7,我应该使用Castle.core.dll和Castle.Windsor.dll 3.1版.然而,看起来Glass Mapper 3.3需要版本3.2+的Castle.Core.dll.
我认为我不是唯一遇到这个问题的人.但我在网上找不到任何关于它的内容.
这是针对 Sitecore 7.5 - Solr 4.7 实现的。我希望能够修改存储在 Solr 的 _content 字段中的文本。我相信,Sitecore 以某种方式聚合了索引中 _content 字段中某个项目的所有内容字段。(我认为这是正确的)在索引时,我希望能够编写自己的代码,该代码可能会修改存储在 Solr 的 _content 字段中的文本。这可能吗?任何想法我会怎么做?
我知道有一个SortOrder字段.但是在我看来,在你开始实际移动列表中的内容项之前,该字段很多次都是空的.然后,如果你有一个项目列表并且你移动了一些项目,他们将被分配一个SortOrder值,但其他项目在SortOrder字段中仍然没有值.
我无法弄清楚.我正在尝试编写一个算法,以便我可以按照在内容编辑器中排序的方式对网页上的项目进行排序.
编辑:这是来自Sitecore.Kernel的代码,它比较两个项目.据我所知,它首先尝试使用Sortorder字段进行排序.如果它们相等,那么它使用Name字段.但是我不清楚如果其中一个排序顺序值是一个数字而其中一个排序顺序值为空,则此代码中会发生什么.它是否像零数字一样处理空白排序顺序字段?
/// <summary>
/// Compares the specified items.
///
/// </summary>
/// <param name="item1">Item1.</param><param name="item2">Item2.</param>
/// <returns/>
/// <contract><requires name="item1" condition="none"/><requires name="item2" condition="none"/></contract>
public int Compare(Item item1, Item item2)
{
if (item1 == null || item2 == null)
{
if (item1 == null && item2 == null)
return 0;
return item1 != null ? 1 : -1;
}
else
{
int sortorder1 = item1.Appearance.Sortorder;
int sortorder2 = item2.Appearance.Sortorder;
string name1 = item1.Name;
string name2 = item2.Name;
return ItemComparer.CompareItems(item1, …Run Code Online (Sandbox Code Playgroud) 我想创建一个Sitecore子布局,如下所示:
<sc:Sublayout runat="server" ID="slMySublayout" Path="~/layouts/My Sublayout.ascx" MyCustomProperty="some value" />
Run Code Online (Sandbox Code Playgroud)
我希望由于Sitecore子布局继承自ASP.NET用户控件,我将能够创建一个名为"MyCustomProperty"的公共属性,并获得为子布局明确设置的值.然而,这似乎不起作用.似乎永远不会使用在ASCX文件上输入的值设置公共属性.
有谁知道这是否可能?
谢谢,科里
sitecore ×10
sitecore6 ×5
glass-mapper ×2
sitecore7 ×2
sitecore7.5 ×2
solr4 ×2
c# ×1
https ×1
indexing ×1
lucene.net ×1
many-to-many ×1
role-based ×1
t-sql ×1
xml ×1