2017-03-06 44 views
1

所以我试图通过使用最简单的菜单通过选项卡添加一个自定义图标到每个菜单项,但添加名为“图标”的附件字段到每个页面。在选项卡菜单中获取附件字段属性

什么是正确的方式来调用图标附件字段的网址?

Here's在it's简单视图:

<ul class="b2b-menu"> 
      {% for tab in data.home._children %} 
       <li class="move-link"> 
        <a> 
        <img alt="Page Icon" src="{{ apos.attachments.url(attachment) }}" width="48" height="48" /> 
        <span>{{ tab.title }}</span> 
        </a> 
       </li> 
      {% endfor %} 
     </ul> 

Here's的index.js:

module.exports = { 
     beforeConstruct: function(self, options) { 
      options.addFields = [{ 
        name: 'metaDescription', 
        label: 'Meta Description', 
        type: 'string' 
       }, 
       { 
        name: 'icon', 
        label: 'Icon', 
        type: 'attachment' 
       }] 
      } 
     }; 

我可以看到,存在tab.icon作为对象。但我只是无法弄清楚如何获取网址。东西像tab.icon._url等..似乎不是正确的方法。

回答

2

你可以这样说:

{% if tab.icon %} 
    <img src="{{ apos.attachments.url(tab.icon, { size: 'one-sixth' }) }}" /> 
{% endif %} 

tab变量这里假设你在粘贴for循环,这已经介绍了这里面的代码。

apos.attachments.url辅助函数需要一个附件和一个选项对象,并返回一个URL,无论您是使用本地存储,S3还是其他方式使用uploadfs,该URL都是正确的。

对于图像,如果您未指定size选项,则会得到full大小。这是防止原始意外使用的保护措施,这会导致带宽问题,并且可能会使用户认为撇号不提供合理的缩放尺寸。要使用原件(我们不建议),请将size设置为original

对于其他类型的附件(即apostrophe-files),您不需要size选项,因为直接链接到文件是唯一明智的选择。

+0

虽然这段代码是受欢迎的,并且可能会提供一些帮助,但如果它包含* how *和* why *的解释(// meta.stackexchange.com/q/114762)解决了这个问题。请记住,你正在为将来的读者回答这个问题,而不仅仅是现在问的人!请编辑您的答案以添加解释,并指出适用的限制和假设。 –

+0

解释:选项卡它是for循环中引用对象和图标的名称,它是要呈现的选定字段。 – diramazioni

+0

完全正确,我最初的回答太多了“ta-dah”。详细信息添加 –