web-dev-qa-db-ja.com

フィード:カスタムフィールドをマッピングの一意のフィールドとして使用する

私はD7、フィード、XPathパーサーを使用しています。マッピングには、カスタムフィールドを一意のフィールドとして使用する必要があります。私はbooking.comからデータを取得しており、それらの一意の値はホテルIDです。このため、ユーザーからこのホテルIDを保存し、この一意のフィールドに基づいてbooking.comからデータを取得して、コンテンツにマップする必要がありますこのユニークなフィールド。

フィードのドキュメントでこれを見つけました- 7.x-2.xのフィードで一意のノードフィールドとしてnid以外のフィールドを使用

このコメントからパッチを適用する必要があると言っています- http://drupal.org/node/661606#comment-5921904

このパッチは、フィードのマッパーフォルダーにあるfield.incというファイルに適用されます。ただし、このファイルは存在しません。パッチは別のファイルにも適用されますが、パッチを実行するとエラーが発生します。

  • Field.incは実際にフィード/マッパーに存在しますか?
  • パッチの適用に間違いがありますか?
  • 他に達成する方法はありますか-カスタムフィールドをマッピングの一意のフィールドとして使用しますか?

これに関するどんな助けでも大歓迎です。ありがとうございました。

4
SGhosh

私自身の質問に答える-

フィードモジュールで- http://drupal.org/node/661606#comment-6481214 からのパッチと- http://drupal.org/node/1705386からのパッチを使用する#comment-6481224

したがって、フィールド検証でフィードを使用します。最初に、固有の検証を必須フィールドに追加する必要があります。タイトルと同じようにマッピングで一意に設定できますが、このフィールドでも一意に設定する必要があります。

2
SGhosh

このチュートリアルは私にとってはうまくいきます:

Drupalフィードインポーターで一意のフィールドを設定する方法

公式ドキュメント も参照してください。これは、フィールド検証モジュールを使用するか、hook_feeds_processor_targets_alter()を実装するカスタムソリューションを記述できることを示しています。

9
David Czinege

フィードインポーターを1つだけ使用する場合(つまり、単一のXMLソースからのみインポートする場合)は、パッチを適用せずにこれを実行できます。インポーターマッピングで、ホテルIDフィールドをGUIDにマップし、一意として設定します。コンテンツタイプでホテルIDを使用する必要がある場合は、別のフィールドにもマップします。

あなたの説明から、あなたのニーズのようにそれはsoundsより複雑かもしれません(つまり、複数のソースから同じコンテンツタイプにインポートする)?その場合は、 フィールド検証 モジュールを使用して、フィールドを一意として設定できます。前回使用したときにも patch -が必要でしたが、今はコミットされる可能性があることに注意してください。 このフィールド検証の問題 は、いくつかの詳細情報を提供します。

あなたが参照した方法(Unique Fieldモジュールを使用)は少し古くなっていると思います。

4
pushka