2013-03-28 57 views
6

我試圖將新聞項目中的內容複製到我編寫的其他內容類型。在我的腳本中,我有news項目和project項目。第二個,project是使用敏捷定義的內容類型。如果我能夠將圖像和正文文本從news複製到project,那就太好了。將Archetype新聞項目遷移到敏捷內容類型

project.text = news.text 
project.image = news.image 

其中的文字和圖片在project模式作爲富文本和NamedBlobImage定義。我不知道新聞中的屬性如何。我只知道我可以使用方法getImage()在新聞項目中獲取圖像,但將其分配給項目時,會在渲染項目時產生錯誤。

所以我需要一些指引,以解決我的基本問題:

  1. 我怎麼能知道原型的內容類型的屬性名稱。例如,在這種情況下,我需要知道新聞項目正文的屬性名稱。

  2. 如何將附加到新聞項目的圖像轉換爲附加到敏捷內容類型的圖像。

回答

6
  1. 您使用的字段從原型架構檢索值,最好的原始值在這種情況下。你傳入,然後調用要麼.get().getRaw()對象:

    schema = news.Schema() 
    news = schema.getField('text').getRaw(news) 
    imageField = schema.getField('image') 
    image = imageField.getRaw(news) 
    content_type = imageField.getContentType(news) 
    filename = imageField.getFilename(news) 
    
  2. ImageField.getRaw()調用返回的對象基本上是一個OFS.Image實例。您可以撥打str()獲取原始圖像數據。

    設置圖像對象,你真的想從架構得到像場,並使用它的._type屬性作爲工廠:

    project.image = IProjectInterface.image._type(str(image), 
        contentType=content_type, filename=filename) 
    

    內容類型這裏是可選的; NamedImageNamedBlobImage類型也自動嗅探內容類型。

+0

Dank je vel,Martijn! –

相關問題