Как удалить элементы из публикации с помощью Tridion Resolver?

Я пытаюсь реализовать собственный преобразователь для компонента, как описано здесь Крисом: http://www.tridiondeveloper.com/the-story-of-sdl-tridion-2011-custom-resolver-and-the-allowwriteoperationsintemplates-attribute

Я хочу удалить некоторые двоичные файлы (в основном pdf), используемые в компоненте, и предотвратить их публикацию. Я могу получить список использованных предметов, используя метод item.GetListUsedItems. Как их удалить?

использование: тридион 2009


person user1373140    schedule 31.07.2012    source источник
comment
Можем ли мы заинтересовать вас в принятии конкретного предложения Area 51 Tridion. Зарегистрируйтесь с той же учетной записью SO, если у вас есть время.   -  person Bart Koopman    schedule 01.08.2012


Ответы (2)


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

Резолверы имеют дело только с элементами в транзакции публикации, которые могут быть опубликованы напрямую, а именно со страницами и презентациями динамических компонентов. Таким образом, Resolver не обрабатывает связанные мультимедийные компоненты, они публикуются кодом шаблона посредством вызова метода AddBinary().

Если вы хотите удалить мультимедийные компоненты из действия «Публикация», вам следует заглянуть в шаблон компонента, который их обрабатывает (если они добавлены в пакет, TBB действия «Завершение по умолчанию» обычно подбирает их и публикует). Но имейте в виду, что мультимедийный компонент должен быть опубликован хотя бы один раз, иначе вы никогда не получите его на своем сервере презентаций.

person Bart Koopman    schedule 01.08.2012
comment
+1 за указание на разницу, @Bart. Франк ван Паффелен представляет два подхода (неявный через код шаблона/AddBinary() и явный через мультимедийную публикацию и шаблоны динамических компонентов) на TridionWorld. - person Alvin Reyes; 02.08.2012

Проверьте приведенный ниже фрагмент кода, чтобы удалить его, вам нужно проверить, является ли мультимедиа pdf или нет, но это поможет вам. Вот справочная ссылка, очень хорошо объясненная с примером кода (код ниже из той же статьи).

http://www.tridiondeveloper.com/a-custom-resolver-in-practice

       Component component = (Component)item;
        if (component.ComponentType == ComponentType.Multimedia)
        {
            foreach (ResolvedItem resolvedItem in originalResolveItemList)
            {
                if (resolvedItem.Item.Id != item.Id)
                {
                    resolvedItems.Remove(resolvedItem); // to remove ..
                }
            }
        }
person Ram G    schedule 31.07.2012
comment
Я думаю, что в списке разрешенных элементов есть компоненты. Я пытаюсь удалить двоичный элемент внутри компонента - person user1373140; 31.07.2012
comment
Как вы публикуете двоичный файл внутри компонента? Это через код DWT? Если это через DWT, то почему вы хотите удалить двоичный файл с помощью распознавателя, поскольку в итоге вы получите неработающую двоичную ссылку. Если вы публикуете двоичный файл, приведенного выше кода будет достаточно для ваших нужд с условием проверки для ComponentType.Multimedia - person Ram G; 31.07.2012