Публикация PDF-файлов при использовании шаблонов Tridion Razor

У меня возникла проблема с публикацией двоичных файлов (файлов PDF) из Tridion с использованием Razor Templating.

У меня есть шаблон компонента, для которого установлено значение «Опубликовано как динамический компонент» с одной связанной мультимедийной схемой.

Я использую расширение Razor Mediator, а шаблон компонента содержит два строительных блока шаблона. :

  1. Шаблон Razor, который выводит некоторый HTML и ссылку на двоичный файл в мультимедийном компоненте.
  2. The Default Finish Actions TBB containing the following:
    • Publish Binaries in Package
    • Преобразователь ссылок
    • Персонализация целевой группы
    • Шаблон очистки
    • Преобразование XML в HTML

Шаблон Razor содержит следующий код (я немного упростил его): введите здесь описание изображения

Похоже, что это правильно разрешает двоичную ссылку и создает следующую презентацию динамического компонента: введите описание изображения здесь

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

Поскольку посредник Razor имеет параметр «extractBinaries» в файле Tridion.ContentManager.config, я подозреваю, что посредник должен добавить двоичные файлы в пакет. Я убедился, что для параметра extractBinaries установлено значение «true», однако двоичный файл не добавляется в пакет (хотя обрабатываемый мультимедийный компонент находится в пакете как элемент tridion/component).

Кто-нибудь знает, доступна ли эта функция и работает ли она в Razor Mediator? Я подозреваю, что Razor Mediator ожидает, что код ссылки будет в определенном формате, но я не могу найти ничего по этому поводу в документация.

Я также попытался добавить TBB «Извлечь двоичные файлы из Html» в шаблон компонента (в соответствии с шаблоном Razor), но получаю следующую ошибку: «Вывод элемента должен иметь указанное свойство TCMURI». Я подозреваю, что это связано с тем, как Razor Mediator добавляет элемент «Вывод» в пакет.

Я мог бы написать новый TBB, чтобы убедиться, что двоичный файл добавлен в пакет, но я бы предпочел не делать этого, если функциональность уже доступна в Razor Mediator.

Заранее спасибо.

P.S. Извиняюсь за изображения. Stackoverflow не хотел правильно форматировать код.


person Jonathan Williams    schedule 18.04.2012    source источник
comment
stackoverflow.com/editing-help   -  person SLaks    schedule 18.04.2012
comment
SLacks. Как говорится в вашей ссылке, я думаю, что проблема заключалась в том, что Markdown и HTML игнорируются в блоке кода. Спасибо, Джон   -  person Jonathan Williams    schedule 18.04.2012
comment
Вы уверены, что наличие ссылки ‹a на двоичный файл фактически должно опубликовать этот двоичный файл? Большинство модулей Tridion обычно автоматически публикуют только те двоичные файлы, которые необходимы для правильного отображения опубликованного контента, поэтому такие вещи, как ‹img src=. Связанные двоичные файлы часто преднамеренно обрабатываются по-разному, хотя я не могу сказать, должен ли Razor Mediator автоматически публиковать связанные двоичные файлы.   -  person Frank van Puffelen    schedule 18.04.2012
comment
Привет, Фрэнк. Да, я согласен с тем, что обычно вам нужно разрешить публикацию двоичных файлов из ваших шаблонов. Однако, поскольку у Razor Mediator есть параметр «extractBinaries», я подозреваю, что он должен справиться с этим. Спасибо,   -  person Jonathan Williams    schedule 18.04.2012


Ответы (3)


К сожалению, Razor Mediator в настоящее время не добавляет двоичный файл PDF в пакет, когда он находится в теге (таким образом, он не подхватывается TBB публикации двоичных файлов), хотя у меня довольно хорошее предчувствие, что версия 1.3 позаботится об этом;) .

Тем временем вы можете использовать тип TBB «Добавить неразрешенные двоичные зависимости». В данный момент у меня его нет под рукой, но дайте мне знать, если он вам понадобится, и я отправлю вам код позже сегодня вечером.

EDIT Отмените мое заявление о том, что оно не добавлено в пакет, я думал о другом сценарии.

Вместо этого попробуйте следующее:

<a href="@Component.ID">@Component.Metadata.title</a>
person Alex Klock    schedule 26.04.2012
comment
Спасибо, Алекс. Я думал, что функциональность там будет - я просто не знал синтаксиса. Я попробую, как только вернусь в офис, и опубликую обновление. - person Jonathan Williams; 29.04.2012
comment
Привет, Алекс. Большое спасибо за ваш ответ по этому поводу. Я протестировал его, и оказалось, что использование предложенного вами синтаксиса действительно добавляет компонент PDF в пакет и публикует его. Однако это вызывает еще одну проблему, заключающуюся в том, что он не добавляет tcmId компонента к имени файла. Это означает, что при публикации двух PDF-файлов (содержащихся в разных папках в Tridion) с одинаковым именем файла возникают ошибки, что приводит к сбоям публикации. Поскольку на моем сайте тысячи PDF-файлов, я подозреваю, что для этого мне, возможно, придется использовать отдельный TBB. Большое спасибо. - person Jonathan Williams; 11.06.2012

Это сработало для меня:

@{ 
  var item = TridionHelper.Package.CreateMultimediaItem(Component.ID);
  TridionHelper.Package.PushItem("CurrentMultimedia", item);
}

За ним, конечно же, следует PublishBinariesInPackage, хотя, поскольку вы также можете получить доступ к движку аналогичным образом, возможно, сработает и прямой AddBinary.

person Dominic Cronin    schedule 06.11.2012

Я не использовал Razor Mediator, но пробовали ли вы добавить Default Finish Actions или Publish Binaries in Package TBB в свой шаблон?

person Chris Summers    schedule 18.04.2012
comment
Привет Крис. Шаблон компонента уже содержит TBB «Действия завершения по умолчанию» (который содержит TBB «Публикация двоичных файлов в пакете»). Проблема в том, что бинарный файл никогда не находится в пакете для публикации. Спасибо, Джон - person Jonathan Williams; 18.04.2012