Question

Je prévois de placer l'inventaire d'un magasin sur un site Drupal et je me demande s'il est possible de créer un script (peut-être en python / php?) pour saisir automatiquement les données dans Drupal avec CCK? Merci d'avance!

Était-ce utile?

La solution

Plusieurs modules Drupal sont dédiés à différents scénarios d’importations externes (en masse) - consultez cette présentation. pour les options / comparaisons.

Si vous avez des besoins très spécifiques, vous pouvez écrire votre propre module, en utilisant ceux qui existent et le liens / astuces fournis par googletorps (+1) pour savoir comment effectuer l'insertion réelle en ignorant les généralisations.

Autres conseils

La solution la plus rapide et la plus simple consiste à créer le contenu avec un petit module Drupal que vous créez pour le cas, au lieu de devoir envoyer de nombreuses publications au serveur et de dépenser des ressources en charges de nœuds.

Quoi qu'il en soit, ce dont vous avez besoin est assez similaire à ce que répond Mac ici :

Dans ce cas, vous n'avez pas besoin de tous les éléments spéciaux file_field, mais vous devez tout de même insérer les valeurs des différents champs cck que vous pourriez avoir, ainsi que le corps et le titre du nœud. Après avoir défini la valeur que vous pouvez obtenir directement à partir de votre base de données, vous pouvez enregistrer votre noeud.

Si vous vous connectez directement à la base de données, vous devez avoir le même type que celui que vous utilisez pour Drupal ou le faire en dehors de l’API Drupal. Si vous utilisez l'API drupal, consultez db_set_active ()

Henrik et Googletorp ont déjà formulé de nombreuses suggestions.

Quelques éléments supplémentaires à prendre en compte pour concevoir votre stratégie:

  1. Allez-vous faire une boutique en ligne à part entière (vraisemblablement réalisée avec ubercart ) ou est-ce que vous configurez simplement une vue des noeuds, juste pour présenter l'inventaire aux visiteurs du site?
  2. Combien de produits allez-vous importer?
  3. À quelle fréquence allez-vous les réimporter?

Des solutions que j'aurais le sentiment d'exclure à coup sûr:

  • POST: , comme le commentait googletorp, ce serait trop compliqué.
  • Script externe: vous ne pouvez vraiment pas éviter (à moins de vivre dangereusement et / ou de perdre du temps) à utiliser l'API Drupal, qu'il s'agisse de ceux de base ou d'ubercart. Les données sont dispersées sur plusieurs tables et de nombreux crochets sont déclenchés lors de l'insertion d'un nœud. La seule exception à cette règle est que vous fassiez un script PHP qui effectue le bootstrap d’abord (voir la structure de index.php ou xmlrpc.php pour voir comment cela fonctionne), mais dans ce cas, je préférerais un module complet: beaucoup plus élégant, portable, maintenable.

Solutions que je soutiendrais:

  • Créez votre propre module! Comme l'a souligné googletorp, j'ai fourni un exemple de code indiquant comment ajouter des champs CCK dans cette réponse .
  • Oui, c’est ... c’est le seul auquel je crois! ;)

Cependant, ce que j'ai appris est tout aussi important, c'est de choisir une source de données appropriée pour l'importation . Voici mon avis:

  • Lisez directement à partir de la base de données: valable uniquement si vous devez importer des éléments une fois pour toutes et si le schéma de base de données de l'application d'exportation est assez simple pour créer des requêtes judicieuses . Les logiciels changent et évoluent, suivis des schémas de base de données. Si vous avez besoin de ré-importer dans deux mois et que le schéma de votre autre application a changé, vous devrez changer votre code, modifier les tests, etc.
  • Utiliser les fichiers XML: si votre application d'origine peut exporter dans ce format, utilisez PHP ' SimpleXML et Xpath + PHP en tant que conversion Breeze pour obtenir les données souhaitées au format souhaité en quelques minutes. Le seul inconvénient de cette méthode est que repose sur ... les fichiers. Donc, si vous avez besoin d'importations périodiques automatiques et non contrôlées, il est un peu pénible de prévoir tous les problèmes qui peuvent survenir (autorisations erronées sur les systèmes de fichiers, fichiers corrompus, encodage erroné, etc.) et de mettre en place des contre-mesures. . Inversement, j'aime beaucoup cette méthode lorsque je sais que quelqu'un supervisera tout le temps le processus d'importation et pourra intervenir en cas de problème.
  • Webservice: C’est celui que j’aime le plus si je dois importer de manière automatique et périodique. L’avantage majeur réside dans le fait que les deux applications " talk " les uns aux autres et exposez une partie de leur logique métier, de sorte que vous puissiez réellement avoir une session qui ressemble à: "hé; j’ai besoin de tous les produits qui ont changé de prix depuis la semaine dernière " - "Vous êtes ici, ils devraient être 127, dans trois catégories, est-ce que vous copiez cela?" - "Oh, oui ... Je les ai toutes clairement et clairement: 127 éléments et 3 catégories!". Cela simplifie beaucoup beaucoup en piégeant les erreurs et les exceptions. Bien que Drupal considère le serveur Web comme un consommateur et un fournisseur de services Web, vous devrez également mettre en œuvre le service Web sur l’autre application, ce qui peut être ou ne pas être difficile: cela dépend totalement de l’application exportée.

HTH!

CCK ou autre, c'est juste une requête POST bien formée (vraisemblablement), alors allez-y.

Si vos données source sont dans MySQL, je regarderais le module Migration pour créer contenu. Voici un extrait de la page de son projet:

  

... fournit un cadre flexible pour la migration de contenu vers Drupal à partir d'autres sources (par exemple, lors de la conversion d'un site Web d'un autre CMS en Drupal). La prise en charge immédiate de la création d'objets Drupal de base, tels que les nœuds, les utilisateurs, les fichiers, les termes et les commentaires, est incluse. Elle peut facilement être étendue pour la migration d'autres types de contenu. Le contenu est importé et restauré à l'aide d'une interface Web intégrée (module Migrate UI) ou de commandes Drush incluses (fortement recommandé).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top