Ich muss ein Feld an einige Bündel anhängen. Ein PHP-Snippet erledigt die Aufgabe für mich, sodass ich kein Modul benötige. Das folgende Snippet ist das, was ausgeführt werden muss:
$field_name = 'field_custom_image';
// Create the field.
$field = array(
'field_name' => $field_name,
'type' => 'image',
);
field_create_field($field);
und dann das Snippet, um dieses Feld zu bündeln:
// 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);
Gibt es eine Möglichkeit, PHP-Code direkt in Drupal auszuführen, ohne ein Modul schreiben, installieren, ausführen und deinstallieren zu müssen?
Antworten:
Wenn Sie sagen "Ich muss PHP ausführen" und "Ich brauche kein Modul" in dem gleichen Gedanken, würde ich vorschlagen, dass Sie den falschen Weg einschlagen, entweder in der Herangehensweise an dieses spezifische Problem oder die Herangehensweise an den Bau der Website im Allgemeinen.
drush scr
wird Ihnen helfen, wenn dies die Richtung ist, in die Sie wirklich wollen, oder Sie könnten ein eigenständiges PHP-Skript schreiben (im Grunde kopieren Sie einfach alles durch dendrupal_bootstrap()
Aufruf von index.php und fügen Sie Ihren benutzerdefinierten Code danach hinzu), aber es gibt noch ein paar andere Dinge, die Sie anschauen könnten:Viele Websites, an denen ich gearbeitet habe, hatten eine Kombination dieser beiden Lösungen. Config sollte hauptsächlich in exportierte Features-Module gehen, und alles, was nicht kann (sind Sie wirklich sicher , dass es nicht kann?), Kann in einen Update-Hook gehen.
quelle
Ja, aber angesichts Ihrer Beschreibung frage ich mich, ob es Ihnen helfen wird:
quelle
Wenn Sie Code nur einmal ausführen müssen, können Sie dies tun, ohne ein Modul, einschließlich des Devel-Moduls, zu installieren.
Schreiben Sie eine PHP-Datei (zB tasks.php ), platzieren Sie sie an der mit Drupal gelieferten Stelle der cron.php-Datei und fügen Sie den folgenden Code hinzu.
Wenn Sie Drush bereits zum Verwalten / Bereitstellen Ihrer Site verwenden, können Sie ein Drush-Skript erstellen . Auf diese Weise kann es von CLI ausgeführt werden und es können beliebige Argumente empfangen werden, sodass es für viele Gelegenheiten wiederverwendbar ist.
Sie können auch ein PHP-Skript mit
drush php-eval
(oder nurdrush ev
) ausführen , zum Beispiel:Ich würde ein Drush-Skript erstellen, aber wenn Sie Drush nicht installieren können oder PHP-Code über den Browser ausführen müssen, funktioniert die erste Methode einwandfrei.
quelle
Fügen Sie Ihr Code-Snippet zu einer Datei hinzu und speichern Sie die Datei wie
file_name.php
in Ihrem Drupal-Site-Stammordner. Führen Sie dann den folgenden Befehl in einem Terminal im Stammverzeichnis der Drupal-Site als Arbeitsverzeichnis aus:drush scr file_name.php
Dieser Befehl führt Ihre PHP-Datei aus. (Um sich ein Bild von der Ausführung zu machen, können Sie einige print-Anweisungen in Ihre Datei einfügen, die den Text, die Variablenwerte usw. an das Terminal ausgeben, auf dem Sie den Befehl drush ausführen.)
Hinweis: Voraussetzung ist, dass Sie
drush
auf Ihrem System installiert haben .quelle
Sie können das
Php
Inline- Modul von Devel verwenden, aber Sie können einen meiner Tricks in Drupal anwenden, um meinen benutzerdefinierten Code ohne ein Modul auszuführen.erst ein
menu item
in erstellenhook_menu
dann löschen Sie den Cache (weil Menüpunkte in Drupal zwischengespeichert), und alles setzen Sie wollen in
my_function
und geben Sie einfachyoursite.com/ytest
Ich hoffe es hilft dir bei projekten "dada";)
quelle
Das Ziel von Drupal-Modulen ist es, bestimmte Komponenten mit einer separaten Logik zu versehen, damit sie deaktiviert werden können, wenn etwas schief geht.
hook_install
/hook_update
In Ihrem Fall, in dem ein neues Feld einmalig erstellt wird, ist die Verwendung von entweder
hook_install
oder das ideale Szenariohook_update
.Wenn Sie kein benutzerdefiniertes Modul haben (übrigens können Sie auch das exportierte Feature-Modul verwenden), erstellen Sie ein neues nur für Updates (z
site_updates
. B. ). In Drupal 7, alles , was Sie brauchen , ist Ordner mit 3 Dateien zu erstellen:.info
,.module
und ,.install
und definieren installieren oder aktualisieren Haken in Ihrem.install
. Die Verwendung von install / update hook ist praktisch, um konsistente Umgebungen zu haben, insbesondere wenn Sie mehrere Drupal-Server (wie dev, test und prod) haben, sodass die Änderung bei der nächsten Bereitstellung aufgerufen werden kann.Wenn Sie immer noch kein Modul erstellen möchten, finden Sie hier weitere Methoden.
Einmalige Ausführung
Wenn Sie bestimmten PHP-Code nur einmal ausführen müssen, können Sie:
/devel/php
.Verwenden Sie CLI (und den Befehl / ), um PHP-Code auszuführen, z
drush
eval
ev
Verwenden Sie
drush scr
diese Option, um ein PHP-Skript auszuführen:Wo
my_file.php
ist dein einfaches PHP-Skript mit deinem Code zum Ausführen?Spezifische Seitenausführung
So führen Sie benutzerdefinierten Code auf bestimmten Seiten oder Komponenten aus:
template.php
Datei in Ihrem benutzerdefinierten Thema (zBtemplate_preprocess_node
,template_preprocess_block
,template_preprocess_page
).Alle Seitenausführung
Um PHP-Code auf jeder Seite hinzuzufügen und auszuführen, ohne ein Modul zu schreiben, können Sie:
settings.php
Datei. Es wird nur für einfachen Code empfohlen, z. B. zum Überschreiben der Konfiguration. Andernfalls sollten Sie dieshook_init
als Teil Ihres benutzerdefinierten Moduls verwenden.quelle