2013-09-11 3 views
4

Я сохраняю информацию обрезания на своих изображениях в медиатеке Sitecore в поле, которое было добавлено в шаблон /sitecore/templates/System/Media/Unversioned/Image.Как расширить Glass.Mapper.Sc.Fields.Image с дополнительными свойствами?

Я хотел бы получить доступ к этому полю вместе со всеми другими свойствами, которые существуют в полевом поле типа Glass.Mapper.Sc.Fields.Image, так что я могу продолжать использовать GlassHtml.RenderImage() в моих представлениях.

Мои первоначальные попытки унаследовать от класса были безуспешными - похоже, это нарушает поведение отображения - так что мне интересно, есть ли другой способ расширить этот класс с дополнительными свойствами?

Вот что я пробовал:

[SitecoreType(AutoMap = true)] 
public class MyImage : Glass.Mapper.Sc.Fields.Image 
{ 
    public virtual string CropInfo { get; set; } 
} 

ответ

4

Вам нужно будет реализовать обработчик данных для отображения дополнительного поля.

Я хотел бы создать обработчик данных, который наследуется от стандартного обработчика данных изображения:

https://github.com/mikeedwards83/Glass.Mapper/blob/master/Source/Glass.Mapper.Sc/DataMappers/SitecoreFieldImageMapper.cs

Затем настроить GetField и SetField.

После того, как вы создали пользовательский обработчик данных, вам необходимо зарегистрировать его в контейнере Windsor. См обучающую 19 о том, как это сделать:

http://glass.lu/docs/tutorial/sitecore/tutorial19/tutorial19.html

важная часть:

public static void CastleConfig(IWindsorContainer container){ 
     var config = new Config(); 

     container.Register(
      Component.For < AbstractDataMapper>().ImplementedBy<TweetsDataHandler>().LifeStyle.Transient 
     ); 

     container.Install(new SitecoreInstaller(config)); 
} 
+0

Ссылка на учебник 19 в этой должности истек. Для тех, кто ищет эту страницу, обновленная ссылка: http://www.glass.lu/Mapper/Sc/Tutorials/Tutorial19 – NJH

+0

У меня проблемы с моим расширенным изображением. Мой тип также происходит из Glass.Image, но RenderImage() или Editable() не отображают поле редактирования файла sitecore в редакторе опыта. Я использую последнюю версию Glass с Sitecore 8.0.4. Но я подозреваю, что это может быть из-за проверки типа Glass.Image в GlassHtml? Есть ли способ обойти это? – qkp

+0

@qkp У меня такая же проблема. Стандартное поле изображения для стекла отображает изображение в порядке, но как только я обновляю его, чтобы использовать свое собственное поле для стеклянного изображения (которое наследуется от изображения), я не получаю никакого изображения. Я создал для него карту данных и зарегистрировал ее с помощью нашего IOC (Simple Injector). Вы дошли до сути проблемы? –

Смежные вопросы