Drupal

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

4
ฉันจะโอนย้ายเอนทิตีไฟล์ไปยังเอนทิตีสื่อได้อย่างไร
ฉันกำลังใช้โมดูลโยกย้ายสำหรับการโยกย้าย D7 ถึง D8 และฉันกำลังเขียนการโยกย้ายทั้งหมดด้วยตนเองในรหัส (แทนที่จะใช้โมดูลการโยกย้าย D7 ในตัวเนื่องจากฉันต้องการการควบคุมการย้ายที่ละเอียดยิ่งขึ้น) ฉันมีโครงสร้างต่อไปนี้: ไซต์ D7 มีฟิลด์รูปภาพที่เก็บรูปภาพเป็นเอนทิตีไฟล์ บนไซต์ D8 เขตข้อมูลรูปภาพเป็นการอ้างอิงเอนทิตีไปยังเอนทิตีสื่อ (และเอนทิตีสื่อจะมีเขตข้อมูลรูปภาพ) เดิมทีฉันมีสิ่งต่อไปนี้สำหรับการโยกย้ายรูปภาพของฉัน: id: image_files source: plugin: legacy_images constants: source_base_path: http://example.com/ destination: plugin: 'entity:file' process: fid: fid filename: filename source_full_path: - plugin: concat delimiter: / source: - constants/source_base_path - uri - plugin: urlencode uri: plugin: file_copy …
10 8  migration 

2
ฉันจะตั้งค่าอายุการใช้งานคุกกี้ได้อย่างไร
ฉันมีปัญหาในการตั้งค่าอายุการใช้งานคุกกี้ในอินสแตนซ์ D8 ของฉัน ฉันต้องการตั้งค่าเป็นศูนย์เพื่อให้การปิดเบราว์เซอร์ล็อกออฟผู้ใช้ ฉันเพิ่มลงini_set('session.cookie_lifetime', 0);ในไซต์ / default / settings.php แล้ว ไม่มีการอ้างอิง cookie_lifetime ก่อนหน้านี้ในไฟล์ ฉันเพิ่มบรรทัด ฉันได้ล้างแคช Drupal แล้วและล้างแคช Chrome ด้วย น่าเศร้าที่มันไม่ได้รับความเคารพ เซสชันยังคงมีอยู่หลังจากปิดเบราว์เซอร์ ฉันค้นหา codebase ทั้งหมดแล้วini_set('session.cookie_lifetime', 200000);แต่ดูเหมือนไม่มีอยู่ในเว็บไซต์ของฉัน ฉันไม่เห็นว่า Drupal กำลังตั้งค่าอายุการใช้งานคุกกี้ไว้ที่ไหน ฉันได้ลองเพิ่มการตั้งค่าผ่านทางไฟล์ php.ini ในรูท แต่นั่นก็ถูกครอบงำโดย Drupal ฉันรู้สึกว่านี่เป็นสิ่งที่เรียบง่ายดังนั้นฉันจึงต้องการหลีกเลี่ยงปลั๊กอิน รอคอยที่จะได้ยินจากทุกคน ขอบคุณล่วงหน้า.
10 8  cookies 

1
วิธีรับอาร์เรย์ของรหัสเอนทิตีที่อ้างอิงจากฟิลด์การอ้างอิงเอนทิตี
ฉันมีentity_referenceสนามที่มีความBaseFieldDefinition::CARDINALITY_UNLIMITEDสำคัญเชิงหัวใจ ฉันต้องการรายการรหัสเอนทิตีที่อ้างอิง ฉันรู้ว่าฉันสามารถรับเอนทิตีที่อ้างอิงได้ทั้งหมดโดยการโทร$x->referencedEntities()แต่ฉันต้องการเฉพาะรหัสที่จะโหลดเอนทิตีในภายหลัง ขณะนี้ฉันกำลังทำสิ่งนี้: $a = []; foreach ($entity->autoren as $v) { $a[] = $v->target_id; } $this->setCurrentAnwaltReferenzen($a); ไม่มีใครรู้วิธีแก้ปัญหาที่ดีกว่าเหมือนใน D7 (-> raw ())? ขอบคุณ
10 8  entities 

6
จะแสดงมากกว่า 10 รายการในการเติมข้อความอัตโนมัติวิดเจ็ตลิงค์ได้อย่างไร?
นี่เป็นคำถามเกี่ยวกับโมดูลลิงค์ เนื่องจากด้วยโมดูลลิงก์คุณสามารถป้อนลิงก์ภายนอกหรือภายในทั้งสองเราจึงเชื่อมั่นอย่างยิ่ง น่าเสียดายที่จำนวนรายการที่จะแสดงจากฟิลด์การเติมข้อความอัตโนมัติของมันถูก จำกัด ไว้ที่ 10 เรามีโหนดจำนวนมากที่มีชื่อเหมือนกันเกือบทั้งหมดดังนั้นจึงเป็นเช่นนั้นว่าโหนดที่เรากำลังค้นหาไม่แสดงในฟิลด์เติมข้อความอัตโนมัติเมื่อมี ชื่อที่ตรงกันมากกว่า 10 รายการ ขีด จำกัด คือ hardcoded core/lib/Drupal/Core/Entity/EntityAutocompleteMatcher.phpใน มีวิธีที่สง่างามในการเพิ่มจำนวนเล็กน้อยจากภายในโมดูลที่กำหนดเองหรือไม่? ฉันต้องยืดเวลาclass EntityAutocompleteMatcherหรือไม่? ฉันจะต้องวางส่วนขยายของฉันไว้ที่ใดและจะมั่นใจได้อย่างไรว่าส่วนขยายนั้นถูกเรียกใช้จากภายในวิดเจ็ตลิงก์
10 8  navigation  ajax 

1
เพิ่มแท็บ / โลคัลภารกิจไปยังโหนด
hotel_reviewsฉันได้สร้างโมดูลที่เรียกว่า ฉันได้สร้างเส้นทางโหนด / {โหนด} / ความคิดเห็นโดยใช้hotel_reviews.routing.yml hotel_reviews.content: path: '/node/{node}/reviews' defaults: _controller: '\Drupal\hotel_reviews\Controller\ReviewsController::content' _title: 'Reviews' requirements: _permission: 'access content' จากนั้นผมก็พยายามที่จะเพิ่มงานท้องถิ่นโดยใช้hotel_reviews.links.task.yml hotel_reviews.content: route_name: hotel_reviews.content title: 'Reviews' base_route: node.view weight: 100 ตอนนี้ฉันสามารถเข้าถึงเนื้อหาที่กำหนดโดยคอนโทรลเลอร์ของฉันได้ที่node/1/reviewsแต่เมื่อฉันไปที่node/1ฉันไม่เห็นแท็บคำวิจารณ์ ผมทำอะไรผิดหรือเปล่า? ฉันใช้เอกสารต่อไปนี้มาแล้ว: บทแนะนำการอัพเกรด D7 เป็น D8: แปลง hook_menu () และ hook_menu_alter () เป็น Drupal 8 APIs จัดเตรียมภารกิจโลคัลที่กำหนดโมดูล โครงสร้างเส้นทาง
10 8  routes 

3
วิธีแก้ไข“ การติดตั้ง Hook ไม่ควรทำซ้ำเอกสาร @param”?
ฉันใช้ PhpStorm เพื่อทำการทดสอบการล้างโค้ดของฉันในโมดูลที่กำหนดเอง สำหรับฟังก์ชั่นต่อไปนี้ฉันได้รับคำเตือนนี้: การใช้งาน Hook ไม่ควรทำซ้ำเอกสาร @param /** * Implements hook_field_widget_form_alter(). * * @param array $element * @param array $form_state * @param array $context */ function mymodule_field_widget_form_alter(&$element, $form_state, $context) { if ($context['widget'] instanceof \Drupal\text\Plugin\Field\FieldWidget\TextareaWidget) { $element['#after_build'][] = '_mymodule_remove_textarea_help'; } } ฉันควรทำอย่างไรเพื่อแก้ไขปัญหานี้ ฉันคิดว่าฉันต้องการลบ@paramความคิดเห็น แต่เมื่อฉันทำอย่างนั้น PhpStorm บ่นว่าฉันไม่มีความคิดเห็นใด ๆ

8
จะรีเฟรชการย้ายข้อมูลใหม่ในโมดูลการย้ายข้อมูล Drupal 8 ได้อย่างไร
เมื่อเขียนกระบวนการย้ายข้อมูล Drupal 8 ฉันสามารถรีเฟรชกระบวนการย้ายข้อมูลใหม่ได้หากฉันติดตั้งโมดูลโยกย้ายใหม่ drush cr ไม่ทำงาน คำอธิบาย: ฉันมีหนึ่งโมดูลคือ: cm_migrationsซึ่งมีการโยกย้าย 2: cm_users cm_tags ด้วยdrush msฉันเห็น: Group: beer Status Total Imported Unprocessed Last imported cm_users Idle 3 3 0 2016-02-09 16:56:25 cm_tags Idle 4 0 4 ฉันเขียนกระบวนการย้ายใหม่: cm_beers ฉันรันdrush cr; drush msและฉันเห็นตารางเดียวกันกับก่อนหน้านี้ เมื่อฉันถอนการติดตั้งและติดตั้งcm_migrationsฉันจะเห็นกระบวนการโยกย้ายสามครั้ง: Group: beer Status Total Imported Unprocessed Last imported …
10 migration 

1
Theme hooks vs โมดูล hooks
บางครั้งเมื่อฉันพยายามที่จะใช้ตะขอเพียงตระหนักว่ามันควรจะอยู่ในไฟล์โมดูล มีวิธีการรู้หรือไม่ว่า hooks ใดที่สามารถนำไปใช้ในไฟล์ template.php ของชุดรูปแบบหรือหนึ่งอันในโมดูล
10 hooks 

5
วิธีการเปลี่ยนเส้นทางไปยังหน้าเว็บที่กำหนดเองหลังจากที่โหนดบันทึกหรือลบ?
สิ่งที่ฉันพยายามทำไม่ได้ผลฉันยังคงเปลี่ยนเส้นทางไปที่ / node / {id}: function hook_form_alter(&$form, $form_state, $form_id) { $form['actions']['submit']['#submit'][] = 'callback_set_redirect'; } function callback_set_redirect($form, FormStateInterface $form_state) { $form_state->setRedirect('custom.landing.page'); }
10 8  redirection 

3
ผู้ดูแลระบบสามารถสร้างบัญชีใหม่โดยไม่มีรหัสผ่านได้หรือไม่
เมื่อผู้ดูแลระบบสร้างบัญชีใหม่ (ผู้ดูแลระบบ / คน / สร้าง) พวกเขาจะได้รับแจ้งให้ป้อนรหัสผ่านสำหรับบัญชี ลูกค้าของฉันต้องการให้เป็นเมื่อบัญชีถูกสร้างขึ้นในส่วนหลังผู้ดูแลระบบไม่จำเป็นต้องป้อนรหัสผ่าน แต่ผู้ใช้จะได้รับข้อความแจ้งเตือนพร้อมลิงก์เข้าสู่ระบบแบบใช้ครั้งเดียวและจากนั้นสามารถตั้งค่า รหัสผ่านหลังจากเข้าสู่ระบบโดยใช้ที่ วิธีที่ดีที่สุดในการบรรลุสิ่งเช่นนี้คืออะไร? ฉันคิดว่าอาจจะเปลี่ยนแบบฟอร์มเพื่อตั้งค่า#default_valueฟิลด์รหัสผ่านเป็นรหัสผ่านแบบสุ่มจากนั้นตั้งค่า'#access' => FALSEแต่ฉันไม่แน่ใจว่าเป็นวิธีที่ดีที่สุดในการดำเนินการหรือไม่
10 7  users 

4
วิธีค้นหาอินพุตทั้งหมดที่ใช้ประโยชน์จากฟิลเตอร์อินพุต php เพื่อปิดใช้งานโมดูลตัวกรอง php ได้อย่างสมบูรณ์?
ฉันต้องการปิดการใช้งานโมดูลตัวกรอง PHP บนเว็บไซต์ขนาดใหญ่ แต่ต้องผ่านทุกโหนดบล็อกและสาขาอื่น ๆ ที่คุณสามารถใช้ตัวกรอง php ที่เป็นไปได้ มีวิธีหรือวิธีการง่ายๆโดยใช้คำสั่ง SQL เพื่อค้นหาว่าตัวกรอง php ถูกนำไปใช้ในเว็บไซต์ของฉันหรือไม่?

6
จะใช้การรับรองความถูกต้องเบื้องต้นของบริการได้อย่างไร
จะใช้โมดูลการรับรองความถูกต้องเบื้องต้นของบริการได้อย่างไร ฉันต้องการเพิ่ม http auth พื้นฐานสำหรับบริการของฉัน ฉันได้ติดตั้งและเปิดใช้งานการกำหนดค่าจุดสิ้นสุดของฉัน ฉันได้รับ "การตรวจสอบสิทธิ์พื้นฐาน HTTP Services_basic_auth ไม่มีการตั้งค่า" ในการกำหนดค่าจุดสิ้นสุดของฉัน หน้าการตั้งค่าอยู่ที่ไหน
10 7  services 

2
วิธีสร้างผู้ใช้ที่มีบทบาทผ่านบริการ REST
ฉันสามารถสร้างผู้ใช้ใหม่ด้วยรูปแบบ JSON ต่อไปนี้ (การใช้โปรแกรมเสริม POSTER เพื่อโพสต์ข้อมูลนี้ไปยังบริการ REST) { "name":"user34", "pass":"3323", "mail":"sample@example.com", "status":"1" } คำถามของฉันคือวิธีการสร้างผู้ใช้ที่มีบทบาทเฉพาะ ฉันลองใช้รูปแบบ JSON ต่อไปนี้ { "name":"user35", "pass":"pwds3", "mail":"sample2@example.com", "status":"1", "roles":{ "2":"authenticated user", "4":"moderator" } } แต่การตอบสนองให้ข้อผิดพลาดดังต่อไปนี้ ["ตรวจพบตัวเลือกที่ผิดกฎหมายโปรดติดต่อผู้ดูแลเว็บไซต์"]
10 7  users  services 

5
วิธีการหลีกเลี่ยง“ ตรวจพบตัวเลือกที่ผิดกฎหมาย” เมื่ออัปเดตค่ารายการที่เลือกผ่าน ajax?
ฉันมีสี่ฟิลด์อ้างอิงเอนทิตีไปยังเอนทิตีผู้ใช้ในแบบฟอร์ม รูปแบบโฮสต์เป็นรูปแบบการแก้ไขโหนด สามของพวกเขาจะเลือกรายการสุดท้ายคือInline Entity แบบฟอร์ม หลังจากเพิ่มเอนทิตีผู้ใช้ผ่าน IEF ฉันกำลังพยายามอัปเดตค่ารายการที่เลือก: function ebep_users_feature_users_list_ajax($form, $form_state) { $ief = array_shift($form_state['inline_entity_form']); $options = array('_node' => t('- None -')); $commands = array(); foreach($ief['entities'] as $data) { $options[$data['entity']->uid] = $data['entity']->name; } foreach(_ebep_users_feature_getUserListFieldNames() as $fieldName) { $form[$fieldName]['und']['#options'] = $options; $commands[] = ajax_command_replace('#'.$fieldName.'_wrapper', drupal_render($form[$fieldName])); } return array('#type' => 'ajax', '#commands' …
10 7  ajax  forms 

4
การป้อนอัตโนมัติโดยใช้ฟิลด์อื่น
ฉันมีสถานการณ์ที่ซับซ้อนมากซึ่งฉันต้องการคำแนะนำ ฉันมีชนิดเนื้อหาmy_contentซึ่งมีข้อมูลการเก็บรวบรวมข้อมูลที่แนบมากับมันfield_mycollectionซึ่งมีข้อมูลอ้างอิงนิติบุคคลอ้างอิงให้กับผู้ใช้field_my_userreferenceข้อมูลโทรศัพท์field_my_phone, ช่องข้อความและข้อมูลข้อความอื่นfield_my_textfield_my_anothertext My Content |_ field_mycollection |_ field_my_userreference |_ field_my_phone |_ field_my_text |_ field_my_anothertext นิติบุคคลผู้ใช้ยังมีสาขาfield_my_phone, field_my_textและfield_my_yetanothertextที่หลังมีชื่อเครื่องที่แตกต่างกัน สิ่งที่ฉันต้องการจะทำถ้าในmy_contentรูปแบบการแก้ไข / เพิ่มในfield_my_userreferenceผู้ใช้มีการเลือกเขตข้อมูลอื่น ๆ ควรจะเติมอัตโนมัติจากข้อมูลของผู้ใช้ที่เลือก ฟิลด์ที่เติมอัตโนมัติควรยังคงสามารถแก้ไขได้ ฉันจะบรรลุเป้าหมายนี้ได้อย่างไร hook_form_FORM_ID_alter()ฉันต้องการที่จะทำมันถ้าเป็นไปได้กับบางการเข้ารหัสโดยใช้
10 7  entities 

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