ฉันจะตรวจสอบได้อย่างไรว่าผู้ใช้ที่เพจกำลังดูอยู่นั้นถือว่าเป็นผู้ดูแลระบบหรือไม่ หน้าการบริหารสามารถรับรู้ได้เมื่อเปิดใช้งานธีมการดูแลระบบ
ในกรณีของฉันฉันต้องการพิมพ์การแจ้งเตือนหากตรงตามเงื่อนไขนี้และหากผู้ใช้สามารถ 'จัดการโมดูล'
ฉันจะตรวจสอบได้อย่างไรว่าผู้ใช้ที่เพจกำลังดูอยู่นั้นถือว่าเป็นผู้ดูแลระบบหรือไม่ หน้าการบริหารสามารถรับรู้ได้เมื่อเปิดใช้งานธีมการดูแลระบบ
ในกรณีของฉันฉันต้องการพิมพ์การแจ้งเตือนหากตรงตามเงื่อนไขนี้และหากผู้ใช้สามารถ 'จัดการโมดูล'
คำตอบ:
path_is_admin(current_path())
ซึ่งสามารถทำได้ด้วย
ตัวอย่างเช่นการใช้เบ็ดต่อไปนี้สามารถนำมาใช้
function mymodule_init() {
if (user_access('administer modules') && path_is_admin(current_path())) {
drupal_set_message(t('Message'));
}
}
คำตอบของ Daniel นั้นถูกต้องสำหรับการพิจารณาว่าพา ธ ปัจจุบันคือ "การบริหาร" แต่ถ้าคุณต้องการตรวจสอบโดยตรงว่าธีมการบริหารกำลังถูกใช้งานหรือไม่ (คำถามของคุณดูเหมือนคลุมเครือเล็กน้อยซึ่งคุณกำลังมองหา) คุณสามารถทำได้ ...
global $theme;
if ($theme === variable_get('admin_theme', 'seven')) {
// …
}
…แม้ว่าสิ่งนี้อาจจะล้มเหลวหากคุณพยายามเรียกใช้เร็วเกินไปในกระบวนการบูทสแตรปกล่าวคือก่อนที่จะ$theme
ถูกกำหนดไว้
สำหรับผู้ที่กำลังมองหาวิธี Drupal 8:
if (\Drupal::service('router.admin_context')->isAdminRoute()) {
// …
}
(ทดสอบด้วยฟังก์ชัน preprocess ใน 8.7.5 และใช้ใน core-patchใน 8.0)
เพื่อตรวจสอบว่ามีการใช้ชุดรูปแบบการดูแล (สำหรับ Drupal 8) ที่คุณสามารถใช้ได้หรือไม่
$theme_name = \Drupal::service('theme.manager')->getActiveTheme()->getName();
เพื่อรับชื่อชุดรูปแบบ