Tampaknya tidak mungkin hanya menggunakan Drupal, yang berarti:
variable_set()
itu sendiri tidak meminta kait, tetapi menggunakan db_merge()
. Fungsi itu menggunakan MergeQuery
kelas. Sekarang, akan menyenangkan untuk dihubungkan hook_query_alter()
, tetapi hanya berfungsi untuk kelas kueri yang mengimplementasikan QueryAlterableInterface
antarmuka. Sayangnya, antarmuka ini sekarang hanya diimplementasikan oleh SelectQuery
dan SelectQueryExtender
kelas, bukan oleh MergeQuery
kelas.
Perhatikan bahwa meskipun Anda akan menemukan cara untuk membuat kelas anak MergeQuery
, yang akan mengimplementasikan QueryAlterableInterface
, dan membuat Drupal menggunakannya. hook_query_alter()
hanya berfungsi pada kueri yang memiliki tag, dan variable_set()
tidak menandai kuerinya, jadi kailnya tidak akan digunakan, kecuali jika Anda ingin meretas inti. Tetapi jika ya, Anda tidak perlu semua itu, Anda bisa meretas panggilan hook.
Jika Anda merasa hardcore, Anda dapat menggunakan pendekatan PHP yang lebih tidak langsung: $conf
adalah array global variabel konfigurasi; Anda dapat menulis modul yang akan menggantinya dengan objek yang bertindak seperti array, seperti dijelaskan pada Stack Overflow . Untuk menjadikannya pengganti yang baik, Anda perlu menerapkan ArrayAccess
. Tarik semua nilai dari yang asli $conf
ke objek Anda. Kemudian, dalam ArrayAccess::offsetSet()
mengimplementasikan logika logging Anda.
$conf
waktu itu: D Semoga jawaban saya yang diperbarui akan membantu seseorang.