It is not possible out of the box in Sitecore.
Filling of item properties is not configurable, it is hardcoded:
private static void FillProperties(ItemDataModel itemModel, Item item, string urlPrefix)
{
item.Fields?.ReadAll();
itemModel.Id = item.ID.Guid.ToString();
itemModel.Name = item.Name;
itemModel.Path = item.Paths?.Path;
itemModel.Language = item.Language?.Name;
itemModel.Version = ((item.Version != null) ? item.Version.Number : (-1));
itemModel.IsLatestVersion = (item.Versions?.IsLatestVersion() ?? false);
itemModel.ParentId = ((!ID.IsNullOrEmpty(item.ParentID)) ? item.ParentID.Guid : Guid.Empty);
itemModel.TemplateId = ((!ID.IsNullOrEmpty(item.TemplateID)) ? item.TemplateID.Guid : Guid.Empty);
itemModel.TemplateName = item.TemplateName;
itemModel.Created = (((DateTimeOffset?)item.Statistics?.Created) ?? default(DateTimeOffset));
itemModel.Updated = (((DateTimeOffset?)item.Statistics?.Updated) ?? default(DateTimeOffset));
itemModel.Url = FormattableString.Invariant($"{urlPrefix}('{itemModel.Id}')");
itemModel.DisplayName = item[FieldIDs.DisplayName];
}
What you can do:
- Inherit your new model data factory from
ItemDataModelFactory
- Override
public virtual ItemDataModel GetModel(Item item, string urlPrefix)
method. It calls FillProperties
. After filling properties, you should be able either add a new property for the link or change existing.
- Inherit from
Sitecore.Content.Services.Controllers.ItemsController
(it is responsible for ItemService APi). Pass to constructor your new ItemDataModelFactory instead of Sitecore.Content.Services.Items.OData.ItemDataModelFactory
- Register your new route