Sitecore:有效的方式来显示项目的名称,这是保存在类型链接类型字段:Droptree

本文关键字:类型 存在 保存 字段 Droptree 链接 方式 有效 显示 项目 Sitecore | 更新日期: 2023-09-27 18:14:17

假设Sitecore Item item有一个类型为Link Types:Droptree的字段Created by

我想打印保存在Created by字段中的项目名称。下面的<sc:Text Field="Created by" runat="server"/>行将打印ItemId。显示该项目的名称的有效方法是什么?

我知道我可以从数据库中获取项目,然后将其名称打印为:

<asp:Label runat="server" ID="lblItemName"></asp:Label>
在后台代码:

 if (!Page.IsPostBack)
            {
                Item currentItem = Sitecore.Context.Item;
                Item relatedItem = Sitecore.Context.Database.GetItem(currentItem["Created by"]);
                lblItemName.Text = relatedItem.Name;
            }

Sitecore:有效的方式来显示项目的名称,这是保存在类型链接类型字段:Droptree

您需要将Item值传递给<sc:Text/>标签,否则它将使用上下文项。

<sc:Text Field="Created by" Item="<%# RelatedItem %>" runat="server"/>

在代码中设置RelatedItem的值,并在Page_Load()方法的末尾调用DataBind();

我不认为这是可能呈现一个项目的名称与<sc:Text />,因为它是一个字段渲染器。

所以你必须像你做的那样做:

var currentItem = Sitecore.Context.Item;
// Alternative way to get the linked item
var createdByField = (ReferenceField) currentItem.Fields["Created by"];
var createdByItem = createdByField.TargetItem;
var createdByItemName = createdByItem.Name;
lblItemName.Text = createdByItemName;

如果您想从链接项(createdByItem)中呈现字段,而不是当前上下文项,您可以这样做:

<sc:Text runat="server" Field="Headline" ID="scRelatedItem" />
Item属性设置为想要从标题字段中读取的项,后面的代码:
scRelatedItem.Item = createdByItem;

这样做还可以使编辑器通过页面编辑器(在Sitecore 8中称为体验编辑器)编辑字段。

相关文章: