Настройка частей темы сада - PullRequest
2 голосов
/ 05 февраля 2011

Я пытаюсь написать собственную тему для сада и пока не добиваюсь большого успеха. Я прочитал статью Бертрана Ле Роя о чередующихся частях, но я не могу заставить ее работать.

Я показываю список последних постов в блоге на первой странице, довольно стандартный. Я хочу изменить разметку, созданную частью метаданных, т.е. форматом времени.

Я написал IShapeTableProvider, чтобы создать определенные для блога альтернативы для сводной части метаданных.

public class MetaDataShapeProvider : IShapeTableProvider
{
    private readonly IWorkContextAccessor workContextAccessor;

    public MetaDataShapeProvider(IWorkContextAccessor workContextAccessor)
    {
        this.workContextAccessor = workContextAccessor;
    }

    public void Discover(ShapeTableBuilder builder)
    {
        builder
          .Describe("Parts_Common_Metadata_Summary")
          .OnDisplaying(displaying =>
          {
              ContentItem contentItem = displaying.Shape.ContentItem;
              if (contentItem != null)
                displaying.ShapeMetadata.Alternates.Add("Metadata__" + contentItem.ContentType);
          });
    }
}

Это перехватывается правильно, но contentItem имеет значение null. Должен ли я просто создать альтернативу с фиксированным именем, например «Metadata-BlogPost», и использовать ее, чтобы сделать это общее назначение, это действительно должно быть динамическое имя, чтобы я мог использовать другой альтернативный шаблон в другом месте.

Спасибо

Ian

1 Ответ

1 голос
/ 09 марта 2011

Попробуйте извлечь элемент содержимого из части содержимого, для которой отображается форма, например:

displaying.Shape.ContentPart.ContentItem;

Вместо

displaying.Shape.ContentItem;

Получается форма Parts_Common_Metadata_Summary связанный объект части содержимого, переданный как именованный параметр ContentPart , что должно быть сделано.

HTH

...