在选项卡菜单中获取附件字段 属性

Getting an attachment field property in a tab menu

所以我尝试通过选项卡使用最简单的菜单向每个菜单项添加自定义图标,但向每个页面添加名为 "icon" 的附件字段。

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

这是最简单的视图:

<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 之类的东西似乎不是正确的方法。

你可以这样做:

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

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

apos.attachments.url 辅助函数接受一个附件和一个选项对象以及 returns 一个 URL,无论您使用本地存储、S3 还是 uploadfs,这都是正确的别的。

对于图像,如果您不指定 size 选项,您将获得 full 大小。这是为了防止意外使用原始文件,这会导致带宽问题,并可能使用户误以为 Apostrophe 不提供合理缩放的大小。要使用原始版本(我们不推荐),请将 size 设置为 original

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