web-dev-qa-db-fra.com

Flux: utilisez un champ personnalisé comme champ unique pour le mappage

J'utilise D7, Feeds, XPath Parser. Pour le mappage, je dois utiliser un champ personnalisé comme champ unique. Je récupère des données de booking.com et la valeur unique de leur est l'id de l'hôtel, donc je dois enregistrer cet identifiant d'hôtel de l'utilisateur ainsi que récupérer les données de booking.com bsed sur ce champ unique et mapper à mon contenu en fonction de ce domaine unique.

Dans la documentation des flux, j'ai trouvé ceci - tilisez un champ autre que nid comme champ de nœud unique dans les flux pour 7.x-2.x

Il indique que vous devez appliquer un patch à partir de ce commentaire - http://drupal.org/node/661606#comment-5921904

Ce correctif s'applique à un fichier appelé field.inc dans le dossier des mappeurs de flux. Cependant ce fichier n'y est même pas présent. Le correctif s'applique également à un autre fichier, mais l'exécution du correctif donne des erreurs.

  • Field.inc est-il réellement présent dans les flux/mappeurs?
  • Suis-je en train de faire une erreur en appliquant le patch?
  • Existe-t-il un autre moyen de réaliser - champ personnalisé comme champ unique pour la cartographie?

Toute aide à ce sujet serait grandement appréciée. Je vous remercie.

4
SGhosh

Répondre à ma propre question -

Utilisation du patch de - http://drupal.org/node/661606#comment-6481214 sur le module de flux et d'un patch de - http://drupal.org/node/1705386 # comment-6481224 .

D'où l'utilisation de flux avec validation de champ. Tout d'abord, une validation pour unique doit être ajoutée au champ requis. Dans le mappage, tout comme le titre peut être défini comme unique, même ce champ aura le paramètre à définir comme unique.

2
SGhosh

Ce tutoriel fonctionne pour moi:

Comment configurer des champs uniques dans Drupal importateur de flux?

Voir aussi la documentation officielle , qui indique que vous pouvez soit utiliser le module de validation de champ, soit écrire une solution personnalisée implémentant hook_feeds_processor_targets_alter().

9
David Czinege

Si vous n'utilisez qu'un seul importateur de flux (c'est-à-dire que vous importez uniquement à partir d'une seule source XML), vous pouvez le faire sans appliquer de correctifs. Dans les mappages de l'importateur, mappez simplement le champ ID hôtel sur GUID et définissez-le comme unique. Si vous devez utiliser l'ID hôtel dans votre type de contenu, mappez-le également sur un autre champ.

D'après votre description, il semble que vos besoins pourraient être plus complexes (c'est-à-dire importer de plusieurs sources dans le même type de contenu)? Si tel est le cas, vous pouvez utiliser le module Validation des champs pour définir votre champ comme unique. Notez que la dernière fois que je l'ai utilisé, cela nécessitait également un patch - mais il peut être validé maintenant. Ce problème de validation de champ fournit quelques informations supplémentaires.

Je pense que la méthode que vous avez mentionnée (en utilisant le module Unique Field) est un peu dépassée maintenant.

4
pushka