メインコンテンツに移動

メインナビゲーション

  • ホーム
  • サイトマップ
  • ビデオ
  • ご連絡

パンくず

  • ホーム
  • Drupalのモジュール(Feeds)でデータインポート時に特定なフィールドの既存値を保持

Drupalのモジュール(Feeds)でデータインポート時に特定なフィールドの既存値を保持

drupal
feeds

やりたいこと:モジュール(Feeds)でデータインポート時に特定なフィールドにデータインポートしない

  • 背景:Drupal7.54、Feeds7.x-2.0、Feeds Tamper7.x-1.1、Feeds Tamper PHP7.x-1.2
  • 既存のデータに一部分/複数回のデータをインポートするケースがあります
  • 既存のデータに特定なフィールドにデータ存在する場合、そのフィールドのデータを優先にしてデータインポートを行わないにしたいです
    Feedsで特定なフィールドにデータインポートしない

モジュール(Feeds Tamper)で特定なフィールドのデータインポート制御を行います

  • 特定なフィールドにデータインポートしない方法がいろいろ紹介されています
    • 例: hook_feeds_presave を実装して、データ保存時に特定なフィールドのデータ保持することができます
  • ここでカスタムモジュールを作成せずモジュール(Feeds Tamper)で特定のフィールドを制御することにします
    • この作業はサブモジュールFeeds Tamper PHPをインストールして、PHPコードを実行します
  • データマッピング段階でインポート先のデータを照合し、そのフィールドの既存データが存在すれば既存のデータを返して更新します。
    DrupalTamperで既存データをチェックし、既存データがあればそれを利用する
  • 以下は参考PHPコード
    // nodeタイプのタイトルが重複しない
    // データの識別キー:title 
    $nodes = node_load_multiple(NULL, array("title" => $item['field_key_name'] ));  // nodeオブジェクトの取得
    if( count($nodes)>0 ){
      $node = current($nodes);  // 最初のnodeオブジェクトの取得
      $wrapper = entity_metadata_wrapper('node', $node);
      $value = $wrapper->field_key_name->value();  // そのフィールドの値を取得
      // 既存データ存在チェック
      if( strlen( $value )>0 ) {
        return $value;  // 既存のデータを返す
      } else {
        return $field ;  // インポートファイルのデータを返す
      }
    } else {
      return $field ;
    }
    
    
ホーム

古松

検索

Article Category

  • apache(7)
  • css(19)
  • drupal(295)
  • Electron(4)
  • html(34)
  • javascript(27)
  • laravel(4)
  • linux(5)
  • macOS(2)
  • mysql(13)
  • php(19)
  • python(4)
  • SEO(12)
  • video(72)
  • Visual Studio Code(4)
  • windows(13)
  • wordpress(32)