Drupal

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

5
กลยุทธ์การตรวจสอบสำหรับโครงสร้างพื้นฐาน
เมื่อเร็ว ๆ นี้ฉันได้พบกับการหยุดทำงานของบางเว็บไซต์ Drupal ที่ฉันได้ปรับใช้ ฉันต้องการที่จะเข้าถึงปัญหาในเชิงรุกมากกว่าที่จะตอบสนองต่อการหยุดทำงานเหล่านั้นด้วยการรีสตาร์ทบริการหรือเซิร์ฟเวอร์เอง ฉันได้อ่านเกี่ยวกับเครื่องมือตรวจสอบเช่น nagios, munin, cacti และอื่น ๆ เพื่อตรวจสอบสถานะของเซิร์ฟเวอร์ / โครงสร้างพื้นฐานของคุณ แต่ฉันไม่ได้ลองใช้งานจริง ฉันจัดการกับ Drupal เกือบ 99% ของเวลาและฉันต้องการค้นหาคำแนะนำสำหรับการตรวจสอบระดับเซิร์ฟเวอร์และการตรวจสอบระดับ Drupal (รหัสแอปพลิเคชัน) โดยทั่วไปฉันต้องการรับการแจ้งเตือนเมื่อโหลดเซิร์ฟเวอร์สูงอาจชี้ไปที่ผู้ร้าย (หรือเหยื่อ) เพื่อที่ฉันจะได้สามารถตัดสินใจได้อย่างชาญฉลาด ฉันต้องการทราบว่าผู้คนใช้อะไรในการติดตามระดับ Drupal (เช่นการส่งอีเมล) เมื่อมีข้อผิดพลาด / คำเตือนของ PHP (จะเกิดอะไรขึ้นเมื่อเซิร์ฟเวอร์อีเมลไม่ทำงาน)


1
มุมมอง 3 ไม่รู้จักตัวจัดการประกาศ ทำไมจะไม่ล่ะ?
ใน modules / addressfield / addressfield.module ฉันมี: /** * Implements hook_views_api(). */ function addressfield_views_api() { return array( 'api' => 3, 'path' => drupal_get_path('module', 'addressfield') . '/views', ); } และ /** * Implements hook_field_views_data_alter * * @param mixed $result * @param mixed $field */ function addressfield_field_views_data_alter (&$result, $field) { if (array_key_exists('field_data_field_address', …
12 7  views 

3
“ Entity API” เพิ่มอะไรให้กับ Drupal API และทำไมโมดูลถึงขึ้นอยู่กับมัน
Entity APIโมดูลขยาย API นิติบุคคลที่กำหนดไว้ใน Drupal โมดูลใดที่ควรใช้ API ที่มีให้จากโมดูลนั้น โมดูลที่ใช้เอนทิตีใหม่ง่ายกว่าที่จะเขียนหรือไม่หากขึ้นอยู่กับโมดูลEntity API โดย "ง่ายต่อการเขียน" ผมหมายความว่าโมดูลที่ใช้Entity APIจะต้องมีรหัสน้อยที่จะถูกเขียนขึ้นเมื่อเทียบกับโมดูลที่ไม่ได้ใช้Entity API ฉันอ่านหน้าโครงการ แต่ฉันก็ยังไม่เข้าใจเหตุผลที่ต้องการสร้างโมดูลที่ขึ้นอยู่กับโมดูลEntity APIแทนที่จะเป็นโมดูลที่ขึ้นอยู่กับรหัสหลักของ Drupal เท่านั้น ฉันเข้าใจว่าโมดูลที่ขยายกฎและการใช้งานเอนทิตีควรใช้โมดูลEntity API ในกรณีแรกเหตุผลก็คือการที่กฎโมดูลขึ้นอยู่กับEntity APIโมดูล
12 entities 

4
จะเพิ่มความเร็วในการปฏิบัติการ Batch API ได้อย่างไร
ฉันเคยพบเจอสิ่งนี้ทั้งกับโมดูล contrib ของบุคคลที่สามรวมถึงการดำเนินการบางอย่างของฉันเอง ฉันอยากรู้วิธีการต่าง ๆ เพื่อเร่งความเร็วการดำเนินการชุด / contrib ของฉันได้อย่างไร สมมติว่าพวกเขาทำงานกับโหนด (นำเข้า / อัพเดท ฯลฯ ) และเรากำลังจัดการกับการแยกรายการของโหนดในช่วง 10,000+ (แม้ว่าฉันจะต้องจัดการกับ 15 ล้านแถว .. ซึ่งใช่ - ฉันแค่เมา .) มันเร็วกว่าที่จะแนบกับงาน drupals cron.php และเรียกใช้ "หัวขาด" หรือไม่? ใช้ Drush ไหม หรือนี่เป็นเพียงคำถามว่าการแยกวิเคราะห์อย่างมีประสิทธิภาพและรวดเร็วฉันสามารถพัฒนาโค้ดของฉันได้อย่างไรและไม่มีอิทธิพลจากภายนอกหรือเคล็ดลับการเพิ่มประสิทธิภาพแบบเฉพาะเจาะจง ... ขณะนี้ฉันพบการทำงานที่ (ใช้การคำนวณคร่าวๆ) อาจใช้เวลา 24+ ชั่วโมง ... ขอบคุณ!

3
คำแนะนำเทมเพลตของหน้าไม่ทำงาน
ฉันสร้างธีมและมีไฟล์เทมเพลตของฉันในโครงสร้างนี้ /templates/page/page.tpl.php /templates/page/page--node-type.tpl.php ฉันได้สร้างเทมเพลตหน้าเว็บที่กำหนดเองแล้ว แต่ด้วยเหตุผลบางอย่าง Drupal ไม่ได้มารับเอง ฉันล้างแคชของฉันแล้วและพยายามเพิ่มฟังก์ชันตัวประมวลผลล่วงหน้านี้ในไฟล์ template.php ของชุดรูปแบบ แต่ก็ยังใช้งานไม่ได้ if (isset($vars['node'])) { // If the node type is "blog" the template suggestion will be "page--blog.tpl.php". $vars['theme_hook_suggestions'][] = 'page__'. str_replace('_', '--', $vars['node']->type); } ความช่วยเหลือใด ๆ ที่จะได้รับการชื่นชม
12 7  theming 

3
Vid หมายถึงอะไร
ฉันได้ออกแบบมุมมองและฉันเห็นข้อความค้นหานี้ในส่วนแสดงตัวอย่าง: SELECT node.nid AS nid, node_data_field_crm_history_brokerid.field_crm_history_brokerid_value AS node_data_field_crm_history_brokerid_field_crm_history_brokerid_value, node.language AS node_language, node.type AS node_type, node.vid AS node_vid, node_data_field_crm_history_brokerid.field_crm_history_caseid_value AS node_data_field_crm_history_brokerid_field_crm_history_caseid_value, node_data_field_crm_history_brokerid.field_crm_history_dateadded_value AS node_data_field_crm_history_brokerid_field_crm_history_dateadded_value, node_data_field_crm_history_brokerid.field_crm_history_entrydesc_value AS node_data_field_crm_history_brokerid_field_crm_history_entrydesc_value FROM node node LEFT JOIN content_type_crm_history node_data_field_crm_history_brokerid ON node.vid = node_data_field_crm_history_brokerid.vid WHERE node.type in ('crm_history') ที่vidนี่หมายความว่าอย่างไร ที่จริงฉันต้องการสิ่งนี้เพราะเมื่อฉันพยายามแทรกกฎง่าย ๆ เพื่อแทรกแถวใน crm_history โดยใช้แบบสอบถามนี้: $result = db_query("INSERT …
12 views  database 

3
ฉันจะจัดการการพัฒนาความร่วมมือในเว็บไซต์ Drupal ได้อย่างไร
ฉันทำงานร่วมกับผู้พัฒนารายอื่นในเว็บไซต์ Drupal เราได้พยายามหาวิธีที่ดีในการทำงานในส่วนต่าง ๆ ของเว็บไซต์ในเวลาเดียวกันโดยไม่ต้องมายุ่งกัน เราได้ลองใช้อินสแตนซ์การพัฒนาของเว็บไซต์เดียวกัน แต่เรามักจะทำขั้นตอนให้กับผู้อื่นหรือทำให้ไซต์แย่ลงด้วยรหัสที่ไม่ดีทำให้คนอื่น ๆ ไม่สามารถทำงานได้จนกว่าจะได้รับการแก้ไข ดังนั้นเราจึงย้ายไปยังอินสแตนซ์การพัฒนาแยกต่างหาก แต่ตอนนี้มันเป็นความเจ็บปวดครั้งใหญ่ที่จะรวมงานของเราเข้ากับอินสแตนซ์เดียวของไซต์ โดยทั่วไปเราจะทำซ้ำทุกสิ่งในสำเนาที่แชร์ ปัญหาที่ใหญ่ที่สุดที่เรามีตอนนี้คือเราจะรวมการเปลี่ยนแปลงฐานข้อมูลอย่างไรและเราจะรวมฐานข้อมูลในระบบควบคุมแหล่งที่มาของเราได้อย่างไร ไฟล์เป็นเรื่องง่ายเพียงแค่ติดตามพวกเขาทั้งหมด (เราใช้คอมไพล์) และรวมงานของเราแก้ไขข้อขัดแย้งในกรณีที่จำเป็น แต่วิธีนี้ใช้ไม่ได้กับฐานข้อมูล เราสามารถใช้การถ่ายโอนข้อมูล SQL และรวมไว้ในที่เก็บ git ของเรา แต่เราไม่สามารถรวมฐานข้อมูลได้ โมดูลคุณสมบัติช่วยเล็ก ๆ น้อย ๆ ให้เราส่งออกบางส่วนของงานฐานข้อมูลของเราเป็นรหัสที่สามารถ versioned และกลมกลืน อย่างไรก็ตามไม่ได้ใกล้เคียงกับทุกสิ่งที่สนับสนุนคุณสมบัติ ดังนั้น... ขั้นตอนใดที่เราสามารถทำได้เพื่อผสานการเปลี่ยนแปลงฐานข้อมูลของเราได้อย่างง่ายดาย วิธีที่เราควรรุ่นฐานข้อมูล (วางไฟล์การถ่ายโอนข้อมูลในคอมไพล์วิธีที่ดีที่จะทำ)? มีโมดูลใดบ้างที่สามารถช่วยแก้ไขปัญหาเหล่านี้ได้บ้าง หรือเราทำงานกับสำเนาของไซต์เดียวกันหรือไม่? (โปรดอย่าเลย) แก้ไข: ในความคิดเห็นที่เราพูดถึงสิ่งที่ไม่สามารถส่งออกด้วยคุณสมบัติและหนึ่งในนั้นคือ Taxonomies มีอีกเป็นคำถามที่เกี่ยวข้องกับการที่
12 7 


1
ฉันจะใช้รุ่น jQuery แตกต่างจากรุ่นเริ่มต้นที่ใช้โดย core ได้อย่างไร
ฉันต้องใช้เวอร์ชัน jQuery อื่น ปัจจุบัน Drupal ใช้ jQuery 3.2.1 แต่ฉันต้องการรุ่นก่อนหน้า ใน Drupal 7 คุณสามารถเปลี่ยนเวอร์ชั่น jQuery ด้วยโมดูลjQuery Updateได้อย่างง่ายดาย ฉันจะประสบความสำเร็จเช่นเดียวกันกับ Drupal 8 ได้อย่างไร
12 8  javascript 

4
วิธีเข้าถึงป้ายกำกับที่เลือกแทนค่า
ฉันมีรายการสถานะที่เลือก: AL|Alabama AK|Alaska AZ|Arizona AR|Arkansas ในรหัสเพื่อเข้าถึงค่าสถานะที่เลือกฉันสามารถเรียกใช้รหัสเช่นนี้: ... $entity->get('field_state')->value; ... ฉันได้รับค่าเช่น AL หรือ AK ฉันจะรับป้ายกำกับเช่น Alabama หรือ Alaska ได้อย่างไร
12 8 

4
เปลี่ยนเส้นทางผู้ใช้โดยทางโปรแกรมไปที่“ การ จำกัด การเข้าถึง” โดยค่าเริ่มต้น
ฉันต้องการเปลี่ยนเส้นทางผู้ใช้ของฉันไปยังหน้าเริ่มต้น "จำกัด การเข้าถึง" โดยทางโปรแกรม ฉันรู้ว่าฉันต้องการวัตถุ "RedirectResponse" สำหรับการเปลี่ยนเส้นทางอย่างง่าย แต่ฉันจะระบุหน้า "การ จำกัด การเข้าถึง" เริ่มต้นได้ที่นี่ได้อย่างไร
12 8 

3
ตรวจสอบประเภทเนื้อหาของโหนดในส่วนประมวลผลล่วงหน้า
ฉันมีชุดของตัวแปรที่ฉันต้องการให้พร้อมใช้งานบนแม่แบบกิ่งไม้สำหรับแม่แบบเนื้อหาที่เฉพาะเจาะจง ในMYTHEME.themeฉันมี: function MYTHEME_preprocess_node(&$variables) { if (isset($variables['node'])) { $mycustomblock = \Drupal::service('plugin.manager.block') ->createInstance('myblock', []); $variables['mycustomblock'] = $mycustomblock->build(); $headertext = \Drupal::service('plugin.manager.block') ->createInstance('headertext', [ 'text-align-submit' => 'right', 'uppercase-submit' => TRUE, 'header_size' => 'h4', 'header-size-submit' => 'h4', 'grid-size-submit' => 6, 'header-title' => 'This is a test', ] ); $variables['headertext'] = $headertext->build(); } } นี้จะช่วยให้ฉันไปใช้{{ …
12 nodes  8  hooks 

5
ฉันจะรับเลเบลชนิดโหนดจากอ็อบเจ็กต์โหนดได้อย่างไร?
ฉันกำลังพยายามรับป้ายผนึก (โหนดประเภทป้ายกำกับ) ของโหนดจากวัตถุโหนดใน Drupal 8 ใช้งานได้ แต่ดูเหมือนยืดยาว: $node_type = \Drupal::entityManager()->getStorage('node_type')->load($node->getType())->get('name'); จะมีวิธีอื่นในการรับป้ายกำเป็นไปได้ในวิธีที่ซับซ้อนน้อยลงหรือไม่
12 8  entities 

2
แสดงฟิลด์โหนดภายใน page.html.twig
ฉันมีฟิลด์รูปภาพในประเภทเนื้อหาของฉัน (field_hero_image) ฉันไม่ต้องการให้มันแสดงผลในไฟล์ node.html.twig อย่างไรก็ตามฉันต้องการแสดงในไฟล์ page.html.twig โดยเฉพาะฉันต้องการที่จะแสดงมันพร้อมกับชื่อหน้า ฉันจะใช้รหัสใดในไฟล์ page.html.twig ของฉันเพื่อเข้าถึงฟิลด์ระดับโหนดและแสดงผล (มีคำถามคล้ายกันโพสต์ แต่ฉันไม่สามารถใช้คำตอบที่ให้ไว้เพื่อแก้ไขปัญหาของฉัน) สิ่งนี้สำหรับ Drupal 8 ชุดรูปแบบ
12 theming  8 

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