2012-07-31 3 views
6

Ich versuche, eine benutzerdefinierte Resolver für eine Komponente zu implementieren, wie von Chris hier beschrieben: http://www.tridiondeveloper.com/the-story-of-sdl-tridion-2011-custom-resolver-and-the-allowwriteoperationsintemplates-attributeWie entfernt man Artikel mit einem Tridion-Resolver?

I (meist PDF-Dateien) in der Komponente verwendet und sie von Verlags verhindern einige der Binärdateien entfernen möchten. Ich kann die Liste der verwendeten Elemente mit der item.GetListUsedItems-Methode abrufen. Wie entferne ich sie?

mit: tridion 2009

+0

Könnten wir Sie interessieren für die [Area 51 Tridion spezifischen Vorschlag] (http://area51.stackexchange.com/proposals/38335/tridion?referrer=gPujQMxthNCNn9xqeeO2NA2). Melden Sie sich mit dem gleichen SO-Konto an, wenn Sie einen Moment Zeit haben. –

Antwort

9

der Resolver Prozess bestimmt Zu Publishing Zeit, die Artikel veröffentlicht werden soll, wie wenn Sie eine Strukturgruppe veröffentlichen, die Standard-Resolver werden alle Seiten in der Struktur Gruppe der Transaktion veröffentlichen hinzuzufügen.

Resolver behandeln nur Elemente in der Veröffentlichungstransaktion, die direkt publishbar sind. Dies sind Seiten und dynamische Komponentenpräsentationen. So behandelt ein Resolver die verknüpften Multimedia-Komponenten nicht, diese werden vom Template-Code durch Aufruf der AddBinary()-Methode veröffentlicht.

Wenn Sie Multimedia-Komponenten aus Ihrer Veröffentlichungsaktion entfernen möchten, sollten Sie sich die Komponentenvorlage ansehen, die diese verarbeitet (wenn sie dem Paket hinzugefügt werden, übernimmt die Standardabschlussaktion sie normalerweise und veröffentlicht sie). Bedenken Sie jedoch, dass eine Multimedia-Komponente mindestens einmal veröffentlicht werden muss, da Sie sie sonst nie auf Ihrem Präsentationsserver erhalten werden.

+1

+1 für das Aufzeigen des Unterschieds, @Bart. Frank van Pufelen beschreibt die beiden Ansätze (_implicit_ über Template-Code/'AddBinary()' und _explicit_ über eine multimediale Veröffentlichung und dynamische Komponentenvorlagen) auf [TridionWorld] (http://www.sdltridionworld.com/community/2011_extensions/binaryeventtracker). aspx). –

3

Überprüfen Sie den folgenden Code-Schnipsel zu entfernen, müssen Sie überprüfen, ob die Multimedia-pdf ist oder nicht, aber werden Sie gehen. Hier ist der Verweis-Link auch sehr gut mit Beispiel-Code erklärt (Code unten ist aus dem gleichen Artikel).

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 .. 
       } 
      } 
     } 
+0

Ich denke, die Liste aufgelöste Elemente hat Komponenten. Ich versuche, das binäre Element in der Komponente zu entfernen – user1373140

+0

Wie veröffentlichen Sie die Binärdatei in der Komponente? Ist es über DWT-Code? Wenn es über DWT ist, warum möchten Sie dann die Binärdatei mit dem Resolver entfernen, da Sie mit einer fehlerhaften binären Verbindung enden. Wenn Sie die Binärdatei veröffentlichen, genügt der obige Code Ihren Anforderungen mit der Check-Bedingung für 'ComponentType.Multimedia' –

Verwandte Themen