Drupal

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

6
ฉันจะเพิ่มคลาส CSS ลงในเลเบลของฟอร์มได้อย่างไร
ฉันต้องการเพิ่มคลาส CSS ลงในป้ายกำกับบนหน้าเว็บที่ใช้ Drupal 8 Form API ฉันไม่สามารถหาข้อมูลอ้างอิงออนไลน์เกี่ยวกับวิธีการใช้งานได้ ฉันใช้วิธีแก้ไขปัญหาต่อไปนี้ แต่ได้ผลลัพธ์ที่แปลก public function buildForm(array $form, FormStateInterface $form_state) { $form['label1'] = array( '#type' => 'label', '#title' => $this->t('QUESTIONNAIRE'), '#id' => 'lbl1', '#prefix' => '<div class="caption1">', '#suffix' => '</div>', ) ; และ HTML ที่แสดงผลคือ: <div class="caption1"><label for="lbl1" class="control-label"> <div class="caption1"></div>QUESTIONNAIRE </label> คำสั่ง div …
11 forms  8 

5
จะป้องกันฟังก์ชั่นที่แนบมากับพฤติกรรมได้อย่างไร
ฉันมีพฤติกรรมที่เพิ่มonลงในกล่องกาเครื่องหมายบางอย่าง (function($) { Drupal.behaviors.mymodule = { attach: function (context, settings) { $('.skip-line', context).on('change', function(){ // some code if ( confirm(Drupal.t('Apply to all languages?')) ) { // applying... } }); } }; })(jQuery); มันใช้งานได้ดีมาก แต่ช่องทำเครื่องหมายอยู่ในส่วนที่โหลด AJAX ถ้าฉันโหลดส่วนนั้นของแบบฟอร์มอีกครั้งการคลิกที่พวกมันจะทำให้ป๊อปอัปยืนยันสองครั้ง ตอนนี้ฉันรู้ว่าฉันสามารถทดสอบฟังก์ชั่นภายในถ้ามันเป็นครั้งแรกในแถวที่เรียกว่า แต่ฉันต้องการที่จะให้แน่ใจว่ามันถูกเพิ่มเข้าไปในองค์ประกอบของฉันเพียงครั้งเดียวและจึงเรียกว่าเพียงครั้งเดียว ฉันจะทำสิ่งนั้นได้อย่างไร
11 javascript 

2
ตัวแปรประมวลผลล่วงหน้าสำหรับบล็อกบางตัวเท่านั้น
เป็นไปได้ที่ตัวแปรก่อนการประมวลผลสำหรับบล็อกบางอย่างเท่านั้นหรือไม่ ฉันได้สร้างฟังก์ชั่นดังกล่าวmytheme_preprocess_block__aggregator(&$vars)แต่มันไม่ทำงาน - แก้ไข - ดูเหมือนว่าจะได้รับการแก้ไขใน Drupal 8 https://drupal.org/node/1751194
11 7  theming  8 

3
ฉันจะลบชื่อ / ส่วนหัวของหน้าได้อย่างไร
ใน Drupal 8 มีวิธีง่าย ๆ ในการกำหนดค่าหน้าเพื่อให้ส่วนหัว / ชื่อหน้าไม่แสดงบนหน้าหรือไม่? ฉันได้สร้างเพจพื้นฐานโดยมี / home เป็นชื่อแทนพา ธ และชื่อหน้าแรก ฉันตั้งมันเป็นหน้าแรก อย่างไรก็ตามจะแสดง 'หน้าแรก' ที่ด้านบนของหน้าด้านล่าง navbar และ breadcrumb จำเป็นต้องสร้างธีมย่อยของธีม 'Bootstrap' และเพิ่ม CSS แบบกำหนดเองหรือไม่?
10 8  theming 

4
เพิ่มการเติมข้อความอัตโนมัติสำหรับฟิลด์ข้อความ
ฉันพยายามใช้การเติมข้อความอัตโนมัติใน text-field สำหรับ drupal 8 ในโมดูลที่กำหนดเองของฉัน ทั้งหมดที่ฉันต้องการคือการดึงข้อมูลและแสดงชื่อที่น่าจะเป็นที่ฉันพิมพ์ผ่านการเติมข้อความอัตโนมัติดังนั้นประกาศว่าการเติมข้อความอัตโนมัติของฟังก์ชั่นสาธารณะภายในชั้นเรียนใน DefaultController.php ในไดเรกทอรีโฟลเดอร์ -> mymodule / src / Controller / DefaultController.php <?php namespace Drupal\mymodule\Controller; use Drupal\Core\Controller\ControllerBase; use Symfony\Component\HttpFoundation\JsonResponse; class DefaultController extends ControllerBase { public function autocomplete($string) { $matches = array(); $db = \Drupal::database(); $result = $db->select('node_field_data', 'n') ->fields('n', array('title', 'nid')) ->condition('title', '%'.db_like($string).'%', 'LIKE') ->addTag('node_access') …
10 8  forms 

6
ฉันจะวางบล็อกโดยทางโปรแกรมได้อย่างไร
จาก UI คุณสามารถเพิ่มบล็อกในภูมิภาคด้วยวิธีดังกล่าว: ไปที่ผู้ดูแลระบบ -> โครงสร้าง -> เค้าโครงเลย์เอาต์ (/ admin / โครงสร้าง / บล็อก) คลิกที่ปุ่ม "บล็อกสถานที่" นอกเหนือจากชื่อภูมิภาค ฉันต้องการทำสิ่งเดียวกัน แต่โดยทางโปรแกรม ฉันจะเพิ่มบล็อกที่มีอยู่ในพื้นที่และบันทึกได้อย่างไร บล็อกนี้ควรจะแสดงในพื้นที่นั้นและพร้อมใช้งานในหน้าเค้าโครงเลย์เอาต์
10 8  blocks 

4
ฉันจะจัดรูปแบบลิงก์จากไฟล์เทมเพลตได้อย่างไร
เทมเพลตกิ่งไม้กำลังแสดงรายการลิงก์ที่มาพร้อมกับคลาส พื้นฐาน: {{ mylink }} รหัสทวิจะส่งออกบางสิ่งเช่น <a href="#" class="someclass" >the text</a> ลิงก์ไม่ได้มีคลาสทั้งหมด ฉันต้องการเขียนแม่แบบกิ่งไม้ที่จะเอาท์พุทแบบนี้แทน: <a href="#" class="someclass" > <span class="sprite someclass" ></span> the text</a> สิ่งที่ฉันได้ลอง: ฉันมองหาแม่แบบกิ่งไม้เพื่อแทนที่ น่าเสียดายที่ดูเหมือนว่าลิงค์จะไม่แสดงผลโดยแม่แบบกิ่งไม้ ฉันพยายามอัปเดตตัวแปร twig เช่น set mylink['#title'] = "<span>...</span>" ~ mylink['#title'] แต่มันจะไม่ทำให้ฉันทำอย่างนั้น
10 theming  8 

3
วิธีตั้ง target =“ _ blank” สำหรับลิงค์ใน CKEditor
ฉันใช้ CKEditor ใน Drupal 8 ฉันต้องการให้ทุกลิงก์เปิดในแท็บใหม่ของเบราว์เซอร์ ฉันต้องการให้รหัสมีลักษณะเช่นนี้ <a href="#" target="_blank">my link</a> แต่ถ้าฉันใช้ลิงค์ปุ่มในเครื่องมือแก้ไขฉันไม่มีตัวเลือกสำหรับเป้าหมายว่าง ฉันสามารถกรอก URL ของลิงค์และรหัสมีลักษณะเช่นนี้ <a href="#">my link</a> ความคิดใดที่ฉันต้องทำเพื่อเปลี่ยนแปลงสิ่งนี้?
10 8  navigation  wysiwyg 

1
การอ้างอิงเอนทิตีเทียบกับอนุกรมวิธาน
สมมติว่าฉันมีทีมงานที่มีสมาชิก ฉันมีประเภทเนื้อหาสำหรับทีมและประเภทเนื้อหาสำหรับสมาชิกในทีมแต่ละคน สมมติว่ามีความสัมพันธ์อื่น ๆ เช่นทีมสามารถเป็นของแผนกและมีโครงการที่สามารถกำหนดให้กับบุคคลหรือทีม ตามที่ฉันเข้าใจมีสองวิธีที่ฉันสามารถกำหนดความสัมพันธ์ระหว่างเอนทิตีเหล่านี้ - การอ้างอิงเอนทิตีหรือการใช้คำอนุกรมวิธาน เมื่อใดที่ฉันควรใช้ประเภทหนึ่งทับอีกประเภทหนึ่ง เป็นการดีที่สุดที่จะเลือกวิธีเดียวหรือผสมกัน สำหรับผมมันดูเหมือนว่า Taxonomy นั้นมีความยืดหยุ่นมากที่สุดเพราะมันง่ายต่อการสร้างต้นไม้โดยใช้ประเภท taxonomy หรืออย่างเช่นถ้าอยู่ในทีมผมก็ตัดสินใจว่าผมอยากจะสร้างลำดับชั้นในทีมที่มีฟังก์ชั่นอยู่แล้ว คำศัพท์อนุกรมวิธานลงในลำดับชั้น) ในขณะที่ถ้าฉันใช้การอ้างอิงเอนทิตีฉันไม่สามารถคิดวิธีง่ายๆในการทำเช่นนั้น (นอกเหนือจากการเพิ่มอนุกรมวิธานซึ่งทำให้ผลลัพธ์ซ้ำซ้อน) รู้สึกเหมือนมีบางสิ่งที่ฉันไม่เข้าใจที่นี่ แต่ฉันไม่แน่ใจว่ามันคืออะไร! ความช่วยเหลือใด ๆ ที่จะได้รับการชื่นชม


2
ฉันจะรวมไฟล์คลาสที่กำหนดเองในโมดูลได้อย่างไร
ในการพัฒนาโมดูล Drupal 7 ฉันสามารถรวมไฟล์คลาส inc, api หรือ php ที่กำหนดเองโดยใช้ไฟล์ [] = directive ในไฟล์ module.info หรือฟังก์ชัน drupal_load_included () ด้วย D8 โดยใช้ PSR เป็นวิธีที่เหมาะสมในการทำแพคเกจ "วัตถุ PHP ธรรมดา ole" และอ้างอิงในDefaultController.phpอะไร $a = new POPO();คิดว่าสิ่งที่ชอบ: เป็นเพียงการให้ไฟล์ PHP ที่มีชั้นเรียนnamespaceเพียงพอหรือไม่ คอนโทรลเลอร์ (หรือโมดูลโดยทั่วไป) ทราบได้อย่างไรว่ามีการอ้างอิงหรือสแกนหาคลาสนั้น
10 8 

1
วิธีสร้างเอนทิตีที่กำหนดเองใน Drupal 8 [ปิด]
ปิด คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้มุ่งเน้นที่ปัญหาเดียวโดยแก้ไขโพสต์นี้ ปิดให้บริการใน5 ปีที่ผ่านมา ฉันมีโครงการส่วนบุคคลขนาดใหญ่ที่สร้างขึ้นบน Drupal 7 ซึ่งมีเอนทิตีที่กำหนดเองมากมาย ฉันต้องการเริ่มอัปเกรดโครงการเป็น Drupal 8 แต่หลัก Drupal 8 ที่เขียนขึ้นใหม่อย่างสมบูรณ์นั้นใหญ่เกินไปสำหรับฉันที่จะไปถึงที่อื่นโดยไม่ต้องใช้เอกสารประกอบใด ๆ (+ Symfony เป็นที่รู้จักโดยสิ้นเชิงสำหรับฉันแล้ว . ฉันพยายามสร้างเอนทิตีที่กำหนดเองโดยดูที่โค้ดคอร์บางส่วน แต่ไม่ประสบความสำเร็จ คุณช่วยชี้ให้ฉันดูบทความเกี่ยวกับเอนทิตีแบบกำหนดเองใน Drupal 8 (ฉันไม่สามารถค้นหาทีละรายการ) หรือให้คำแนะนำพื้นฐานทีละขั้นตอนได้หรือไม่ ขอบคุณ
10 entities  8 

3
Theme Image Style สำหรับรูปภาพที่อยู่ในไดเรกทอรีโมดูล
อาจมาที่นี่จากมุมมอง Drupal 6 มากเกินไป แต่ ... ฉันจะกำหนดรูปแบบของภาพในรูปแบบของภาพที่กำหนดได้อย่างไรเมื่อภาพนั้นอยู่ในโฟลเดอร์โมดูล นี่คือสิ่งที่ทำให้ฉันบ้าและฉันรู้ว่าฉันแค่คิดถึงบางสิ่งที่เรียบง่าย นี่คือตัวอย่างรหัสที่แสดงสิ่งที่ฉันพยายามทำ: $file_uri = 'public://sites/all/modules/my_module/logo.jpg'; $data['logo'] = theme('image_style', array('style_name' => 'medium', 'path' => $file_uri)); แม้ว่าฉันจะใช้ file_build_uri () ฉันจะจบลงด้วยเส้นทางไปยังไฟล์ที่ไม่มีอยู่ ถ้าฉันย้ายรูปภาพไปที่ไดเรกทอรีไฟล์และเปลี่ยน $ file_uri เป็น 'public: //logo.jpg' มันก็ใช้ได้ดี ฉันจำเป็นต้องคัดลอกรูปภาพไปยังไดเรกทอรีไฟล์เป็นส่วนหนึ่งของรหัสโมดูลหรือไม่ ถ้าใช่มันไร้สาระใช่มั้ย ฉันกำลังคิดถึงอะไร มีเอกสารเกี่ยวกับวิธีการทำสิ่งนี้หรือไม่? ฉันใช้เวลากว่าหนึ่งชั่วโมงในการขุดเอกสาร Drupal และแห้งสนิท
10 7  media 

1
เมื่อใดควรใช้ไฟล์ include (inc) ในการพัฒนาโมดูล
ฉันคิดว่าฉันเข้าใจความแตกต่างทางโครงสร้างของไฟล์. inc (เทียบกับ. โมดูล) แต่มีคนอธิบายความแตกต่างในการออกแบบได้ไหม ฉันเห็นโมดูลตัวอย่าง drupal เรียกไฟล์. inc ด้วย hook_menu หรือดูไฟล์ call. inc เพื่อกำหนดฟังก์ชั่น ภายใต้สถานการณ์ที่ไม่ใส่รหัสในไฟล์. inc? มีแนวทางการออกแบบทั่วไปที่บางคนยึดติดอยู่? มีข้อได้เปรียบอื่นใดนอกจากความชัดเจนว่าทำไมจะใช้ไฟล์ (หรือหลายไฟล์). inc ประสิทธิภาพ? เวอร์ชัน? ขอบคุณ!
10 7 

1
ข้อใดมีประสิทธิภาพมากกว่านี้: entity_metadata_wrapper หรือ field_get_items
ในการรับค่าจากเอนทิตีมีสองวิธี: ใช้field_get_itemsและรับค่าของเขตข้อมูล ใช้entity_metadata_wrapperและรับค่าของเขตข้อมูล แม้ว่าจะentity_metadata_wrapperมีความแตกต่างทางด้านภาษาอยู่บ้าง แต่บางครั้ง API ก็ยังคงไม่แน่นอนโดยเฉพาะอย่างยิ่งเมื่อใช้ PHP 5.3 ตัวอย่างเช่นการรับค่าของฟิลด์ข้อความแบบยาวมักจะเป็นเส้นทางนี้: $field = $wrapper->field->value(); print $field['safe_value']; โชคดี, PHP 5.4 print $wrapper->field->value()['safe_value'];สนับสนุนรูปแบบนี้: แต่คำถามของฉันมีความกังวลมากขึ้นเกี่ยวกับประสิทธิภาพ พวกเขาทั้งสองทำงานอย่างไร พวกเขาสอบถามฐานข้อมูลทุกครั้งที่ขอค่าหรือไม่ ไม่entity_metadata_wrapperขอให้ทุกอย่างในครั้งเดียว? (การทำให้field_get_itemเหมาะกับการดึงข้อมูลค่าเดียว) ฉันไม่กล้าพอที่จะดำดิ่งลงสู่แหล่ง Drupal

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