Drupal

คำถาม & คำตอบสำหรับนักพัฒนาและผู้ดูแลระบบ Drupal

3
Bootstrap จากสคริปต์ภายนอก
ฉันพยายามสร้างอินสแตนซ์เอนทิตีของ Drupal จากสคริปต์ภายนอกที่ไม่ได้เป็นส่วนหนึ่งของ Drupal หรือโมดูล Drupal สำหรับ Drupal 7 มีdrupal_bootstrapการโหลดการขึ้นต่อกันของ Drupal ที่ต้องการ อย่างไรก็ตามหลังจากที่ยาวค้นหาทั้งหมดที่ฉันพบ Drupal 8 ทราบว่าdrupal_bootstrapจะเลิกสำหรับ Drupal 8 และแน่นอนฉันได้รับ การเรียกไปยังฟังก์ชันที่ไม่ได้กำหนด drupal_bootstrap () เมื่อฉันพยายามโทรหาหลังจากที่รวมไว้ใน define('DRUPAL_ROOT', __DIR__ .'/../drupal'); require_once DRUPAL_ROOT . '/core/vendor/autoload.php'; require_once DRUPAL_ROOT . '/core/includes/bootstrap.inc'; drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL); ดังนั้นฉันจะใช้ Drupal 8 API จากสคริปต์ภายนอกได้อย่างไร!

4
วิธีรับรายการประเภทฟิลด์?
ฉันกำลังย้ายโมดูลจาก Drupal 7 ไปยัง Drupal 8 ในการตั้งค่าการกำหนดค่าของโมดูลนี้ฉันต้องได้รับรายการประเภทฟิลด์ที่มีอยู่ในปัจจุบัน ใน Drupal 7 สิ่งนี้สามารถทำได้โดยใช้field_info_field_types()ฟังก์ชั่น ใน Drupal 8 (8.0.0-rc3) ฉันได้รับข้อผิดพลาด "ไม่มีฟังก์ชั่น" แม้จะมีข้อมูลที่ระบุไว้ในหน้าช่วยเหลือการอ้างอิง Drupal APIชัดเจนว่าล้าสมัย จากนั้นตรวจสอบผมพบว่าหน้า DrupalContribDrupal::service('plugin.manager.entity.field.field_type')->getDefinitions()ที่ฟังก์ชั่นที่มีการประกาศเลิกใช้และเสนอให้ใช้งานในขณะนี้ แต่การใช้มันทำให้เกิดข้อผิดพลาดอื่น "บริการที่ไม่รู้จัก plugin.manager.entity.field.field_type" โชคดีที่เกี่ยวข้องกับคำแนะนำ "คุณหมายถึง plugin.manager.field.field_type หรือไม่" ดังนั้นฉันจึงลองใช้Drupal::service('plugin.manager.field.field_type')->getDefinitions()และว้าว: ฉันได้อาร์เรย์ประเภทฟิลด์ที่คาดหวัง แต่สมาชิกอาเรย์แต่ละคน (หนึ่งประเภทเขตข้อมูล) ตอนนี้เป็นวัตถุ (แทนที่จะเป็นอาร์เรย์ลูก) และข้อมูลที่ฉันกำลังมองหาอยู่ภายในคุณสมบัติที่มีการป้องกันดังนั้นฉันจึงไม่สามารถเข้าถึงพวกเขาได้ ในขั้นตอนนี้ฉันติดอยู่ ฉันคิดว่ามันอาจมีบางคลาสที่ฉันสามารถขยายเพื่อสำรวจข้อมูลเหล่านี้ได้ แต่ไม่มีโชค: ฉันไม่สามารถคิดได้อย่างชัดเจนว่าส่วนประกอบใดใน Drupal 8 ที่นิยามประเภทฟิลด์เป็นส่วนกลาง
10 entities  8 

3
หากคุณอัปเดตไฟล์เส้นทางใน Drupal 8 คุณจะล้างแคชได้อย่างไร?
เมื่อได้ทำงานกับ Drupal 7 ตั้งแต่เริ่มเปิดตัวฉันกำลังเรียนรู้ Drupal 8 ในขณะที่ฉันพบว่าเมื่อใดก็ตามที่ฉันเปลี่ยนแปลงสิ่งที่ฉันต้องทำdrush cache-rebuildเพื่อให้สิ่งต่าง ๆ ทำงานได้อีกครั้ง ใน VPS ของฉันใช้เวลา 15 วินาที (และโหลดหน้าถัดไปก็ช้าด้วย) ฉันมีความรู้สึกว่านี่อาจเป็นค้อนเลื่อนเพื่อแตกสถานการณ์น็อต มีวิธีที่มีประสิทธิภาพมากกว่าในการทำให้ Drupal ทำการคอมไพล์เส้นทาง (เปลี่ยน) จาก{module}.routing.ymlไฟล์หรือไม่?
10 caching  8  routes 

3
เหตุใดความคิดเห็นจึงไม่ใช่ประเภทเนื้อหาโหนด
ดังนั้น Drupal จึงมีระบบแสดงความคิดเห็น 'พิเศษ' ความคิดเห็นเป็นพลเมืองชั้นสองใน Drupal เมื่อเทียบกับโหนด ... แต่ทำไมทีมหลักไม่เพียง แต่สร้างประเภทเนื้อหาบล็อกและมุมมองเริ่มต้นสำหรับความคิดเห็นและอนุญาตให้ผู้ดูแลระบบไซต์เพิ่มในบล็อกความคิดเห็นตามความจำเป็น เช่นเดียวกับประเภทเนื้อหา 'บทความ' และ 'หน้าพื้นฐาน' ซึ่งเราสามารถสร้างบล็อกและมุมมองได้ ทำไมความคิดเห็นจึงแตกต่างกัน
10 7  nodes  comments 

3
เป็นวิธีที่ง่ายที่สุดในการติดตั้ง Drupal สะอาดตั้งแต่ต้นโดยใช้ drush คืออะไร
เป็นวิธีที่ง่ายที่สุด / เร็วที่สุดในการติดตั้ง Drupal ที่สะอาดตั้งแต่เริ่มต้นบนโฟลเดอร์ว่างสำหรับการทดสอบโดยใช้ drush (โดยไม่ต้องหันไปใช้เชลล์สคริปต์หรือนามแฝง)
10 drush 

3
ฉันจะปรับปรุงประสิทธิภาพของไซต์ Drupal7 ของฉันได้อย่างไร [ปิด]
ปิด คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้มุ่งเน้นที่ปัญหาเดียวโดยแก้ไขโพสต์นี้ ปิดให้บริการใน5 ปีที่ผ่านมา สำหรับคนที่ยังใหม่กับ Drupal ฉันเห็นว่ามีทรัพยากรมากมายใน Drupal Caching แต่ฉันไม่แน่ใจว่าควรใช้แหล่งใด
10 7  caching  performance 

7
วิธีรับพา ธ ไปยังโหนดที่แปลแล้ว?
ฉันได้ตั้งค่าเว็บไซต์หลายภาษาใน Drupal 7 ในเทมเพลตฉันต้องเพิ่มลิงค์ไปยังโหนดเนื้อหาที่เฉพาะเจาะจง โหนดนี้มีการแปลและชื่อแทนพา ธ ดังนี้: node/42 = pathalias_de (german version) node/43 = pathalias_en (english version) ในเทมเพลตฉันต้องการโทรurl()เพื่อรับลิงก์ไปยังโหนดเนื้อหาที่เป็นนามแฝงในภาษาปัจจุบัน ในหน้าเยอรมันมันควรเชื่อมโยงไปยัง/de/pathalias_deในหน้าภาษาอังกฤษ/en/pathalias_en ฉันได้พยายามหลายรูปแบบเช่นการเรียก nid url()เรียกนามแฝงผ่านวัตถุภาษาปัจจุบัน นี่คือสิ่งที่url()ควรจะทำหรือฉันต้องการฟังก์ชั่นที่แตกต่างกันหรือไม่? ขอบคุณ!

3
WYSIWYG CKEditor config.js ไม่ถูกใช้งาน?
ผมได้ติดตั้งและกำหนดค่าWYSIWYGโมดูล (dev ล่าสุด) เพื่อใช้ CKEditor และผมได้ดาวน์โหลดรุ่นล่าสุดของ CKEditor (ล่าสุดเปิดตัวเต็มรูปแบบ) sites/all/librariesเพื่อ ฉันสามารถใช้โปรแกรมแก้ไข ฉันจำเป็นต้องปรับแต่งสิ่งที่เพิ่มเติมบางดังนั้นฉันใช้การเปลี่ยนแปลงการกำหนดค่า config.js sites/all/libraries/ckeditor/config.jsใน อย่างไรก็ตามดูเหมือนว่าไฟล์นี้จะไม่ถูกใช้งานหรืออ่านเลย ฉันทดสอบสมมติฐานนี้โดยปรับสต็อกconfig.jsดังนี้: CKEDITOR.editorConfig = function( config ) { // Define changes to default configuration here. For example: config.allowedContent = true; alert('Hello!'); }; alert('World!'); เมื่อใดก็ตามที่ผมโหลดแก้ไขผมจะคาดหวังที่จะได้รับอย่างใดอย่างหนึ่งหรือสองการแจ้งเตือนคนหนึ่งพูดอย่างใดอย่างหนึ่งHello!หรือWorld!หรือทั้งสองอย่าง อย่างไรก็ตามไม่มีการเปิดหน้าต่างการเตือน หนึ่งจะกำหนดค่าของ CKEditor เองเมื่อใช้โมดูล WYSIWYG ได้อย่างไร
10 7  wysiwyg 

3
วิธีเรียกใช้ Drupal.attachBehaviors หลังจาก Ajax ที่ประสบความสำเร็จ
ฉันมีโมดูลที่อัพเดตโหนดผ่าน ajax เมื่อมีการคลิกลิงก์ ลิงค์คือสลับคุณควรอัปเดตโหนดด้วยค่า 1 ในการคลิกครั้งแรกจากนั้นตามด้วยค่า 0 ในการคลิกครั้งต่อไป ฯลฯ เช่นเดียวกับการเปิด / ปิดบางสิ่งบางอย่าง รหัสด้านล่างใช้งานได้ในการคลิกครั้งแรกหลังจากโหลดหน้าเว็บ แต่ไม่สามารถคลิกครั้งต่อไปได้ ฉันเชื่อว่า Drupal.attachBehaviors ต้องถูกเรียก / เรียกใช้หลังจากการคลิกแต่ละครั้ง แต่ฉันไม่สามารถหาวิธีการทำสิ่งนี้ได้ โมดูล function mymodule_menu() { $items['mypath/%/%/ajax'] = array( 'title' => 'My title', 'page callback' => 'mymodule_ajax_callback', 'page arguments' => array(1,2), 'access arguments' => array('access content'), 'type' => MENU_CALLBACK, ); ... } …
10 7  ajax  javascript 

5
วิธีกำหนดค่าเว็บฟอร์มด้วย smtp
ฉันสร้างเว็บฟอร์มและฉันต้องการกำหนดค่าให้ส่งอีเมลด้วยการตรวจสอบความถูกต้อง smtp ฉันได้ติดตั้งโมดูลการตรวจสอบความถูกต้องของ SMTP แล้ว แต่ฉันไม่พบตัวเลือกใด ๆ ที่ทำให้ฉันสามารถตั้งค่าเว็บฟอร์มสำหรับการใช้ smtp ได้ เป็นไปได้ไหม คำแนะนำใด ๆ?
10 7  webforms 

3
วิธีเปลี่ยน“ เป็น” เป็น“ -” ในขณะที่แสดงวันที่เริ่มต้นและสิ้นสุดในมุมมอง
เมื่อใช้มุมมองเพื่อแสดงวันที่เริ่มต้นและสิ้นสุดตามค่าเริ่มต้นจะเพิ่มข้อความ "เป็น" ในระหว่างวันที่สองวันฉันสงสัยว่าวิธีที่เหมาะสมในการแปลง "เป็น" เป็น "-" หรืออย่างอื่นคืออะไร ขอบคุณ
10 views 

3
รูปแบบหลายขั้นตอน / ตัวช่วยสร้าง
ฉันกำลังพยายามสร้างแบบฟอร์มหลายขั้นตอน / ตัวช่วยสร้างสำหรับ Drupal 8 ผู้ใช้กรอกข้อมูลในฟิลด์ชื่อนามสกุล คลิกที่ปุ่มถัดไป กรอกข้อมูลเพิ่มเติม คลิกที่ปุ่มส่ง มีทรัพยากรจำนวนมากในขณะนี้อุทิศให้กับหลายขั้นตอนหรือตัวช่วยสร้างแบบฟอร์มสำหรับ Drupal 7 นี้เป็นหนึ่งและนี้ ในอีกทางหนึ่งฉันมีปัญหาในการหาซึ่งเป็นวิธี "Drupal" ของการสร้างแบบฟอร์มหลายขั้นตอน / ตัวช่วยสร้าง Drupal 8 ฉันทำวิจัยและคิดว่ามีหลายวิธี: จัดเก็บค่าด้วยระบบการกำหนดค่าใหม่ ใช้อินเทอร์เฟซฟอร์มของตัวช่วยสร้าง ( ยังไม่ได้อยู่ในแกนหลัก ) เก็บค่ากับวัตถุเซสชัน drupal (ไม่แน่ใจว่ามีอยู่หรือไม่) แนวทางที่ถูกต้องสำหรับ Drupal 8 หรือไม่?
10 forms  8 

3
เมนูกำหนดเองเป็นเมนูผู้ดูแลระบบ
มีโมดูลที่ใช้เมนูกำหนดเองและแสดงเหมือนเมนูผู้ดูแลระบบหรือไม่? ฉันต้องการสร้างเมนูที่กำหนดเองของฉันจากนั้นแสดงเช่นเมนูผู้ดูแลระบบ (สำหรับบางบทบาทเท่านั้น) ฉันได้ลองใช้โมดูลแล้ว แต่: เมนูผู้ดูแลระบบไม่อนุญาตให้เลือกเมนูที่ควรแสดงและอย่างไรก็ตามฉันต้องการแสดงเมนูเริ่มต้นสำหรับผู้ดูแลระบบและเมนูที่กำหนดเองสำหรับ "ผู้แก้ไข" และบทบาทที่กำหนดเองอื่น ๆ เมนูSuperfishหรือNiceไม่อนุญาตให้วางเมนูไว้ด้านบนของหน้าเหมือนเมนู Admin วิธีแก้ไขอื่นอาจเป็นโมดูลที่วางบล็อกไว้ด้านบนของหน้าแก้ไขดังนั้นฉันจึงสามารถใช้เมนู superfish "แบบง่าย" แต่ฉันไม่พบสิ่งนี้ คำถามหลักคือฉันไม่สามารถใช้เมนูการจัดการ "เริ่มต้น" แต่เป็นเมนูที่กำหนดเอง
10 routes 

3
hook_init () ยังใช้อยู่หรือไม่ หากไม่ได้ใช้อีกต่อไปฉันจะแปลงรหัสที่ใช้งาน hook_init () ได้อย่างไร
เมื่อดูที่ Drupal.org API ฉันสังเกตว่าhook_init ()ไม่ได้รับการบันทึกไว้สำหรับ Drupal 8. เมื่อดูที่บันทึกการเปลี่ยนแปลงฉันพบว่าBootstrap hooks ไม่มีอยู่อีกต่อไปซึ่งชี้ไปที่กำจัด 'bootstrap' hooksทั้งหมดที่ซึ่ง bootstrap hooks ได้รับการกล่าวถึงhook_boot()และhook_exit(); hook_init()ไม่มีอะไรจะพูดเกี่ยวกับ ฉันค้นหา hook_init ในซอร์ส Drupal 8 และฉันพบรหัสต่อไปนี้ คนแรกคือการอ้างอิงถึงhook_init()ในความคิดเห็น; อีกสองคนดูเหมือนจะhook_init()นำไปใช้ แต่พวกเขาทั้งสองได้รับพารามิเตอร์ที่ฉันไม่ได้คาดหวัง function overlay_enable() { if (strpos(current_path(), 'admin/modules') === 0) { // Flag for a redirect to <front>#overlay=admin/modules on hook_init(). $_SESSION['overlay_enable_redirect'] = 1; } } /** * …
10 8  hooks 

4
ฉันจะจัดเรียงมุมมองตามฟิลด์ที่เขียนใหม่ได้อย่างไร
ฉันมีมุมมองของประเภทเนื้อหาที่มีสองฟิลด์วันที่แตกต่างกัน (อันที่มีวันที่ซ้ำและหนึ่งเดียวหลายวัน) กรอกข้อมูลวันที่เพียงฟิลด์เดียวตามเวลาที่กำหนด ในการแสดงผลของมุมมองฉันได้รวมสองฟิลด์โดยการซ่อนฟิลด์วันที่แรกและเขียนใหม่ที่สองและรวมถึงการเปลี่ยนโทเค็นของที่หนึ่งและที่สอง ตอนนี้มีวิธีใดบ้างที่จะใช้เขตข้อมูลที่เขียนใหม่เพื่อเรียงลำดับมุมมองตามลำดับจากน้อยไปหามากตามเขตข้อมูลวันที่รวมกันนี้ ปรากฏว่าเรียงลำดับตามค่าดั้งเดิมของฟิลด์วันที่ ฉันได้ทำวิจัยของฉันและได้พบเฉพาะหัวข้อเก่าที่เกี่ยวข้องค่อนข้างกับปลายตาย ดูการเรียงลำดับตามฟิลด์ที่เขียนใหม่หรือไม่ ตารางไม่ได้เรียงลำดับบนฟิลด์ที่เขียนใหม่ แต่อยู่บนฟิลด์ดั้งเดิม Views: ฟิลด์ที่กำหนดเองสำหรับเกณฑ์การจัดเรียง จัดเรียงตามส่วนกลาง: ข้อความที่กำหนดเอง เป็นไปได้ไหม? ฉันหวังว่าจะมีวิธีการใหม่หรือการแอบทำสิ่งนี้เกิดขึ้น
10 views 

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