2009-12-08 5 views
3

Lorsque je crée un nouveau site Drupal, je me retrouve généralement avec au moins un module personnalisé et plusieurs modules de contribution communautaire. Pour que le site fonctionne comme il se doit, de nombreuses valeurs de configuration doivent être définies sur les différents modules. Cela rend le déploiement sur une nouvelle instance Drupal minutieuse et sujette aux erreurs.Configuration de modules Drupal à partir d'un autre module

Je voudrais donner à mon module personnalisé la possibilité de configurer tous les autres modules. Que ce soit lors de l'installation ou en cliquant sur un bouton de la page d'administration de mon module personnalisé, toutes les valeurs de configuration nécessaires sur les autres modules seraient définies par programme.

Comment est-ce que je ferais mieux de le faire?

Répondre

5

AFAIK, il n'y a aucun moyen de réaliser ce que vous voulez dire facilement. J'ai tendance à mettre autant que possible dans les implémentations hook_update_N() et à faire de fréquentes synchronisations DB comme décrit dans ma réponse à this question. Cependant, cela ne fonctionne pas lorsque vous avez déjà un serveur en ligne avec lequel vous devrez fusionner des données.

Pour cela, j'utilise différents outils selon les besoins. Personne n'est parfait, mais voici cependant une petite collection de mes préférés:

  • Features. C'est un nouveau concept et un nouveau module. L'idée est assez géniale: elle vous permet de définir un ensemble de configuration/modules/paramètres et de les exporter sous la forme d'une fonctionnalité . Cette fonctionnalité sera ensuite installée comme s'il s'agissait d'un module sur le site cible. Ce module n'exporte pas tous les paramètres possibles, mais il fait cependant du bon travail avec les modules qui nécessitent la configuration la plus difficile, comme CCK, Views, ImageCache et d'autres ... Vous pouvez voir une démo de screencast (~ 10 mins) here.

  • Backup and migrate. C'est une approche plus radicale: il suffit de vider et de reconstruire toute la base de données sur un système cible. C'est bon seulement si vous avez besoin d'écraser complètement le système cible.

  • Node export. Cela permet d'exporter (et d'importer) des noeuds d'une installation drupal vers une autre. Il supporte les opérations en masse mais - malheureusement, il ne supporte pas la migration des fichiers joints et des images.

  • Deploy. En raison des limitations de l'exportation de noeuds , j'ai jeté un coup d'oeil sur l'utilisation de ce module (encore en développement). Finalement, je n'ai pas fait, et j'ai préféré faire une fusion des bases de données de production et de mise en scène, mais le concept semble très valide, car il permet d'importer/exporter des données complexes via SOAP.

  • Taxonomy import/export. Je suppose que le nom est explicite. Il utilise des fichiers pour réaliser les tâches (XML ou CSV).

  • Installation profiles (suggéré par ctford) sont utiles lors de la configuration de nouveaux sites. Ils vous permettent de spécifier les modules à activer, le thème par défaut à etc lors de l'installation. Ils peuvent être très pratiques car il existe un outil de ligne de commande appelé Drush qui automatise la création de profils d'installation. L'inconvénient est que les profils sont conçus pour être utilisés lors de l'installation - pas pour le déploiement d'un module individuel. Il est toutefois possible de prendre le code de configuration généré par Drush et de l'appeler lorsque votre module est activé.

Enfin, vous trouverez une collection d'outils pour l'importation de données/exportation here.

HTH!

2

Je sais ce que vous voulez dire, c'est difficile de configurer tous les modules.

Je suis sûr que vous pouvez enquêter sur tous les modules 3ème partie pour voir comment la configuration a lieu et que mimer dans votre module personnalisé, mais je vous conseille contre cette ...

Le problème est que les modules peuvent changer la façon dont ils stockent leurs paramètres d'une révision à l'autre, donc à chaque fois que vous mettez à jour une nouvelle version d'un module, vous devez effectuer un reverse-engineering pour voir si votre 'module de configuration ultime-one-click' fonctionne bien. , si vous me demandez, est encore plus douloureux que de configurer manuellement tous les modules pour chaque projet.

Détendez-vous, prenez facile, et profiter de Drupal :)

3

avez-vous regardé le module "caractéristiques"? Il s'agit d'un nouveau paradigme introduit dans le cadre de la distribution de l'atrium ouvert, mais également disponible en tant que module autonome. de leur description:

« Le module fonctionnalités permet la capture et la gestion des fonctionnalités de Drupal Une caractéristique est une collection d'entités Drupal qui pris ensemble satisfaire à un certain cas d'utilisation

Caractéristiques fournit une interface utilisateur et API.. pour prendre différents composants de construction de site à partir de modules exportables et les regrouper dans un seul module de fonctionnalité Un module de fonctionnalité est comme n'importe quel autre module Drupal sauf qu'il déclare ses composants (par exemple vues, contextes, champs CCK, etc.). fichier d'informations afin qu'il puisse être vérifié, mis à jour ou restauré par programme. "

http://drupal.org/project/features

3

Installation profiles sont utiles lors de la configuration de nouveaux sites. Ils vous permettent de spécifier les modules à activer, le thème par défaut à etc lors de l'installation. Ils peuvent être très pratiques car il existe un outil de ligne de commande appelé Drush qui automatise la création de profils d'installation. L'inconvénient est que les profils sont conçus pour être utilisés lors de l'installation - pas pour le déploiement d'un module individuel. Il est toutefois possible de prendre le code de configuration généré par Drush et de l'appeler lorsque votre module est activé.

+0

Si vous jetez un coup d'œil au premier lien de ma réponse (fonctionnalités), vous verrez que ce module établit un pont sur ce que vous voulez accomplir. Les fonctionnalités ont également une intégration drush, BTW. Le screencast est pertinent et utile aussi. :) – mac

+0

Oui mac, je pense que vous avez raison que les fonctionnalités sont plus adaptées à mes besoins que les profils d'installation. Je vais laisser ma réponse au cas où cela correspondrait aux besoins de quelqu'un d'autre (à moins que vous ne pensiez que les profils d'installation correspondent à un autre point de votre réponse?). Merci. – ctford

+0

@ctford - Pas besoin de supprimer votre post, je pense ... cependant j'ai implanté votre suggestion et ajouté des profils d'installation à la liste originale. – mac

0

Comme l'initialisation n'est nécessaire que lorsque Drupal est installé, je pense qu'un profil d'installation est la meilleure solution; garder un module qui n'est plus utilisé une fois que l'installation est configurée semble un peu excessif, IMO.

Questions connexes