Фильтровать и показывать только SVG-изображения в ApostropheCMS

#svg #apostrophe-cms

#svg #apostrophe-cms

Вопрос:

Я создал новый фильтр с именем svg для отображения только svg-изображений или изображений, отличных от svg.

Но я не понимаю, где я могу установить значение фильтра в true или false ?

Код показан ниже.

Индексный файл виджета:

 module.exports = {
  label: 'Section SVG Images',
  addFields: [
    {
      name: 'svg-images',
      label: 'SVG Images',
      type: 'singleton',
      widgetType: 'apostrophe-images',
      filters: {
        svg: true
      },
      required: true
    },
  ]
};

 

Пользовательский фильтр курсора:

 module.exports = {
  construct: function(self, options) {
    self.addFilter('svg', {
      finalize: function() {
        var svg = self.get('svg'); // <--- HARE svg is olways 'undefined' 

        if (typeof svg == 'undefined') {
          return;
        }

        if (svg) {
          var criteria = {
            'attachment.extension': 'svg'
          };
        } else {
          var criteria = {
            'attachment.extension': { $ne: 'svg' }
          };
        }

        self.and(criteria);
      },

      safeFor: 'public',
      launder: function(a) {
        return self.apos.launder.boolean(a);
      }
    });
  }
};
 

Ответ №1:

filter не является опцией верхнего уровня для singleton полей в апострофе. Это уникально для join полей типа. Вы могли бы расширить этот виджет apostrophe-pieces-widgets , тогда вы, вероятно, могли бы установить тот же filters объект непосредственно в виджете new pieces. Это должно зарегистрировать фильтр курсора, по крайней мере.

Стоит отметить, что в настоящее время ведется работа по добавлению фильтрации как по типу файла, так и по ориентации в Apostrophe core!