Drupal

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

5
Nginx vs Apache - มีการเปรียบเทียบการใช้งานจริงและ statistcs ออกมี?
ฉันมีเซิร์ฟเวอร์ใหม่ให้เล่นด้วยและฉันก็จ้องไปที่ผืนผ้าใบว่างเปล่า ฉันสามารถใส่อะไรก็ได้ที่ฉันต้องการ ในขณะที่ฉันสบายใจกับ Apache ฉันก็ยังคงได้ยินว่า nginx สามารถจัดการปริมาณการใช้งานได้มากกว่า Apache มากเพียงใดโดยปัจจัย 10, 100 และอื่น ๆ อีกมากมาย ไม่เพียงเท่านั้นมันคือ "เร็วกว่ามาก" เมื่อฉันค้นหาบทความฉันสามารถค้นหาสิ่งต่าง ๆ มากมายที่ไม่เกี่ยวข้องกับ Drupal หรือเมื่อฉันเจอบทความที่เกี่ยวข้องกับ Drupal ก็คือ 1) ไฟล์กำหนดค่าของใครบางคนที่พยายามอธิบายวิธีตั้งค่าอย่างรวดเร็วหรือ 2) มีคนพูดว่า "ไม่ไม่ใช้ nginx ไปกับ Apache กับ PHP fcgid "แต่ก็ไม่มีคำอธิบายว่าทำไม ดังนั้นเมื่อพูดถึง Drupal ความจริงคืออะไรที่นี่? ตัวอย่างเช่นฉันกำลังมองหาบางสิ่งบางอย่างตามสายบทความ2bits.comนี้ ที่นี่ผู้เขียนได้ดู Apache mod_php vs Apache อย่างกว้างขวางพร้อมกับ fcgid ชั่งน้ำหนักข้อดีข้อเสียของแต่ละกรณีและให้กรณีศึกษาเพื่อแสดงให้เห็นถึงผลกระทบในโลกแห่งความเป็นจริง มีข้อมูลเพียงพอในบทความนี้สำหรับฉันในการตัดสินใจที่มีการศึกษาว่าวิธีใดเหมาะสมที่สุดสำหรับสถานการณ์ของฉัน ในขณะที่ผู้เขียนเปรียบเทียบ mod_php …



11
Views - เพิ่ม wrapper DIV รอบ ๆ กลุ่ม
ใน Drupal 7 ฉันได้สร้างมุมมองที่แสดงรายการหลายฟิลด์ เขตข้อมูลจะถูกจัดกลุ่มตามเขตข้อมูลอื่น (คำว่า ID ของเขตข้อมูล) เครื่องหมายมีลักษณะดังนี้: <h3>[Term 1]</h3> <div class="views-row views-row-1 views-row-odd views-row-first"> [Field Content] </div> <div class="views-row views-row-2 views-row-even"> [Field Content] </div> <div class="views-row views-row-3 views-row-odd views-row-last"> [Field Content] </div> <h3>[Term 2]</h3> <div class="views-row views-row-1 views-row-odd views-row-first"> [Field Content] </div> <div class="views-row views-row-2 views-row-even"> [Field Content] …
43 views 

15
รับ URL รูปภาพจาก field_image บนโหนด
ดังนั้นฉันมีโหนดนี้: object(Drupal\node\Entity\Node)[1862] protected 'values' => array (size=17) 'vid' => array (size=1) 'x-default' => string '7' (length=1) 'langcode' => array (size=1) 'x-default' => array (size=1) 0 => array (size=1) 'value' => string 'en' (length=2) ... (more fields) 'field_image' => array (size=1) 'x-default' => array (size=1) 0 => array (size=5) 'target_id' => …
42 media  8  theming 

11
ฉันจะบล็อกบุคคลที่ไม่เหมาะสมที่พยายามลงทะเบียนบัญชีเพิ่มเติมได้อย่างไร
ฉันมีเว็บไซต์ฟรีที่มีการลงทะเบียนแบบเปิด ทุกคนสามารถลงทะเบียนและฉันไม่สามารถเปลี่ยนแปลงได้ อย่างไรก็ตามบัญชีจะต้องได้รับการอนุมัติจากผู้ดูแลระบบหลังจากกรอกโปรไฟล์ดังนั้นฉันจึงสามารถเข้าถึงข้อมูลที่หลากหลายเพื่อระบุผู้ใช้ที่ซ้ำกัน (วันเดือนปีเกิดความคิดเห็น "แนะนำตัวเอง" ที่อยู่อีเมลภาพถ่ายสถานที่รายงานในโปรไฟล์ตำแหน่งทางภูมิศาสตร์ ที่อยู่ IP ฯลฯ ) เมื่อเร็ว ๆ นี้ไซต์ได้ถูกโจมตีจากผู้ใช้คนเดียวที่มีพฤติกรรมที่ไม่เหมาะสมอย่างยิ่งและดูเหมือนว่าจะมีเวลาไม่ จำกัด ในการลงทะเบียนหลายบัญชี บัญชีเหล่านี้สามารถถูกบล็อกได้ค่อนข้างง่าย แต่เป็นงานจำนวนมากสำหรับผู้ดูแลระบบ (ฉัน) และฉันเกรงว่าฉันจะพลาดบัญชีที่ถูกต้อง (ผู้ใช้รายนี้ลงทะเบียนประมาณ 6 บัญชีต่อวัน) ผมมีอยู่แล้ว: ห้ามที่อยู่ IP ที่ผู้ใช้รู้จัก การลงทะเบียนที่ถูกปิดกั้นจากโดเมนที่รู้จักซึ่งใช้สำหรับที่อยู่อีเมล "ที่ใช้แล้วทิ้ง" เพิ่มมุมมองพิเศษเพื่อช่วยฉันระบุบัญชีตามรูปแบบการเข้าถึงที่รู้จักจากผู้ใช้ มีอะไรที่ฉันสามารถทำได้กับคุกกี้ ฯลฯ เพื่อให้ผู้ใช้รายนี้ลงทะเบียนยากขึ้น นี่คือเว็บไซต์ Drupal 7 แก้ไข:ในกรณีของฉันนี่คือผู้ใช้ที่เป็นมนุษย์ไม่ใช่บอท แต่คำตอบของบอทนั้นมีประโยชน์สำหรับผู้ที่ตกเป็นเป้าหมายของสแปมเมอร์โดยเฉพาะ
41 users 

13
ฉันจะลบวัตถุการกำหนดค่าออกจากการกำหนดค่าที่ใช้งานอยู่ได้อย่างไร
ฉันกำลังเขียนโมดูลที่กำหนดเองสำหรับ Drupal 8 มันกำหนดวัตถุการกำหนดค่าการจัดเก็บข้อมูลในไฟล์ที่เรียกว่าโมดูล / mymod / config / ติดตั้ง / field.storage.bloom_stem.bs_twitter_ac.yml ปัญหาคือว่าสิ่งนี้จะไม่ถูกลบเมื่อฉันถอนการติดตั้งโมดูล; เห็นได้ชัดว่ามันถูกทิ้งไว้เพราะเมื่อฉันติดตั้งโมดูลอีกครั้ง drush -y pm-uninstall mymod drush cr drush -y en mymod ข้อยกเว้น 'Drupal \ Core \ Config \ PreExistingConfigException' พร้อมกับข้อความ 'วัตถุการกำหนดค่า (field.storage.bloom_stem.bs_twitter_ac) ให้โดย mymod อยู่ในการกำหนดค่าที่ใช้งานอยู่' ดังนั้นฉันต้องการบางวิธีลบวัตถุการกำหนดค่านี้ด้วยตนเอง ฉันต้องระบุรหัสเพิ่มเติมที่จะลบมันเมื่อโมดูลถูกถอนการติดตั้งหรือไม่?

4
เวิร์กโฟลว์ที่แนะนำสำหรับการโอนย้ายการกำหนดค่า (CMI) จาก dev -> stage -> การผลิตคืออะไร
เรามี drupalcamp เมื่อสองสามเดือนก่อนและมีคนถามเกี่ยวกับการจัดการการปรับใช้ด้วยระบบ config (CMI) ใหม่ เวิร์กโฟลว์ในอุดมคติที่เป็นไปได้ประการหนึ่งจะเกี่ยวข้องกับการรักษาการกำหนดค่าในการควบคุมเวอร์ชันและยังคงสามารถโยกย้ายการกำหนดค่าระหว่างสมาชิกในทีม สิ่งที่ดีที่สุดที่เราอยู่ในห้องนั้นสามารถคิดออกได้ (บางส่วนขึ้นอยู่กับการนำเสนอที่ DrupalCon Portland) คือ: บอกการควบคุมเวอร์ชันเพื่อละเว้นไดเรกทอรี config ที่ใช้งานอยู่ คัดลอกการกำหนดค่าทั้งหมดไปยังไดเรกทอรีจัดเตรียมและกระทำการควบคุมเวอร์ชัน และใช้ settings.php เพื่อย้อนกลับ active / staging directory ระหว่าง 2 environment อย่างไรก็ตามในขณะที่การหาเวิร์กโฟลว์การปรับใช้จากเซิร์ฟเวอร์หนึ่งไปยังเซิร์ฟเวอร์ถัดไปนั้นมีความซับซ้อน แต่สามารถทำได้เวิร์กโฟลว์ที่แนะนำจากสภาพแวดล้อมในท้องถิ่นหลายแห่ง (เช่นนักพัฒนาหลายคน) ไปสู่ ​​dev (หรือระหว่างกัน) - ปัญหาที่เป็นไปได้ จะแบ่งปันสภาพแวดล้อมแบบเดียวกันหรือคล้ายกันดังนั้นการเปลี่ยนแปลงในเครื่องของเพื่อนร่วมทีมคนหนึ่งจะเกิดขึ้นได้อย่างไร?

7
ฉันจะเข้าสู่ระบบผู้ใช้โดยทางโปรแกรมได้อย่างไร
ฉันกำลังมองหา API ที่จะให้ฉันเข้าสู่ระบบผู้ใช้โดยส่งชื่อผู้ใช้และรหัสผ่าน ใครบ้างมีประสบการณ์กับสิ่งนี้หรือไม่? เพื่อชี้แจงฉันพยายามสร้างกล่องล็อกอิน AJAX ที่ปรากฏเป็นป๊อปอัพในหน้าแรกและอย่ารีเฟรชหน้าเว็บในกรณีที่มีข้อมูลประจำตัวที่ไม่ถูกต้อง แต่เฉพาะในกรณีที่ล็อกอินถูกต้อง ดังนั้นนี่คือสิ่งที่ฉันทำไปแล้ว: ปรับปรุง ตอนนี้ฉันโหลดแบบฟอร์มเข้าสู่ระบบในหน้าแรกของฉันจากนั้นในการส่งฉันเปิดตัวคำขอ AJAX ที่ส่งข้อมูลประจำตัวให้กับสคริปต์นี้: function user_login_submit_try() { global $user; $uid = user_authenticate($_POST['name'],$_POST['pass']); $arr = array ('name'=>$_POST['name'],'pass'=>$_POST['pass']); if ($uid){ $user = user_load($uid); user_login_finalize($arr); } echo drupal_json_encode($uid); exit; }; มันยังใช้งานได้ แต่ความกังวลของฉันคือปัญหาด้านความปลอดภัย (ดังที่กล่าวไว้โดย googletorp); ดูเหมือนว่าไม่มี API ใดที่ฉันใช้ในสคริปต์นี้ทำให้ข้อมูลถูกทำให้บริสุทธิ์ ใครบ้างจะเห็นวิธีที่ดีกว่าในการทำเช่นนั้น?
41 7  users 

1
ฉันต้องนำไซต์ไปควบคุมเวอร์ชันและตั้งค่าสภาพแวดล้อมการรวมอย่างต่อเนื่อง
ฉันเป็นผู้ประกอบการที่มีโครงการ Drupal 6x ที่เริ่มมีขนาดเล็กพอที่จะไม่ต้องการการควบคุมเวอร์ชัน (ต่อผู้พัฒนา) แต่ตอนนี้ฉันมั่นใจแล้วว่าไม่มีทางที่จะทำได้ มีเอกสารมากมายเกี่ยวกับ JIRA พร้อมเรื่องราวผู้ใช้ที่เขียนอย่างดีครอบคลุมทุกสิ่ง ฉันอ่านเกี่ยวกับวิธีการนี้สามารถทำได้และมาพร้อมกับแผนต่อไปนี้ - แยกรหัสไซต์ออกจากฐานข้อมูลโดยใช้โมดูล บริบท คุณสมบัติ แขนที่แข็งแรง Profiler วางรหัสในที่เก็บ SVN และสร้างไซต์การแสดงละคร สร้างมิรเรอร์ของเซิร์ฟเวอร์ staging บนเซิร์ฟเวอร์การผลิต EC2 สร้างการทดสอบซีลีเนียมและรันบนคลาวด์โดยใช้Saucelabs สร้างเวิร์กโฟลว์การสร้างใน JIRA Studio โดยใช้ Elastic Bamboo เพื่อเรียกใช้การอัปเดตอัตโนมัติ อัพเดตและติดตั้งโปรไฟล์โดยใช้Drush Make เรียกใช้การอัปเดตบนเซิร์ฟเวอร์ที่ใช้งานจริง (ฉันไม่แน่ใจ) ในการเริ่มต้นฉันได้ทำรายการ "คุณลักษณะ" ประมาณ 50 รายการโดยแต่ละรายการมีองค์ประกอบ (มุมมองประเภทเนื้อหาโมดูล ฯลฯ ) ไม่ต้องสงสัยเลยว่าสิ่งนี้จะท้าทายเนื่องจากไซต์ประกอบด้วยโมดูลและบริการเว็บที่กำหนดเองเกี่ยวกับโหลไม่ต้องพูดถึง "แอปพลิเคชัน" ประเภทเนื้อหาที่มีรหัสที่กำหนดเองอีกโหลที่มีรหัสที่กำหนดเอง (ซึ่งส่วนใหญ่ฉันต้องการ . สิ่งที่ดีคือเว็บไซต์ยังไม่ได้ทำการผลิตดังนั้นความเสี่ยงยังมี จำกัด …

11
วิธีแสดงเขตข้อมูลก่อนชื่อโหนด?
ฉันต้องการเรนเดอร์ฟิลด์หนึ่งหน้าชื่อของโหนดเมื่อแสดงทีเซอร์ใน D7 ได้อย่างมีประสิทธิภาพที่ฉันอยากจะไปจากที่นี่ไปนี้ ฉันตรวจสอบการอัพเดต node.tpl.php แล้ว แต่ฉันสังเกตว่ามันแยก$titleจาก กัน$contentดังนั้นฉันจึงไม่แน่ใจว่าจะใช้วิธีนี้ได้อย่างไร หลังจากการค้นหาบางอย่างฉันพบว่ามีคนแนะนำให้ใช้โมดูลCCKและConTemplateเพื่อแก้ไขปัญหานี้ใน Drupal-6 แต่ฉันสงสัยว่ามีวิธีแก้ไขปัญหา Drupal-7 มากขึ้นอีกหรือไม่ ข้อเสนอแนะใด ๆ
41 7  entities  nodes 

1
ทำไม hook_form_alter () ยุ่งจัง?
นี่คือตัวอย่างที่ฉันเพิ่งพบ ฉันกำลังพยายามใส่ HTML ลงในฉลากของฟิลด์ของฉัน $form['field_feedback']['und']['#title'] <- has the title $form['field_feedback']['und'][0]['#title'] <- has the title $form['field_feedback']['und'][0]['value']['#title'] <- has the title. (Works) เหตุใดจึงมีแอตทริบิวต์ #title สามรายการที่มีการใช้งานเพียงหนึ่งเดียว
40 7  forms 

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

11
ตารางใดปลอดภัยที่จะล้าง
ฉันได้รับมรดกเว็บไซต์ลูกค้าที่มีฐานข้อมูลขนาดใหญ่มากโดยไม่มีเหตุผล มีเนื้อหาในระดับปานกลางและโมดูลที่เปิดใช้งานน้อยมาก อย่างไรก็ตามฐานข้อมูลมีขนาดใหญ่เกินไปสำหรับเคลื่อนย้ายไปมาได้ง่ายและฉันต้องการทำความสะอาดออก ฉันได้ล้างตารางแคชมาตรฐาน syslog และ accesslog แล้ว มีตารางอื่น ๆ ที่ฉันสามารถตัดทอนในเว็บไซต์ Drupal มาตรฐานได้อย่างปลอดภัยหรือไม่?
40 database 

7
Drupal SA-CORE-2014-005 - จะทราบได้อย่างไรว่าเซิร์ฟเวอร์ / ไซต์ของฉันถูกบุกรุก
ฉันเพิ่งอัปเดตไซต์ทั้งหมดของฉันโดยใช้วิธีการแพทช์ในการหาประโยชน์จาก Drupal SA-CORE-2014-005 ฉันเพิ่งอ่านรายงานว่าเมื่อวานนี้มีคนจากเว็บไซต์ drupal ของ IP ของรัสเซีย https://www.drupal.org/SA-CORE-2014-005 ความกังวลหลักของฉันคือตอนนี้: ฉันจะรู้ได้อย่างไรว่าเว็บไซต์ของฉันประกอบด้วยหรือไม่ ฉันควรค้นหาสิ่งใดในบันทึกการเข้าถึง apache ของฉันเพื่อตรวจสอบว่าไซต์ของฉันเป็นเหยื่อหรือไม่ แฮ็กเกอร์เหล่านี้ทำอะไรกับเว็บไซต์ที่ประกอบไปด้วย
40 7  security 

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