Как получить доступ к настраиваемым полям в цикле data.home._children - PullRequest
0 голосов
/ 09 июня 2018

Я добавил несколько пользовательских полей в lib / modules / apostrophe-custom-pages / index.js

В частности, я добавил поле для выдержки, изображение Singleton для обложки иеще один синглтон, который позволит пользователям определять значок на странице.

Вот как определяются эти изображения:

 {
    name: 'icon',
    label: 'Icon',
    type: 'singleton',
    widgetType: 'apostrophe-images',
    options:{
        limit: 1,
        minSize: [200,200],
        aspectRatio: [1,1],
    },
    controls:{
      movable:false
    },
    image: true
  },
 {
    name: 'coverimg',
    label: 'Header Image',
    type: 'singleton',
    widgetType: 'apostrophe-images',
    options:{
        limit: 1,
        minSize: [400,400],
        aspectRatio: [1,1],
    },
    controls:{
      movable:false
    },
    image: true
  }

Изображение обложки и значок, который я могу получить, находясь на страницеиспользуя: {% set coverimage = apos.images.first(data.page.coverimg) or null %},

, однако я не могу добраться до значка в навигации под data.home._children, например, так:

    {%- for tab in data.home._children -%}
      {%- set iconImg = apos.images.all(tab.icon) %}
      {{ apos.log(tab) }}
    <li>
      <a class="sidebar-main-link 
      {% if data.page and (apos.pages.isAncestorOf(tab, data.page) or tab._id == data.page._id) %}
        active
      {% endif %}
      " href="{{ tab.slug }}">

        <div class="icon" style="
        backgroung-image: url('{{ apos.attachments.url(image.attachment, { size: 'full'}) }}')  "></div>
        {{ tab.title }}

      </a>
    </li>
  {% endfor %}

Это возвращает стандарт , отсутствующий.SVG изображение

1 Ответ

0 голосов
/ 11 июня 2018

На сайте документации по апострофу есть новое учебное пособие, в котором подробно рассматривается эта проблема.

Краткий ответ заключается в том, что необходимо настроить параметр filters в apostrophe-pagesмодуль для загрузки связанных страниц с не только самой базовой информацией.По соображениям производительности это поведение по умолчанию не является плохой вещью, но если попросить Apostrophe загрузить только один виджет, это не сильно замедлит работу.

// in lib/modules/apostrophe-pages/index.js
module.exports = {
  // other configuration, then...
  filters: {
    ancestors: {
      children: {
        areas: [ 'thumbnail' ]
      }
    }
  }
};
...