การสร้างตารางของผลิตภัณฑ์ Commerce ที่อ้างอิง
ฉันใช้ Drupal 7 ร่วมกับ Commerce 1.x และฉันได้สร้างประเภทเนื้อหาที่มีฟิลด์อ้างอิงสำหรับเอนทิตีผลิตภัณฑ์เพื่อการพาณิชย์
และตอนนี้ฉันต้องการสร้างตารางของผลิตภัณฑ์ที่อ้างอิงเช่นแบบฟอร์มเพิ่มลงในรถเข็นสำหรับผลิตภัณฑ์แต่ละรายการในหน้าโหนด
อย่างน้อยจนถึงตอนนี้ดูเหมือนเป็นงานที่เป็นไปไม่ได้ที่จะทำ ฉันได้ลองใช้มุมมองตัวแปรเทมเพลตฟอร์มที่กำหนดเองเป็นต้น แต่มักให้ข้อผิดพลาดเช่น
หมายเหตุ: ดัชนีที่ไม่ได้กำหนด: #options ในฟังก์ชัน form_process_radios () (แถว 3188
พารามิเตอร์ต้องเป็นอาร์เรย์หรืออ็อบเจ็กต์ที่ใช้ Countable ในฟังก์ชัน form_process_radios () (rivi 3188
อย่างไรก็ตามมันมักจะคาดหวังองค์ประกอบวิทยุที่มีตัวเลือก (ซึ่งเป็นการจัดรูปแบบเริ่มต้น) สำหรับผลิตภัณฑ์หลายรายการ อย่างไรก็ตามนั่นไม่ใช่สิ่งที่ฉันต้องการและฉันพยายามตั้งค่าเป็นองค์ประกอบที่ซ่อนอยู่ ฉันยังสามารถดูแบบฟอร์มได้ แต่ต้องการกำจัดข้อผิดพลาดและสร้าง "โดยหนังสือ" นี้
<?php
function mymodule_preprocess_entity(&$variables) { $variables['add_to_cart_form'] = '';
if ($variables['elements']['#entity_type'] == 'commerce_product'){ $item = $variables['elements']['#entity']; if (empty($item->product_id)) {
return;
}
$form_id = commerce_cart_add_to_cart_form_id([$item->product_id]);
$line_item = commerce_product_line_item_new($item, 1, 0, [], 'custom_owner');
$line_item->commerce_product = $item->product_id;
$line_item->data['context']['product_ids'] = array($item->product_id);
$line_item->data['context']['show_single_product_attributes'] = 1; $product_form = drupal_get_form($form_id, $line_item);
// Trying to change from radio element to hidden
$product_form['product_id']['#type'] = 'hidden'; unset($product_form['product_id']['#theme_wrappers']);
unset($product_form['product_id']['#process']); $form_markup = drupal_render($formp); $variables['add_to_cart_form'] = array('#markup' => $form_markup);
}
}?>
คำตอบ
สิ่งนี้เป็นไปได้นอกกรอบโดยไม่ต้องใช้โค้ดที่กำหนดเองใด ๆ เพียงแค่ Views ธรรมดา เคล็ดลับคือการสร้างมุมมองตามเนื้อหาของประเภทโหนดของคุณและตั้งค่าความสัมพันธ์จากโหนดไปยังผลิตภัณฑ์ที่อ้างอิงโดยฟิลด์การอ้างอิงผลิตภัณฑ์ เมื่อคุณมีฟิลด์ผลิตภัณฑ์พร้อมใช้งานสำหรับ View แล้ว Commerce 1.x จะมีฟิลด์ Add to Cart สำหรับแต่ละรูปแบบเพื่อดร็อปลงใน View
ฉันสร้าง View ตัวอย่างที่ทำสิ่งนี้โดยวางไว้ในบล็อกบนหน้าโหนดของประเภทโหนดแสดงผลิตภัณฑ์ของฉัน ใช้ตัวกรองตามบริบทเพื่อกำหนด ID โหนดจาก URL เข้าร่วมกับผลิตภัณฑ์ผ่านความสัมพันธ์ที่ฉันอธิบายไว้ข้างต้นจากนั้นแสดงชื่อผลิตภัณฑ์ราคาและแบบฟอร์มเพิ่มลงในรถเข็นในตาราง:

โปรดทราบว่ารายการโฆษณาที่เพิ่มผ่านแบบฟอร์มเพิ่มลงในรถเข็นผลิตภัณฑ์จะไม่รักษาบริบทของโหนด นั่นเป็นสาเหตุที่ "ผลิตภัณฑ์สาม" แสดงเป็นลิงก์ในรถเข็นของฉัน แต่สองและหนึ่งไม่ใช่ มันจะใช้รหัสที่กำหนดเองเพื่อให้แน่ใจว่ารูปแบบเหล่านั้นมีบริบทที่เหมาะสมที่จุดนี้ แต่ที่คำถามอื่น
ในกรณีที่คุณเป็นผู้เรียนรู้ด้านภาพนี่คือ View I ที่สร้างขึ้นเพื่อให้ทำงานนี้:
