Drupal

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

2
วิธีการเผยแพร่โหนดที่ไม่ได้เผยแพร่โดยทางโปรแกรม
ฉันมีโหนดที่ไม่เผยแพร่ซึ่งฉันมีโหนด ID ของพวกเขา ฉันจะเผยแพร่ทางโปรแกรมได้อย่างไร ถูกต้องหรือไม่เพื่อให้บรรลุในโมดูลที่กำหนดเองโดยใช้แบบสอบถามดังต่อไปนี้ db_query("UPDATE {node} SET status = 1 WHERE nid = %d", $nid)
16 7  database 


2
ทำความเข้าใจเกี่ยวกับการจัดการเซสชันของ Drupal และการตรวจสอบผู้ใช้
ฉันมีข้อกำหนดที่ฉันต้องแทนที่การตรวจสอบผู้ใช้เริ่มต้นด้วยการตรวจสอบของเซิร์ฟเวอร์กลางเช่นเซิร์ฟเวอร์ SSO ด้วยการแก้ไขข้อบกพร่อง Drupal ฉันรู้ว่าการจัดการเซสชันทั้งหมดเกิดขึ้นในincludes/session.incไฟล์ ฉันต้องการตรวจสอบสิทธิ์ตามที่แสดงในภาพ: สถานการณ์: เข้าสู่ระบบ รายละเอียดของขั้นตอนจะเป็น: แทนที่ฟอร์มล็อกอินเพื่อส่งชื่อผู้ใช้และรหัสผ่านไปยังเซิร์ฟเวอร์ SSO ( ไม่ใช่บน Drupalแต่เป็นบน. NET) ตรวจสอบผู้ใช้บนเซิร์ฟเวอร์ SSO โดยใช้ฐานข้อมูลของไซต์นั้น และส่งคำตอบกลับไปยังหน้า PHP ที่กำหนดเองของเว็บไซต์ของฉัน (หรือแบบฟอร์มโดยโมดูล?) ใช้การตอบกลับระบุผู้ใช้ในตารางผู้ใช้และสร้างเซสชันสำหรับผู้ใช้นั้นโดยไม่ตรวจสอบรหัสผ่าน (เพราะจะหมายถึงการพิสูจน์ตัวตนสองครั้ง) โดยค่าเริ่มต้น Drupal ชุดคุกกี้ที่มีชื่อของตัวแปรและมีความคุ้มค่า$insecure_session_name $sidฉันต้องการ Drupal ไม่ให้ตั้งค่าคุกกี้ที่นี่แทนส่งค่าของตัวแปรไปยังเซิร์ฟเวอร์ SSO เซิร์ฟเวอร์ SSO จะรับค่าสร้างคุกกี้และวางในโดเมนหลักdomain.com(เพื่อเตือนให้ทั้งคู่my websiteและsso serverอยู่ในโดเมนย่อยของโดเมนหลักซึ่งไม่ได้อยู่ใน Drupal ด้วย) จากนั้นเว็บไซต์ drupal สามารถเข้าสู่ระบบโดยใช้คุกกี้นั้น ฉันรู้ว่ามันเป็นคำถามที่ยากมากฉันแค่มองหาพอยน์เตอร์ว่าจะเริ่มอย่างไรดี? ตามที่พวกเขาพูดว่า "คุณไม่ควรแฮ็คหลัก" ดังนั้นคำถามของฉันคือ: ฉันควรค้นหาเพื่อทำความเข้าใจว่า Drupal authentication และการจัดการเซสชันทำงานในเชิงลึกได้อย่างไร มีวิธีที่ฉันสามารถเรียกใช้ฟังก์ชั่นในการincludes/session.incใช้ …

2
ป๊อปอัพวันที่ในตัวกรองที่เปิดเผย
ฉันใช้ Drupal 7 กับมุมมอง 3 ฉันใช้ตัวกรองแบบเปิดเผยสำหรับเขตข้อมูลวันที่และฉันต้องการระบุตัวเลือกเพื่อเลือกวันที่จาก datepopup สำหรับตัวกรองวันที่หรือไม่ ฉันจะทำสิ่งนี้ได้อย่างไร
16 views  datetime 

3
วิธีการใช้ระบบตามชื่อเสียงที่มีตราใน Drupal คล้ายกับไซต์ StackExchange?
การรับป้ายบน StackExchange นั้นสนุกดี แต่นอกเหนือจากนั้นจะส่งเสริมการโต้ตอบที่มีคุณภาพจากผู้ใช้และช่วยกำจัดสแปม (ฉันไม่เคยเห็นโพสต์สแปมบนเว็บไซต์) ฉันมีเว็บไซต์ชุมชนที่มีผู้ใช้งานประมาณ 500 คน แต่ผู้ส่งอีเมลขยะเริ่มมีความอุดมสมบูรณ์มากขึ้น ฉันต้องการวิธีที่จะทำให้ไซต์มีส่วนร่วมมากขึ้นในขณะที่ส่งเสริมคุณภาพการโต้ตอบที่เหมือนกัน คุณจะแนะนำให้วางระบบชื่อเสียงที่ดีเช่นเดียวกับระบบการบรรลุเป้าหมายได้อย่างไร
16 7 

1
จะเปิดเผยตารางที่ไม่ใช่ Drupal ใน Views ได้อย่างไร
ฉันสงสัยว่าวิธีที่ดีที่สุดในการอนุญาตให้โมดูลViewsเข้าถึงตารางภายนอกไม่ใช่ใน Drupal คืออะไร ฉันลองโมดูลข้อมูลแต่ไม่อนุญาตให้ใช้ประเภทข้อมูลวันที่และเวลา
16 7  views  database 

2
วิธีการใช้ตัวจัดรูปแบบฟิลด์สำหรับคุณสมบัติเอนทิตี
ฉันสร้างที่กำหนดเองนิติบุคคลใช้Entity APIที่มีคุณสมบัติบางอย่างที่กำหนดไว้ในhook_schema()และประกาศในentityPropertyInfo(), EntityDefaultMetadataControllerการขยายชั้นเรียน จนถึงตอนนี้ดีมาก ตอนนี้ผมต้องการให้ผู้ใช้สามารถปรับแต่งถ้าและวิธีการคุณสมบัติเหล่านี้ได้แสดงเมื่อดูหน่วยงานดังนั้นผมจึงดำเนินการhook_field_extra_fields ()และประกาศให้พวกเขา จากนั้นในการควบคุมของฉันซึ่งทอดตัวEntityAPIControllerฉันเพิ่มคุณสมบัติไปยังอาร์เรย์ $ เนื้อหาในbuildContent()ขณะที่ระบุไว้ที่นี่ มันใช้งานได้ค่อนข้างดีและมีการแสดงคุณสมบัติและเคารพการสั่งซื้อและการมองเห็นใน "จัดการจอแสดงผล" อย่างไรก็ตามฉันไม่สามารถหาวิธีเพิ่มการตั้งค่าใน Manage Display เพื่อปรับแต่งการวางตำแหน่งฉลาก ( inline/above/hidden) และที่สำคัญกว่านั้นคือวิธีระบุ formatters แบบกำหนดเองสำหรับคุณสมบัติเหล่านี้ เบาะแสใด ๆ
16 7  entities 

4
bootstrap drupal ถูกต้องสำหรับไฟล์ PHP แบบสแตนด์อโลนหรือไม่
นี่คือสิ่งที่ฉันมีตอนนี้: <?php define('DRUPAL_ROOT', '/var/www/clients/client1/web15/web'); include_once(DRUPAL_ROOT . '/includes/bootstrap.inc'); drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL); // drupal_flush_all_caches(); $users = views_get_view_result('userlist', 'uid_list'); $i = 0; foreach ($users as $user) { $filename = 'sites/default/files/generated_pdfs/individual_pdf_report_' . $user->uid . '.pdf'; generate_employee_pdf($user->uid, $filename); error_log('Generated ' . $filepath); $i++; } // create object $zip = new ZipArchive(); // open archive if ($zip->open("sites/default/files/generated_zips/individual-reports.zip", ZIPARCHIVE::CREATE) …
16 7  bootstrapping 

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

4
ฉันจะรับ $ view-> หมายเลขแถวจริงได้อย่างไร
ฉันจะรับหมายเลขแถวจริงใน views-view-field - title.tpl.php ใน Drupal7 และ views3 ได้อย่างไร ฉันรู้วิธีที่จะได้รับทั้งหมดโดย $view = views_get_current_view(); $view->total_rows; แต่ฉันจะรับหมายเลขแถวจริงได้อย่างไร หากต้องการพิมพ์ 1/4 2/4 3/4 4/4
16 views  theming 

10
ลูกแพร์ติดตั้ง Drush ที่ไหน? [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัพเดทคำถามดังนั้นจึงเป็นเรื่องในหัวข้อคำตอบ Drupal ปิดให้บริการใน4 ปีที่แล้ว ฉันติดตั้ง Drush โดยใช้ตัวเลือก PEAR ที่กล่าวถึงในหน้าโครงการ Drush แต่ฉันไม่พบตำแหน่งที่ติดตั้ง มีใครรู้ตำแหน่งการติดตั้งเริ่มต้นหรือไม่ โดยเฉพาะฉันไม่สามารถค้นหาตำแหน่งของไฟล์ drush.rc.php เพื่อแก้ไขและเพิ่มหลายไซต์ได้
16 drush 

2
ฉันจะเปลี่ยนเครื่องมือจัดการการส่งฟอร์มได้อย่างไร
ด้วยเหตุผลบางอย่างฉันต้องแทนที่อักขระบางตัว (ถ้ามี) ในทุก ๆ textfields ในรูปแบบใด ๆ ก่อนที่พวกเขาจะถูกเก็บไว้ในฐานข้อมูล กล่าวอีกนัยหนึ่งฉันต้องการตะขอที่ฉันสามารถรับข้อมูลที่ส่งมาทั้งหมดและแทนที่ตัวละครของพวกเขา ฉันพบวิธีแก้ปัญหานี้: function hook_form_alter($form, $form_state, $form_id) { $form['#submit'] = 'my_custom_submission_function'; } แต่นี่ไม่ใช่ความคิดที่ดีเพราะฉันต้องดูแลความคืบหน้าของการส่งที่เหลือด้วย ฉันต้องการแทนที่ตัวละครบางตัว มีเบ็ดทำเช่นนี้? การแก้ปัญหาคืออะไร?
16 7  hooks  forms 

3
ได้รับ ID ไฟล์ (fid) ฉันจะรับ HTML ที่แสดงถึง fid นั้นได้อย่างไร
ฉันกำลังมองหาที่จะทำอะไรเช่นนี้ $fid = 15; $file = (array)file_load($fid); $content = drupal_render($file); echo $content; file_load () drupal_render () และโดยเฉพาะ FID นี้มาจากรุ่น 7.x-2.x ของโมดูลสื่อ
16 7  files  theming 

7
ชุดรูปแบบหน้าเช็คเอาต์ใน Drupal Commerce
ฉันจะจัดหน้ารถเข็นและชำระเงินใน Drupal commerce ได้อย่างไร ฉันได้ตั้งค่าเนื้อหาบัญชีการเรียกเก็บเงินและการชำระเงิน มีไฟล์ -. tpl.php ที่จะสร้างหรือไม่?
16 7  theming  commerce 

2
เปลี่ยน $ form_state ในการโทรกลับ AJAX
ฉันกำลังสร้างแบบฟอร์มที่ใช้'#ajax'แอตทริบิวต์API แบบฟอร์มและฉันต้องทำการเปลี่ยนแปลง$form_stateเมื่อกดปุ่มเปิดใช้งาน AJAX นี่คือสิ่งที่ฉันได้รับ: ภายในฟังก์ชันตัวสร้างแบบฟอร์มของฉัน: ... $form['some_fieldset']['add_more'] = array( '#type' => 'button', '#value' => t('Add more rows'), '#ajax' => array( 'wrapper' => 'some-fieldset', 'callback' => 'my_module_settings_ajax', 'method' => 'replace', 'effect' => 'fade', ), ); ... และนี่คือฟังก์ชันการเรียกกลับ: function my_module_settings_ajax($form, $form_state) { // Make a change to $form_state if ($form_state['some_fieldset']['add_more']) { $form_state['values']['some_fieldset']['table'][] …
16 7  forms  ajax 

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