Drupal

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

1
วิธีการค้นหาไม่ถูกเรียกใช้ในตัวจัดการตัวกรองที่กำหนดเอง?
ฉันใช้เข้าชม 3 ฉันต้องการสร้างตัวกรอง Views ที่กำหนดเองซึ่งจัดการช่วงวันที่ ดังนั้นฉันจึงดูตัวอย่างและพยายามเลียนแบบพฤติกรรมและฉันมีปัญหา ดูเหมือนว่าเมื่อฉันขยายคลาสของตัวเองจากviews_handler_filterวิธีการสืบค้นจะไม่ถูกเรียกใช้ แต่ถ้าฉันขยายคลาสของฉันจากสมมติว่าviews_handler_filter_stringใช้งานได้ ฉันต้องลืมบางสิ่ง แต่ฉันติดอยู่ที่นี่ นี่คือรหัสของฉันถ้ามีคนสามารถดูและให้คำแนะนำฉันเกี่ยวกับสิ่งที่เกิดขึ้นฉันจะขอบคุณมาก นี่คือ.views.incไฟล์ของฉัน: <?php class v3d_date_custom_filter extends views_handler_filter { var $always_multiple = TRUE; function value_form(&$form, &$form_state) { //parent::value_form($form, $form_state); $form['value']['v3d_date']['period'] = array( '#type' => 'select', '#title' => 'Period', '#options' => array( '7_days' => 'Last 7 days', 'yesterday' => 'Yesterday', 'today' => …
9 7  views 

1
การเพิ่มการพึ่งพาในไฟล์ข้อมูลธีม
ฉันสามารถใช้การพึ่งพา [] = ชื่อโมดูลในไฟล์ theme.info ได้หรือไม่ ฉันต้องการสร้างชุดรูปแบบ drupal ที่ฉันใช้โมดูลการพึ่งพาบางอย่างถ้าฉันสามารถพูดถึงการอ้างอิงในข้อมูลชุดรูปแบบมันจะง่ายต่อการติดตั้งชุดรูปแบบ


1
ตาราง mysql ใดมีข้อมูลพา ธ URL นามแฝง
ฉันกำลังมองหาที่จะเปลี่ยนเส้นทาง URL ของโหนดด้วยตนเองเนื่องจากปุ่มแก้ไขของฉันทำให้ฉันเกิดข้อผิดพลาดเมื่อคลิกเนื่องจากนี่เป็นเพราะข้อมูลที่ถูกโยงถึงที่ค้างอยู่จากโมดูลที่ถอนการติดตั้งอื่น ๆ ตารางใดที่มีข้อมูลเส้นทางชื่อแทน URL ใน Drupal 7
9 7  path-aliases 

3
จะเกิดอะไรขึ้นกับข้อมูล Webform เมื่อมีการลบส่วนประกอบ ฉันสามารถเปลี่ยนประเภทส่วนประกอบได้หรือไม่
ฉันสืบทอด Webform ที่ซับซ้อนด้วยการส่งหลายร้อยรายการ หนึ่งในองค์ประกอบคือ Textfield ที่ใช้ในการจับที่อยู่อีเมลของผู้ส่งแบบฟอร์ม ด้วยเหตุผลบางอย่างนี่เป็นฟิลด์ข้อความไม่ใช่ฟิลด์อีเมลซึ่งทำให้ฉันไม่สามารถใช้ที่อยู่อีเมลเพื่อส่งอีเมลยืนยันได้ หากฉันลบองค์ประกอบข้อความของฟิลด์ข้อความจะเกิดอะไรขึ้นกับข้อมูลทั้งหมด ฉันคิดว่ามันจะถูกลบ มีวิธีใดบ้างที่จะเปลี่ยนประเภทขององค์ประกอบของฟอร์มในขณะที่ยังคงรักษาข้อมูลไว้? อัปเดต: ฉันใช้ Drupal 7 และ Webform 3.19
9 7  webforms 

2
ตัวกรองเชิงบริบทของ Views ทำงานอย่างไร
ฉันพยายามพาดหัวตัวกรองบริบทอีกครั้ง! ฉันใช้มันไปซักพักแล้ว แต่ฉันก็รู้สึกตันอีกครั้ง นี่คือสิ่งที่ฉันพยายามทำ: สร้างเพจโหนดเนื้อหาที่โคลนด้วยคำศัพท์อนุกรมวิธานที่แทรกอยู่ในเพจที่โคลนนี้ เช่น: EXAMPLE.com/white-shoes/blue เมื่อผู้ใช้ไปที่หน้า / white-shoes มันจะแสดงหน้าโหนดดั้งเดิมที่มุ่งสู่สีขาว ตอนนี้ถ้าผู้ใช้ตกลงบน / white-shoes / blue มันจะแสดงหน้าโหนดเดียวกัน แต่คราวนี้เนื้อหาเนื้อหาทั้งหมดจะถูกเขียนใหม่แทนที่สีขาวด้วยสีน้ำเงิน ในมุมมองฉันจะต้องสร้างการแสดงผลหน้าด้วยเส้นทางของ:% /% ตอนนี้ฉันจะสร้างตัวกรองเชิงบริบทเพื่อดึง nid ฉันเพิ่มเนื้อหา: nid เป็นตัวกรองเชิงบริบท ฉันเลือกพิสูจน์ค่าเริ่มต้นและใส่รหัส PHP นี้: $ x = drupal_lookup_path ('source', arg (0)); $ y = ระเบิด ('/', $ x); ส่งคืน $ y 1 ; โค้ด PHP นั้นจะแปลงส่วน …
9 7  commerce  views 

2
คุณจะเปลี่ยนตำแหน่งของเอาต์พุต `form_set_error` ได้อย่างไร
มีวิธีใดบ้างใน Drupal 7 ที่จะเปลี่ยนตำแหน่งของเอาต์พุตของform_set_error? ในขณะนี้จะเรียกdrupal_set_messageว่าคิวใดที่ข้อผิดพลาดของแบบฟอร์มทั้งหมดที่ด้านบนของหน้าจอ สิ่งที่ฉันต้องการแทนคือให้แต่ละข้อความปรากฏใต้ช่องที่เหมาะสม หากไม่สามารถทำได้ฉันสามารถตั้งค่าสถานะแบบฟอร์มด้วยตนเองว่า "ไม่ถูกต้อง" ภายในMODULE_form_name_validate()ฟังก์ชันโดยไม่ใช้form_set_errorหรือไม่
9 7  forms 

9
ลบ 13000 โหนด
ฉันมีประมาณ 13,000 โหนดที่จะลบในเว็บไซต์ Drupal 7 ฉันได้ลองใช้โมดูลViews Bulk Operationsเพื่อลบ 500 โหนดในแต่ละครั้ง แต่หมดเวลา ฉันสามารถลบได้ครั้งละ 50 โหนดเท่านั้น ฉันจะลบมากกว่า 50 โหนดในเวลาได้อย่างไร
9 views  nodes 

3
การสร้างชนิดเนื้อหาที่มีฟิลด์ไฟล์ในโมดูลที่กำหนดเองโดยทางโปรแกรม
ฉันกำลังเขียนโมดูลที่กำหนดเองซึ่งฉันเคยทำมาก่อน แต่นี่เป็นครั้งแรกที่ฉันพยายามสร้างประเภทเนื้อหาที่มีฟิลด์ ฉันใช้งานhook_node_infoและประเภทเนื้อหาแสดงขึ้นในรายการประเภทเนื้อหาในรายการดรอปดาวน์จาก admin_menu อย่างไรก็ตามเมื่อฉันเรียกดูจะadmin/structure/typesไม่อยู่ในรายการ ฉันติดตั้งhook_installและหยิบรหัสที่ฉันพบในคำถาม SO อื่น ฉันมีรหัสพิมพ์ข้อมูลแก้ไขข้อบกพร่องบางอย่างลงในบันทึกข้อผิดพลาดของฉันและมันก็ดูเหมือนว่ามันทำงานได้ทั้งหมด แต่เมื่อฉันเรียกดูโครงสร้างเนื้อหาประเภทมันไม่แสดงเขตข้อมูลที่ฉันเพิ่ม นี่คือตะขอ: function mymod_node_info() { return array( 'mymod_content' => array( 'name' => t('My Mod'), 'base' => 'mymod_content', 'description' => t('A Description'), ) ); } function mymod_install() { error_log('mymod_install'); $types = node_type_get_types(); if ( ! field_info_field('field_mymod_myfile') ) { $field = array( 'field_name' …

5
ฉันจะได้รับ ID บันทึกที่แทรกล่าสุดได้อย่างไร
ฉันต้องการรับ ID บันทึกสำหรับแถวที่แทรกล่าสุดในตารางฐานข้อมูล ฉันพยายามที่จะใช้db_last_insert_id()แต่มันก็มีข้อยกเว้น เรียกฟังก์ชั่นที่ไม่ได้กำหนด db_last_insert_id() ฉันจะได้รับ ID บันทึกที่แทรกล่าสุดได้อย่างไร
9 7  database 

3
ฉันจะเพิ่มความเร็วของฟังก์ชั่น node_save () ของ drupal ได้อย่างไร
ฉันกำลังมีปัญหามากกับความไร้ประสิทธิภาพของ node_save () แต่โหนดบันทึกปัญหาของฉันได้อย่างไร นั่นคือสิ่งที่ฉันพยายามค้นหา ฉันสร้างวงวนซ้ำ 100,000 ครั้ง ฉันสร้างขั้นต่ำเปล่าสำหรับวัตถุโหนดให้ถูกต้องและบันทึกอย่างถูกต้อง นี่คือรหัสการบันทึกโหนด: $node = new stdClass(); $node->type = "test_page"; node_object_prepare($node); $node->uid = 1; $node->title = $node_title; $node->status = 1; $node->language = LANGUAGE_NONE; if($node = node_submit($node)){ node_save($node); } นี่คือผลลัพธ์: มีการบันทึก 100,000 โหนดโดยใช้ node_save () ใช้เวลา 5196.22 วินาทีในการทำให้เสร็จสมบูรณ์ นั่นคือเพียง 19 บันทึกวินาที ที่จะพูดน้อยที่เป็นที่ยอมรับไม่ได้โดยเฉพาะอย่างยิ่งเมื่อสมาชิกผู้นี้จะได้รับรอบ 1200 คำสั่งแทรกบุคคลต่อวินาทีและสมาชิกผู้นี้จะได้รับ …
9 7  performance  nodes 

5
วิธีการลบการรวบรวมฟิลด์อย่างถูกต้อง?
รุ่น Drupal: 7.21 โมดูลโมดูลการรวบรวมฟิลด์: 7.x-1.0-beta5 คำอธิบายสั้น ๆ : ฉันไม่ว่างที่จะพยายามนำเข้าคอลเลกชันฟิลด์โดยทางโปรแกรม แต่เมื่อลบบางรายการจะมีการรวบรวมฟิลด์ 'ปลอม' อยู่เสมอ คำอธิบายแบบยาว : ผู้ใช้ของฉันมีฟิลด์การรวบรวมฟิลด์ในโปรไฟล์ของพวกเขา การรวบรวมฟิลด์นี้มี 3 ฟิลด์ข้อความ ฉันต้องการนำเข้าข้อมูลจากฐานข้อมูล sql แบบกำหนดเองไปยังการรวบรวมฟิลด์ของผู้ใช้ การรวบรวมฟิลด์นี้สามารถมีได้หลายค่า เมื่อฉันนำเข้าข้อมูลเป็นครั้งแรกที่ทุกอย่างทำงานได้ดีฉันเห็นข้อมูลในฟิลด์ของการรวบรวมฟิลด์ ยิ่งใหญ่ แต่ที่นี่ส่วนที่ยุ่งยากมา สมมติว่าฉันนำเข้าสำหรับผู้ใช้ที่ระบุ 5 แถวจากฐานข้อมูลที่กำหนดเอง พวกมันจะถูกเพิ่มลงในคอลเลกชันฟิลด์ดังนั้นคอลเลกชันฟิลด์นี้มี 5 รายการแต่ละรายการมี 3 ฟิลด์ จากนั้นฉันลบบางแถวออกจากฐานข้อมูลที่กำหนดเองของฉันเพื่อที่ฉันจะได้เหลือเพียง 3 แถวสำหรับผู้ใช้รายนี้ ฉันเรียกใช้การนำเข้าอีกครั้งอัปเดต 3 รายการแรกของการรวบรวมฟิลด์ แต่จากนั้นฉันเหลือ 2 รายการจากการนำเข้าก่อนหน้า ควรลบเพราะฉันมีแถวที่นำเข้าเพียง 3 แถว แต่ยังมีรายการคอลเลกชันฟิลด์ 5 รายการ ดังนั้นฉันจึงพยายามที่จะลบรายการคอลเลกชันเขตข้อมูลเหล่านี้ แต่มีอย่างน้อยหนึ่งรายการที่เหลือ …
9 7  entities 

2
ตรวจสอบว่าชุดรูปแบบเปิดใช้งานโดยทางโปรแกรมหรือไม่
ฉันจะตรวจสอบว่าธีมเปิดใช้งานในการติดตั้ง drupal ได้อย่างไร ฉันกำลังมองหาบางอย่างเช่น module_exists () แต่สำหรับธีม ฉันไม่พบสิ่งใดในเอกสาร
9 theming 

9
มุมมอง 3 ลบตัวกรองแบบเปิดเผยโดยทางโปรแกรม
ฉันมีโหนดหลายประเภทแต่ละชนิดอ้างถึงคำศัพท์อนุกรมวิธานที่แตกต่างกัน สำหรับหมวดหมู่ที่แสดงฉันใช้โมดูล taxonomy_display ตัวอย่างเช่นเรามีสองประเภทคือตัวชี้นำและลูกบิลเลียด ตัวชี้นำมีราคาตั้งแต่ราคาถึงและตัวกรองชนิดไม้ แต่ลูกบอลไม่มีตัวกรองชนิดไม้ ดังนั้นฉันจำเป็นต้องลบตัวกรองชนิดไม้ถ้า taxonomy_term tid อ้างถึงคำศัพท์ลูกบิลเลียด ดังนั้นฉันต้องลบหนึ่งในตัวกรองที่เปิดเผยหลายอย่างโดยทางโปรแกรม function modulename_views_pre_view(&$view, &$display_id, &$args) { // Some custom logic wich field_info_instances checking ... $filter_field = 'filter_id'; // Removes from everywhere where i can find filter or filters properties unset($view->display[$view->current_display]->display_options['filters'][$filter_field]); unset($view->display[$view->current_display]->handler->options['filters'][$filter_field]); unset($view->display_handler->display->display_options['filters'][$filter_field]); unset($view->display_handler->options['filters'][$filter_field]); } ฟิลด์ตัวกรองลบออกสำเร็จ แต่ฉันได้รับการแจ้งเตือนจาก php Notice: Undefined index: …
9 7  views 

2
วิธีการใช้ความสามารถในการดำเนินการพร้อมกันของ Drush
ฉันกำลังใช้ Drupal multi-sites (รหัสฐานเดียวหลายไซต์ / *) นอกจากนี้ฉันเริ่มใช้นามแฝง Drush เพื่อจัดการ: $ cat sites/all/drush/aliases.drushrc.php <?php $aliases['localdev'] = array( 'site-list' => array( 'site1', 'site2', 'site3', ), ); ?> สิ่งนี้ทำให้ฉันสามารถดำเนินการกับไซต์ทั้งหมดได้อย่างง่ายดาย: $ drush @localdev cc all >> ฉันยังเพิ่งค้นพบว่าผมก็สามารถใช้@sitesและละเลยไฟล์ drushrc การทำเช่นนี้จะดำเนินการ "cc all" ในแต่ละไซต์ของฉันในซีรีส์ (หนึ่งครั้ง) ผมอยากจะใช้เวลานี้ในระดับต่อไปและพยายามที่จะเรียกใช้คำสั่งเหล่านี้บนเว็บไซต์ทั้งหมดsimulantiously ฉันได้ทำอ่านบางและฉันรู้สึกว่า Drush ไม่ แน่นอนสนับสนุนเรื่องนี้ drush_invoke_process () ฟังก์ชั่นใช้เวลา $ backend_options ซึ่งสามารถประกอบด้วย …

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