Dường như không thể chỉ sử dụng Drupal, có nghĩa là:
variable_set()bản thân nó không gọi bất kỳ hook nào, nhưng nó sử dụng db_merge(). Hàm đó đang sử dụng MergeQuerylớp. Bây giờ, sẽ rất tốt để kết nối hook_query_alter(), nhưng nó chỉ hoạt động cho các lớp truy vấn thực hiện QueryAlterableInterfacegiao diện. Đáng buồn thay, giao diện này hiện chỉ được thực hiện bởi SelectQuerycác SelectQueryExtenderlớp và không phải bởi MergeQuerylớp.
Lưu ý rằng ngay cả khi bạn sẽ tìm cách tạo một lớp con MergeQuery, nó sẽ thực hiện QueryAlterableInterfacevà khiến Drupal sử dụng nó. hook_query_alter()chỉ hoạt động trên các truy vấn có thẻ và variable_set()không gắn thẻ truy vấn của nó, vì vậy hook sẽ không được sử dụng, trừ khi bạn sẵn sàng hack core. Nhưng nếu là bạn, bạn không cần tất cả những thứ đó, bạn chỉ có thể hack trong một cuộc gọi hook.
Nếu bạn cảm thấy khó khăn, bạn có thể sử dụng một cách tiếp cận PHP gián tiếp hơn: $conflà một mảng toàn cầu của các biến cấu hình; bạn có thể viết một mô-đun sẽ thay thế nó bằng đối tượng hoạt động như một mảng, như được mô tả trên Stack Overflow . Để làm cho nó một sự thay thế tốt, bạn cần phải thực hiện ArrayAccess. Kéo tất cả các giá trị từ bản gốc $confvào đối tượng của bạn. Sau đó, trong ArrayAccess::offsetSet()việc thực hiện logic đăng nhập của bạn.
               
              
$confsau đó: D Hy vọng câu trả lời cập nhật của tôi sẽ giúp được ai đó.