J'ai besoin d'attacher un champ à certains bundles. Un extrait PHP fera le travail pour moi, donc je n'ai pas besoin d'un module.L'extrait ci-dessous est ce qui doit être exécuté:
$field_name = 'field_custom_image';
// Create the field.
$field = array(
'field_name' => $field_name,
'type' => 'image',
);
field_create_field($field);
puis l'extrait pour ajouter ce champ à l'ensemble:
// Create the instance.
$instance = array(
'field_name' => $field_name,
'entity_type' => 'node',
'bundle' => 'article',
'label' => 'Image',
'description' => 'An image for the article.',
'required' => TRUE,
);
field_create_instance($instance);
Existe-t-il un moyen d'exécuter du code PHP directement dans Drupal, sans avoir besoin d'écrire un module, de l'installer, de le faire fonctionner et de le désinstaller?
Réponses:
Si vous dites "J'ai besoin d'exécuter du PHP" et "Je n'ai pas besoin d'un module" dans la même pensée, je vous suggère de suivre le mauvais chemin, soit dans l'approche de ce problème spécifique. , ou l'approche de la construction du site en général.
drush scr
vous aidera si c'est dans cette direction que vous voulez vraiment aller, ou vous pouvez écrire un script PHP autonome (simplement copier / coller tout via l'drupal_bootstrap()
appel depuis index.php, et ajouter votre code personnalisé après) mais il y en a quelques autres choses que vous pourriez regarder:De nombreux sites sur lesquels j'ai travaillé ont eu une combinaison de ces deux solutions. La configuration devrait principalement aller dans les modules de fonctionnalités exportés, et tout ce qui ne peut pas (êtes-vous vraiment sûr que cela ne peut pas?) Peut entrer dans un crochet de mise à jour.
la source
Oui, il y en a, mais compte tenu de votre description, je me demande si cela vous aidera:
la source
Si vous devez exécuter du code une seule fois, vous pouvez le faire sans installer de module, y compris le module Devel.
Écrivez un fichier PHP (par exemple tasks.php ), placez-le à l'emplacement du fichier cron.php fourni avec Drupal et ajoutez le code suivant.
Si vous utilisez déjà Drush pour maintenir / déployer votre site, vous pouvez créer un script Drush . De cette façon, il pourrait être exécuté par CLI, et il pourrait recevoir tous les arguments, le rendant réutilisable à de nombreuses reprises.
Vous pouvez également exécuter un script PHP avec
drush php-eval
(ou tout simplementdrush ev
), par exemple:Je créerais un script Drush, mais si vous ne pouvez pas installer Drush, ou si vous devez exécuter du code PHP à partir du navigateur, la première méthode fonctionne très bien.
la source
Ajoutez votre extrait de code à un fichier et enregistrez le fichier comme
file_name.php
dans votre dossier racine du site Drupal. Exécutez ensuite la commande suivante dans un terminal, à partir du dossier racine du site Drupal en tant que répertoire de travail:drush scr file_name.php
Cette commande exécutera votre fichier PHP. (Pour avoir une idée de l'exécution, vous pouvez inclure des instructions d'impression dans votre fichier, qui afficheront le texte, les valeurs des variables, etc. sur le terminal où vous exécutez la commande drush.)
Remarque: Comme condition préalable, vous devez avoir
drush
installé sur votre système.la source
Vous pouvez utiliser
Php
le module en ligne de Devel, mais vous permet d'obtenir l'une de mes astuces dans Drupal pour exécuter mon code personnalisé sans aucun module.créer d'abord un
menu item
danshook_menu
puis videz le cache (car les éléments de menu sont mis en cache dans drupal), et mettez tout ce que vous voulez
my_function
et tapez simplementyoursite.com/ytest
J'espère que cela vous aidera dans les projets "dada";)
la source
L'objectif des modules Drupal est de fournir une logique distincte à certains composants, afin qu'ils puissent être désactivés en cas de problème.
hook_install
/hook_update
Dans votre cas qui crée un nouveau champ sur une base unique, le scénario idéal est d'utiliser soit
hook_install
ouhook_update
.Si vous n'avez pas de module personnalisé (btw. Vous pouvez également utiliser un module de fonction exporté pour cela), créez-en un nouveau uniquement pour les mises à jour (par exemple
site_updates
). Dans Drupal 7, tout ce que vous avez besoin est de créer un dossier avec 3 fichiers:.info
,.module
et.install
et définir l' installation ou d'un crochet de mise à jour dans votre.install
. L'utilisation du hook d'installation / mise à jour est pratique afin d'avoir des environnements cohérents, en particulier lorsque vous avez plusieurs serveurs Drupal (tels que dev, test et prod), de sorte que la modification peut être invoquée lors du prochain déploiement.Si vous ne voulez toujours pas créer de module, voici d'autres méthodes.
Exécution unique
Si vous n'avez besoin d'exécuter certains codes PHP qu'une seule fois, vous pouvez:
/devel/php
,Utilisez CLI (et sa commande / ) pour exécuter du code PHP, par exemple
drush
eval
ev
Utilisez
drush scr
pour exécuter le script PHP:où
my_file.php
est votre script PHP simple avec votre code à exécuter.Exécution de page spécifique
Pour exécuter du code personnalisé sur certaines pages ou composants:
template.php
fichier dans votre mesure thème (par exempletemplate_preprocess_node
,template_preprocess_block
,template_preprocess_page
).Exécution de toutes les pages
Pour ajouter et exécuter du code PHP sur chaque page sans écrire de module, vous pouvez:
settings.php
fichier pour cela. Il n'est recommandé que pour le code simple tel que la substitution de configuration. Sinon, vous devez l'utiliserhook_init
pour cela dans le cadre de votre module personnalisé.la source