1

所以我试图通过标签使用最简单的菜单为每个菜单项添加一个自定义图标,但在每个页面上添加一个名为“icon”的附件字段。

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

这是最简单的视图:

<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>

这是 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 作为一个对象存在。但我只是不知道如何获取 URL。tab.icon._url 之类的东西似乎不是正确的方法。

4

1 回答 1

2

你可以这样做:

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

此处的tab变量假定您将此代码粘贴到for已经引入它的循环中。

apos.attachments.url辅助函数接受一个附件和一个选项对象并返回一个 URL,无论您是使用带有本地存储、S3 还是其他东西的 uploadfs,这都是正确的。

对于图像,如果您不指定size选项,您将获得full大小。这是一种防止意外使用原件的保护措施,这会导致带宽问题,并使用户误以为 Apostrophe 没有提供合理缩放的尺寸。要使用原始版本(我们不推荐),请设置sizeoriginal.

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

于 2017-03-07T12:56:09.430 回答