2017-02-02 54 views
0

我想爲我的網站創建一個自定義apostrophe-images-widgets佈局。我目前爲lib/modules/apostrophe-images-widgets/views/widget.html中的html模板創建了一個項目級覆蓋。我遇到的問題是每當我選擇一張圖片放入我的自定義區域時,apos.attachments.url被調用兩次:一次使用我選擇的圖像,一次使用undefined附件。撇號圖片小部件自定義小部件調用apos.attachments.url兩次

我定製widget.html看起來像這樣:

<a href="/"><img class="logo" src="{{ apos.attachments.url(image.attachment, { size: 'full'}) }}" /></a> 

我的整個lib目錄看起來像這樣:

custom lib

app.js是設置默認配置。

我定製layout.html所引用的圖片,像這樣:

{{ 
    apos.area(data.page, 'web-logo', { 
     widgets: { 
      'apostrophe-images': { 
       size: 'full' 
      } 
     } 
    }) 
}} 

我不知道還有什麼其他inforamtion我可以給你,不是例外其他在這裏扔在apostrophe-attachments/lib/api.js

self.url = function(attachment, options) { 
    options = options || {}; 

    // THROWS ERROR AT `attachment._id` 
    var path = '/attachments/' + attachment._id + '-' + attachment.name; 
    if (!options.uploadfsPath) { 
    path = self.uploadfs.getUrl() + path; 
    } 
// other code 
} 

我不太確定哪裏可以找到解決方案...還有什麼我可以提供的,請讓我知道。

我還沒有覆蓋的apostrophe-images-widgetsindex.jsapostrophe-images

確切的錯誤我得到的是漫長的,但這裏是堆棧跟蹤的開始

TypeError: Cannot read property '_id' of undefined

並不十分有益的,但僅此而已。

感謝您的閱讀和任何幫助!

回答

1

我是P'unk大道撇號的首席建築師。

如果您在apostrophe-images-widgets模塊中查看widgetBase.html,您會發現image未直接傳遞給模板。相反,撇號始終將數據作爲data對象的屬性傳遞給模板。並且在小部件的情況下,與小部件相關聯的數據以data.widget的形式傳遞。

圖像小部件特別擴展了小部件,它可能會顯示多個項目。所以它的模式中有一個連接,你可以在數組屬性data.widget._pieces中找到實際的部分(圖像)。

最後一個皺紋:有時候這些連接具有它們自己的「關係屬性」,在這種情況下是裁剪座標(如果有的話),它們與實際圖像是分開的。因此,數組中的每個條目實際上都是一個具有item屬性(圖像)和與作物相關的其他屬性的對象。因此需要額外的一行代碼來獲取數組中每個條目的實際項目。

這裏是你的代碼的工作版本:

{%- for entry in data.widget._pieces -%} 
    {# Works whether there's a relationship in the join or not. Normally there always #} 
    {# is for slideshows, but just in case someone really hates cropping... -Tom #} 
    {%- set image = entry.item or entry -%} 
    <a href="/"><img class="logo" src="{{ apos.attachments.url(image.attachment, { size: 'full'}) }}" /></a> 
{%- endfor -%} 

希望這是有幫助的!

P.S.還有一件事:不要在你的地區名稱中使用連字符。你會注意到撇號正在顯示一條警告。如果您願意,您可以使用CamelCase。