ฉันต้องการใช้จาวาสคริปต์เพื่อลบตัวเลือกออกจากรายการตัวเลือกในกรณีที่ผู้ใช้ไม่ใช่ผู้ดูแลระบบและฉันค้นหาและพบรหัสนี้ในโพสต์และฉันใช้มันในไฟล์ themes->mythemename->mythemename.theme ของโครงการ แต่ไม่ได้ผลและฉันมีปัญหาหลายอย่างที่ฉันต้องการทราบวิธีแก้ปัญหา เนื่องจากฉันค้นหามากฉันไม่พบวิธีแก้ปัญหา
ฟังก์ชัน mythemename_preprocess_page(&$ตัวแปร, $hook) {
ถ้า (!in_array("ผู้ดูแลระบบ", \Drupal::currentUser()->บทบาท) {
if (isset($variables['node']->type) && !empty($variables['node']->type) && (strpos($variables['node']->type, 'proxy_request') ! == เท็จ)) {
drupal_add_js(drupal_get_path('ธีม', 'mythemename') . '/js/datcbaseauth.js');
}
}
}
ปัญหาแรกคือฉันไม่สามารถรับข้อมูลของผู้ใช้ปัจจุบันได้ เนื่องจากฉันได้รับรายงานอยู่เสมอว่าพารามิเตอร์ตัวที่สองของฟังก์ชัน in_array เป็นโมฆะ
ปัญหาที่สองคือฉันกำลังบอกว่าพารามิเตอร์ที่สองของฟังก์ชัน strpos เป็นวัตถุและไม่ใช่แค่สตริง แม้ว่าตัวอย่างในโพสต์จะถือว่าเป็นเพียงสตริงก็ตาม
ปัญหาที่สามและสุดท้ายคือฉันกำลังบอกว่าฟังก์ชัน drupal_add_js และฟังก์ชัน drupal_get_path นั้นไม่ได้กำหนด
ผมค้นหาอยู่นานแต่ไม่เจอวิธีแก้ปัญหาทั้ง 3 ข้อนี้ แม้แต่หัวข้อที่เขาบอกมาก็ยังไม่ครบ เช่น ไม่แจ้งว่าใช้ฟังก์ชัน drupal_add_js ในไฟล์ .theme คืออะไร ข้อกำหนดเบื้องต้นหรือแม้กระทั่งในเอกสารประกอบของ Drupal เอง ไม่มีข้อมูลใดในตัวแปร &$ตัวแปร ที่จะบอกเกี่ยวกับเนื้อหา ลักษณะของแต่ละส่วน ฯลฯ ยกเว้นว่าเป็นอาร์เรย์ที่เชื่อมโยง