ฉันจะตรวจสอบได้อย่างไรว่าเพจที่ดูปัจจุบันมีการจัดการ


18

ฉันจะตรวจสอบได้อย่างไรว่าผู้ใช้ที่เพจกำลังดูอยู่นั้นถือว่าเป็นผู้ดูแลระบบหรือไม่ หน้าการบริหารสามารถรับรู้ได้เมื่อเปิดใช้งานธีมการดูแลระบบ

ในกรณีของฉันฉันต้องการพิมพ์การแจ้งเตือนหากตรงตามเงื่อนไขนี้และหากผู้ใช้สามารถ 'จัดการโมดูล'

คำตอบ:


30

path_is_admin(current_path())ซึ่งสามารถทำได้ด้วย

ตัวอย่างเช่นการใช้เบ็ดต่อไปนี้สามารถนำมาใช้

function mymodule_init() {
  if (user_access('administer modules') && path_is_admin(current_path())) {
      drupal_set_message(t('Message'));
  }
}

1
คำตอบขึ้นอยู่กับความหมายของคำว่า "การจัดการ" ของ OP และคำจำกัดความนี้อาจเปลี่ยนไปนับตั้งแต่คำถามถูกโพสต์ครั้งแรก บางคนคิดว่าหน้าการแก้ไขเนื้อหาเป็นหน้า "ผู้ดูแลระบบ" แต่ path_is_admin () จะคืนค่าเท็จสำหรับหน้าเช่น node / 123 / edit ในขณะเดียวกันหน้านี้อาจใช้หรือไม่ใช้ชุดรูปแบบผู้ดูแลระบบ หน้าใด ๆ อาจใช้ชุดรูปแบบผู้ดูแลและหน้าใด ๆ อาจใช้ชุดรูปแบบผู้ดูแล คำจำกัดความปัจจุบันใน OP คือ "หน้าการดูแลระบบสามารถจดจำได้เมื่อเปิดใช้งานธีมการดูแล"
arnoldbird

9

คำตอบของ Daniel นั้นถูกต้องสำหรับการพิจารณาว่าพา ธ ปัจจุบันคือ "การบริหาร" แต่ถ้าคุณต้องการตรวจสอบโดยตรงว่าธีมการบริหารกำลังถูกใช้งานหรือไม่ (คำถามของคุณดูเหมือนคลุมเครือเล็กน้อยซึ่งคุณกำลังมองหา) คุณสามารถทำได้ ...

global $theme;
if ($theme === variable_get('admin_theme', 'seven')) {
  // …
}

…แม้ว่าสิ่งนี้อาจจะล้มเหลวหากคุณพยายามเรียกใช้เร็วเกินไปในกระบวนการบูทสแตรปกล่าวคือก่อนที่จะ$themeถูกกำหนดไว้


ชี้แจง OP ดังนั้นจึงไม่ได้มุ่งที่จะหารูปแบบผู้ดูแลระบบ ธีมผู้ดูแลระบบค่อนข้างเป็นเพียงการบ่งบอกถึงเส้นทางการดูแลระบบ
Daniel

ฉันยังคงสับสนจนกระทั่งฉันเห็นว่านี่เป็นหนึ่งในสิ่งที่คุณโพสต์คำถามแล้วตอบด้วยตนเอง Derp ฉันเข้าใจแล้ว
Garrett Albright


0

เพื่อตรวจสอบว่ามีการใช้ชุดรูปแบบการดูแล (สำหรับ Drupal 8) ที่คุณสามารถใช้ได้หรือไม่

$theme_name = \Drupal::service('theme.manager')->getActiveTheme()->getName();

เพื่อรับชื่อชุดรูปแบบ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.