2012-07-11 15 views
-1

我想從內容管理器的文件夾中的一個我的所有圖像移動到文件夾中的一個服務器,該怎麼辦呢使用C#TBB嗎?如何使用C#TBB從內容管理器發佈圖像文件夾?

+0

你爲什麼不乾脆從Web GUI做到這一點? – 2012-07-11 12:54:11

+0

我認爲他的意思是出版。 – 2012-07-11 13:00:05

+0

是的,它是出版,但我希望有一個C#代碼,讓我發佈,我圖像文件夾中的內容管理 – Priyanku 2012-07-11 13:01:17

回答

5

在支持SDL Tridion世界,你可以找到一套有用的模板積木其中包含了一個解決方案:http://sdltridionworld.com/community/extension_overview/useful_tbbs.aspx

見#5:獲取CSS圖片 - 發佈在一個特定的文件夾CMS的所有圖像。

下面是從解決方案的代碼的文檔片斷只是爲了得到它如何做的想法。

Filter filter = new Filter(); 
filter.Conditions["ItemType"] = ItemType.Component; 
filter.Conditions["Recursive"] = false; 
foreach (Component img in folder.GetItems(filter)) 
{ 
    if (img.ComponentType == ComponentType.Multimedia) 
    { 
     string filename = Utilities.GetFilename(img.BinaryContent.Filename); 
     Item item = package.GetByName(filename); 
     bool push = true; 
     if (item != null) 
     { 
      Logger.Debug("An item with the same name exists in the package"); 
      KeyValuePair<string, string> pair = new KeyValuePair<string,string>("TCMURI", img.Id.ToString()); 
      if (item.Properties.Contains(pair)) 
      { 
       Logger.Debug("An item with the same uri exists in the package, we will not push it twice to the package."); 
       push = false; 
      } 
     } 
     if(push) 
     { 
      Logger.Debug(String.Format("Pushing item {0} to the package", filename)); 
      package.PushItem(filename, package.CreateMultimediaItem(img.Id)); 
     } 
    } 
} 

而是從推動項目進入包裝,並允許它由默認完成動作被公開的,你也可以撥打AddBinary並指定結構組你想它出版了。

Engine.PublishingContext.RenderedItem.AddBinary(img, structureGroup); 

有關更多詳細信息,請參閱TOM.NET API文檔。

+0

我無法下載...... – Priyanku 2012-07-11 13:07:46

+0

什麼是你有下載它的問題,它應該是提供給大家? – 2012-07-11 13:10:21

+0

可能是我的組織中的混蛋。它是否與SDL集成? – Priyanku 2012-07-11 13:18:02

1

幾個方法可以做到這一點:

1)靜態發佈,這是創建一個結構基團(即,將在服務器上創建)和內部創建一個頁面的文件夾。您的頁面將需要一個元數據模式,以獲取多值多媒體組件鏈接,以便您可以將圖像添加到頁面的元數據中。您需要爲此頁面構建一個頁面模板,該模板將具有TBB,該頁面從頁面元數據中獲取多媒體組件,並使用Engine.AddBinary方法將圖像添加到包中並與頁面一起發佈(頁面輸出可以成爲一些虛擬的東西)。請注意,如果您有很多圖片,將會對性能產生影響。

2)動態發佈:如果你有經紀人,您可以配置文件系統發佈。然後創建一個鏈接到您的圖像架構的動態組件模板。內部使用TBB和引擎.AddBinary方法用於給定MM組件將圖像發佈到給定結構組作爲動態組件顯示。

+0

我已經添加了使用默認多媒體模式的圖像,如果我寫了一個TBB,那麼我該如何渲染圖像呢? – Priyanku 2012-07-11 13:12:01

+0

你也可以告訴我渲染元數據模式字段的代碼 – Priyanku 2012-07-11 13:34:50

+2

對不起,但我沒有時間來編寫這個gor你。你最好的辦法是看看Bart建議作爲樣本的TBB中的代碼。要從元數據模式中獲取字段,請使用ItemFields API(請參閱您的Tridion文檔)。你不需要在這裏渲染任何東西。一旦你掌握了圖像組件,只需使用engine.AddBinary – 2012-07-11 13:42:38

相關問題