xandeadx.ru Блог музицирующего веб-девелопера

Drupal → Обновление существующих терминов по tid (Feeds)

Опубликовано в

Feeds не умеет обновлять термины по tid, только по name. Поэтому если в словаре есть термины с одинаковыми именами, то возникнут проблемы.

Чтобы обновлять существующие термины по tid, нужно:

1. Обновить Feeds до dev версии от 02.12.2014 или свежее.

2. В настройках процессора выбрать опцию Update existing terms:

3. В маппинг помимо tid добавить name с опцией Used as unique (в файле импорта этого поля быть не должно):

Поле description не обязательно, добавлено для примера.

4. Создать модуль с кодом:

/**
 * Implements hook_feeds_after_parse().
 */
function MODULENAME_feeds_after_parse(FeedsSource $source, FeedsParserResult $result) {
  if ($source->id == 'машинное_имя_импортера') {
    foreach ($result->items as &$item) {
      $item['name'] = taxonomy_term_load($item['tid'])->name;
    }
  }
}

Можно вместо кода воспользоваться Feeds Tamper.

5. Сбросить кэш.

Profit.

Пример csv файла:

tid;description
1;description for term 1
2;description for term 2
Похожие записи

Комментарии RSS

Привет!
А подскажи, как можно использовать для этого Feeds Tamper? Не могу сообразить чото..

>> Поэтому если в словаре есть термины с одинаковыми именами, то возникнут проблемы.

они и так возникнут :) feeds будет каждый раз находить один и тот же термин по имени.

Делается с помощью модуля Field Validation, без кода.
Достаточно указать поле как уникальное. Обновлял так 250 000 записей)))

Добрый вечер.
Курчатов, не могли бы Вы чуть подробнее - как связаны Field Validation и Feeds?

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

Содержимое этого поля является приватным и не будет отображаться публично. Если у вас есть аккаунт в Gravatar, привязанный к этому e-mail адресу, то он будет использован для отображения аватара.
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Доступные HTML теги: <a> <i> <b> <strong> <code> <ul> <ol> <li> <blockquote> <em> <s>
  • Строки и параграфы переносятся автоматически.
  • Подсветка кода осуществляется с помощью тегов: <code>, <css>, <html>, <ini>, <javascript>, <sql>, <php>. Поддерживаемые стили выделения кода: <foo>, [foo].

Подробнее о форматировании