Рейтинг:-1

Как комбинировать термины в фидах Drupal?

флаг km

Например, если бы у меня было 2 ряда с людьми в них

жидкость | любимый цвет
----------------------
 3 | Синий
 3 | Желтый

И я хотел, чтобы в конце были выбраны и синий, и желтый. Есть ли плагин для комбайна? я уже делаю

класс MyAlterSubscriber расширяет AfterParseBase

Нужно ли мне искать здесь существующие значения и сначала объединять их?

Рейтинг:0
флаг km

Афтерпарсебасе не дает доступ к полному набору данных.

Поэтому вместо этого используйте событие FeedsEvents::AFTER.

Я обнаружил, что если в последнем элементе не выбраны элементы таксономии, все элементы будут потеряны. Чтобы создать объединение элементов таксономии:

<?php

пространство имен Drupal\cbi_feed_alter\EventSubscriber;

используйте Drupal\feeds\Event\FeedsEvents;
используйте Drupal\feeds\Event\ParseEvent;
используйте Symfony\Component\EventDispatcher\EventSubscriberInterface;

класс IssuerFeedEventSubscriber реализует EventSubscriberInterface {

  const JOIN_CHAR = ',';

  /**
  * {@inheritdoc}
  */
  общедоступная статическая функция getSubscribedEvents() {
    $events[FeedsEvents::PARSE][] = ['afterParse', FeedsEvents::ПОСЛЕ];
    вернуть $события;
  }

  публичная функция afterParse(ParseEvent $event) {
    /** @var \Drupal\feeds\FeedInterface */
    $feed = $event->getFeed();
    /** @var \Drupal\feeds\Result\ParserResultInterface */
    $parser_result = $event->getParserResult();

    $feed_type = $feed->getType();
    если ($feed_type->id() != 'эмитент') {
      возвращаться;
    }

    for ($parser_result->rewind(); $parser_result->valid(); $parser_result->next()) {
      $this->findStates($parser_result->current(), $parser_result);
    }
  }

  защищенная функция findStates($item, $parser_result) {
    $issuer_id = $item->get('issuerid');
    $ состояния = [];
    $parser_current_key = $parser_result->key();
    for ($parser_result->rewind(); $parser_result->valid(); $parser_result->next()) {
      если ($parser_result->current()->get('issuerid') == $issuer_id) {
        $states = array_filter(array_merge($states,explore(self::JOIN_CHAR, $parser_result->current()->get('state'))));

     }
    }

    // Возвращаемся к ключу
    $parser_result->перемотка назад();
    в то время как ($parser_result->valid() && $parser_result->key() != $parser_current_key) {
      $parser_result->следующий();
    }
    $parser_result->offsetSet($parser_current_key);
    $item->set('state', implode(self::JOIN_CHAR, array_unique($states, SORT_STRING)));
   }

}

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.