- 22, Oct 2024
- #1
Есть ли способ повторно использовать код для вычисляемого индексного поля, не создавая производные классы? Я хотел бы иметь в конфигурации дополнительное свойство, которое сообщает методу ComputeFieldValue, из какого поля шаблона следует читать.
Итак, мой патч конфигурации будет выглядеть так:
public class MyComputedIndexField : AbstractComputedIndexField { public string TemplateFieldName { get; set; } public override object ComputeFieldValue(IIndexable indexable) { Item item = indexable as SitecoreIndexableItem; if (item == null) { return null; } var values = item[TemplateFieldName]?.Split(new[] {";"}, StringSplitOptions.RemoveEmptyEntries); //readthe TemplateFieldName property here return values?.Select(v => v.Trim()).ToList(); } }
И мой класс индексации будет следующим:
<field
fieldName="mounting"
templateFieldName="Mounting" <<new property here
returnType="stringCollection">
MyNamespace.MyComputedIndexField, MyAssembly
</field>
Очевидно, я мог бы просто установить для свойства fieldName по умолчанию имя поля шаблона, но это ограничило бы имя моего поля, названное в честь имени поля шаблона.
#content-search