Saya perlu melampirkan bidang ke beberapa bundel. Cuplikan PHP akan melakukan pekerjaan untuk saya, jadi saya tidak perlu modul. Cuplikan di bawah ini yang harus dijalankan:
$field_name = 'field_custom_image';
// Create the field.
$field = array(
'field_name' => $field_name,
'type' => 'image',
);
field_create_field($field);
lalu potongan untuk menambahkan bidang ini ke bundel:
// 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);
Apakah ada cara untuk menjalankan kode PHP langsung di Drupal, tanpa perlu menulis modul, menginstalnya, membuatnya berjalan, dan menghapus instalannya?
Jawaban:
Jika Anda mengatakan "Saya perlu menjalankan beberapa PHP" dan "Saya tidak perlu modul" dalam pemikiran yang sama, saya sarankan Anda mengambil jalan yang salah, baik dalam pendekatan untuk masalah khusus ini , atau pendekatan untuk membangun situs secara umum.
drush scr
akan membantu Anda jika itu arah yang benar-benar ingin Anda tuju, atau Anda dapat menulis skrip PHP mandiri (pada dasarnya cukup salin / tempelkan semuanya melaluidrupal_bootstrap()
panggilan dari index.php, dan tambahkan kode kustom Anda setelahnya) tetapi ada beberapa lainnya hal yang bisa Anda lihat:Banyak situs yang telah saya kerjakan memiliki kombinasi kedua solusi tersebut. Config sebagian besar harus masuk ke modul Fitur yang diekspor, dan apa pun yang tidak bisa (apakah Anda benar-benar yakin tidak bisa?) Dapat masuk ke hook pembaruan.
sumber
Ya, memang ada, tapi berikan deskripsi Anda, saya ingin tahu apakah itu akan membantu Anda:
sumber
Jika Anda perlu menjalankan kode hanya sekali, Anda dapat melakukannya tanpa menginstal modul apa pun, termasuk modul Devel.
Tulis file PHP (mis. Task.php ), letakkan di tempat file cron.php yang menyertai Drupal, dan tambahkan kode berikut.
Jika Anda sudah menggunakan Drush untuk memelihara / menyebarkan situs Anda, maka Anda bisa membuat skrip Drush . Dengan cara ini, dapat dieksekusi oleh CLI, dan dapat menerima argumen apa pun, membuatnya dapat digunakan kembali untuk banyak kesempatan.
Anda juga dapat menjalankan skrip PHP dengan
drush php-eval
(atau hanyadrush ev
), misalnya:Saya akan membuat skrip Drush, tetapi jika Anda tidak dapat menginstal Drush, atau Anda perlu menjalankan kode PHP dari browser, metode pertama berfungsi dengan baik.
sumber
Tambahkan potongan kode Anda ke file dan simpan file seperti
file_name.php
di folder root situs Drupal Anda. Kemudian jalankan perintah berikut di terminal, dari dalam folder root situs Drupal sebagai direktori kerja Anda:drush scr file_name.php
Perintah ini akan mengeksekusi file PHP Anda. (Untuk mendapatkan gagasan tentang eksekusi, Anda dapat menyertakan beberapa pernyataan cetak dalam file Anda, yang akan menampilkan teks, nilai variabel dll. Ke terminal tempat Anda menjalankan perintah drush.)
Catatan: Sebagai prasyarat, Anda harus
drush
menginstal pada sistem Anda.sumber
Anda dapat menggunakan
Php
inline dari modul Devel tetapi membiarkan Anda mendapatkan salah satu trik saya di drupal untuk menjalankan kode kustom saya tanpa modul apa pun.buat dulu
menu item
inhook_menu
kemudian bersihkan cache (karena item menu di-cache dalam drupal), dan masukkan semua yang Anda inginkan
my_function
dan ketikkan sajayoursite.com/ytest
Saya harap ini akan membantu Anda dalam proyek "dada";)
sumber
Tujuan dari modul Drupal adalah untuk menyediakan logika terpisah untuk komponen-komponen tertentu, sehingga mereka dapat dinonaktifkan jika terjadi kesalahan.
hook_install
/hook_update
Dalam kasus Anda yang membuat bidang baru satu kali, skenario ideal adalah menggunakan salah satu
hook_install
atauhook_update
.Jika Anda tidak memiliki modul khusus (btw. Anda juga dapat menggunakan modul fitur yang diekspor untuk itu), buat yang baru hanya untuk pembaruan (mis
site_updates
.). Di Drupal 7, yang Anda butuhkan adalah untuk membuat folder dengan 3 file:.info
,.module
dan.install
dan menentukan menginstal atau memperbarui kail di Anda.install
. Menggunakan kait instal / perbarui nyaman agar memiliki lingkungan yang konsisten, terutama ketika Anda memiliki beberapa server Drupal (seperti dev, test dan prod), sehingga perubahan dapat dilakukan selama penyebaran berikutnya.Jika Anda masih tidak ingin membuat modul, berikut adalah metode lain.
Eksekusi satu kali
Jika Anda hanya perlu mengeksekusi kode PHP tertentu hanya satu kali, Anda dapat:
/devel/php
,Gunakan CLI (dan / perintahnya) untuk mengeksekusi kode PHP, mis
drush
eval
ev
Gunakan
drush scr
untuk menjalankan skrip PHP:di mana
my_file.php
skrip PHP biasa Anda dengan kode Anda untuk mengeksekusi.Eksekusi halaman tertentu
Untuk menjalankan kode khusus pada halaman atau komponen tertentu:
template.php
file dalam tema khusus Anda (mistemplate_preprocess_node
.template_preprocess_block
,template_preprocess_page
).Semua eksekusi halaman
Untuk menambah dan menjalankan kode PHP pada setiap halaman tanpa menulis modul, Anda dapat:
settings.php
file untuk itu. Hanya disarankan untuk kode sederhana seperti konfigurasi override. Kalau tidak, Anda harus menggunakannyahook_init
untuk itu sebagai bagian dari modul khusus Anda.sumber