天道酬勤,学无止境

sitecore

How to determine in sitecore whether given item is start item?

问题 在配置文件中,我们在元素中为每个网站设置启动项(例如 startItem="/Home")。 我们也可以在代码中选择开始项。 但我要问的是如何确定任何选定的项目是否是开始项目? 至少我们可以选择开始项目并与给定项目进行比较,但我认为这不是优雅的代码 回答1 我们通常在 SiteContext 类上有一个扩展方法来获取 Home Item: public static class SiteExtensions { public static Item GetHomeItem(this SiteContext site) { return Sitecore.Context.Database.GetItem(site.StartPath); } } 有了这个,您可以测试任何项目(不仅仅是上下文项目)以查看它是否是主项目。 Item home = Sitecore.Context.Site.GetHomeItem(); if (Sitecore.Context.Item.ID == home.ID) { // Context item is the home item } 回答2 只是从我的头顶: bool isStartItem = item.Paths.FullPath.Equals( Sitecore.Context.Site.StartPath

2022-05-08 11:31:03    分类:技术分享    sitecore   sitecore6   sitecore7

Sitecore7 LinqHelper.CreateQuery Buggy?

问题 这更像是一个澄清类型的问题,而不是关于LinqHelper.CreateQuery方法的实际问题。 所以, 此方法有 3 个重载。 这里有问题的 2 个是: 1. LinqHelper.CreateQuery<SearchResultItem>(searchContext, searchStringModel) 2. LinqHelper.CreateQuery<SearchResultItem>(searchContext, searchStringModel, startLocationItem) [我在这里没有使用任何额外的上下文,所以使用了默认值空值] 现在, 为了在内容树的特定位置搜索项目(例如,在特定文件夹下,您有 1000 个项目),我可以使用方法 1 使用查询: query = "location:{FOLDER_GUID};+custom:my_filed_name|bla_bla" 效果很好。 但是(从我从方法签名中了解到的是)我也应该能够使用方法 2,如下所示: SitecoreIndexableItem folderID = SitecoreIndexableItem)contextDatabase.GetItem({FOLDER_GUID}); var index = ContentSearchManager.GetIndex(new

2022-05-08 06:07:24    分类:技术分享    linq   search   sitecore   sitecore7

Log4Net - Can I have a custom section name in Config

问题 我需要在配置部分使用除 log4net 以外的部分名称。 我知道这是我们通常使用的 <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" /> 但我需要有这样的部分 <section name="log2net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" /> 我在一个 sitecore 网站上工作,它有自己的 Sitecore.Logging dll,它也是从 log4net 派生的。 所以 Sitecore Logging dll 指的是 web.config 中的 log4net 部分 我们有我们的自定义 log4net 附加程序,它仅适用于 log4net 而不适用于 sitecore.logging dll。 所以我想我的项目中可以有两个记录器,sitecore.logger 和 log4net 记录器。 Sitecore.logger 使用 log4net 部分,所以我希望 log4net 使用不同的部分,如 log2net 我尝试通过在配置中使用 log2net 部分来使用以下代码。 但我收到错误 log4net:ERROR

2022-05-06 12:11:27    分类:技术分享    log4net   sitecore   log4net-configuration

How to build a sitemap using Sitecore

问题 回答1 如果您想要一个站点地图页面来列出您网站上的页面,您应该尝试共享源模块“站点地图”。 http://marketplace.sitecore.net/en/Modules/Sitemap.aspx 但是,如果您正在使用站点地图进行搜索引擎优化,请使用站点地图 XML。 http://marketplace.sitecore.net/en/Modules/Sitemap_XML.aspx 回答2 这取决于您需要什么作为站点地图。 您想要一个发送到 Google 的 XML 站点地图吗? 或者您想要一个显示您网站结构的站点地图? 我建议查看 Sitecore 市场 (http://marketplace.sitecore.net/SearchResults#query=sitemap),可能下载源代码以了解它是如何完成的。 我认为两者都有一个例子。 否则,您也可以创建自己的,但我们需要更多信息 - 您想用 XSLT 编写还是使用 C# 等代码隐藏?

2022-05-05 03:05:07    分类:技术分享    sitecore

Sitecore presentation details don't update on template change

问题 我正在开发一个 Sitecore (6.4.0.101124) 网站,该网站有两个用于主页的模板。 它们具有非常相似的结构 - 它们之间的最大区别在于它们在标准值的表示详细信息的控件部分中都有一个不同的子布局。 我的理解是,当在项目上更改模板时,应将模板的标准值应用于该项目。 但是,当内容编辑器更改模板时,演示详细信息保持不变,直到我进入并更改它们。 所以这意味着要么我误解了它应该如何工作,要么正在发生一些奇怪的事情。 这与此线程中讨论的问题非常相似,但给出的答案似乎并不适用,因为该项目不是使用分支模板创建的。 有没有人有过类似的经历(并解决了)? 我在这应该如何工作方面偏离了基础吗? 回答1 你写: 我的理解是,当在项目上更改模板时,应将模板的标准值应用于该项目。 仅当未编辑字段时才适用。 编辑项目的字段后,编辑的值优先于默认值。 将模板更改为具有不同标准值的模板仅在未触摸该字段或用户使用“字段重置”按钮将字段重置为默认值时才会产生影响。 (请注意,手动清除该字段将不起作用。Sitecore 将存储一个空字符串,这将覆盖标准值。通过使用重置按钮,您将该字段设置为数据库空值,这会导致使用标准值.) 您可以通过在内容编辑器中检查字段旁边的文本“标准值”来判断该字段是否已被编辑: Sitecore 6.4.0 和布局增量 Sitecore 6.4.0 及更高版本的渲染字段更复杂

2022-05-04 06:43:04    分类:技术分享    templates   sitecore   sitecore6   presentation

Sitecore internal links to media files?

问题 在 Sitecore 6.5 解决方案中,我有以下内容; <sc:Text runat="server" Field="bodyText"/> 和 Sitecore.Context.Item["bodyText"] 我在解决方案中的很多地方都使用了后者——第一个没有那么多。 我现在发现,当使用后者时,所有指向媒体库的链接都采用~/media/31F0E8084F9443789F25836A2B285D3E.ashx格式,即使 web.config 中的Media.UseItemPaths设置为true 。 但是,当我使用第一个提到的方法<sc:Text />时,媒体库项目的链接格式正确(没有 guid,但媒体库的文件夹结构)。 这是怎么回事? 回答1 正如 halbherz 提到的后者 Sitecore.Context.Item["bodyText"] 是字段的文字值。 它不通过 sitecore RenderField管道,因此没有任何链接被扩展。 如果要从后面的代码中呈现字段,可以使用FieldRenderer类,例如: Sitecore.Web.UI.WebContols.FieldRenderer.Render("bodyText", Sitecore.Context.Item) 回答2 只是为了进一步澄清(@halbherz 和@marto 所说的完全正确)

2022-05-04 00:25:04    分类:技术分享    sitecore   sitecore6

How to find ancestor-or-self that is a child of an element with particular attribute?

问题 我正在使用一个非常通用的 XML 结构,其中一切都是一个项目(无论如何都与这个问题相关)。 基于知道我当前所在的 item 元素和我正在寻找的节点的父 item 元素,我需要找到一个 item。 我有一个可用的 xpath,但它相当耗费资源,我正在寻找更优雅、更便宜的东西。 item key=a node 是我要查找的元素的父级(尽管它实际上不是文档根的子级) XML: <root> <item key="a"> <item key="b"> <item key="c"> <item key="d"/> </item> </item> <item key="e"> <item key="f"> <item key="g"/> </item> </item> </item> </root> 实际的 XML 更深,分支也更多。 例如,如果我在 key=g、e 或 f 的项目上,我需要返回 key=e 的项目。 如果我在带有键 b、c 或 d 的项目上,我需要返回带有键 = b 的项目。 我正在使用这个正在工作的 xpath,但是在祖先-后代轴上上下移动似乎比我需要的要长得多。 current() /ancestor-or-self::item[@key='a'] /item[descendant-or-self::* = current()] 有没有更简单的方法,记住我只知道1

2022-05-01 14:28:28    分类:技术分享    xslt   xpath   sitecore

Log4Net - Can I have a custom section name in Config

I have a need to use section name other than log4net in the config section. I know this is what we generally use <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" /> But I need to have a section like this <section name="log2net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" /> I am working on a sitecore website and it has its own Sitecore.Logging dll which is also derived from log4net. So the Sitecore Logging dll is referring to section log4net in web.config We have our custom log4net appender that works only with log4net and not with

2022-04-30 07:28:29    分类:问答    log4net   sitecore   log4net-configuration

Sitecore presentation details don't update on template change

I'm working on a Sitecore (6.4.0.101124) site that has two templates used for the home page. These have a very similar structure - the big difference between them is that they each have one different sublayout in the Controls section of the Presentation Details of the Standard Values. My understanding is that when the template is changed on an item the standard values of the template should be applied to that item. However, when the content editors change the template the presentation details remain the same until I go in and change them. So this means that either I misunderstand how this is

2022-04-30 05:00:38    分类:问答    templates   sitecore   sitecore6   presentation

Sitecore internal links to media files?

In a Sitecore 6.5 solution, i have the following; <sc:Text runat="server" Field="bodyText"/> and Sitecore.Context.Item["bodyText"] I use the latter many places in the solution - the first not so much. I have now discovered that when using the latter, all links to the medialibrary is in the format ~/media/31F0E8084F9443789F25836A2B285D3E.ashx even though Media.UseItemPaths is set to true in the web.config. However, when i use the first mentioned method <sc:Text /> the links to medialibrary items are in the correct format (without the guid, but the folder structure of the media library). Whats

2022-04-28 17:47:49    分类:问答    sitecore   sitecore6