การสร้างตารางของผลิตภัณฑ์ Commerce ที่อ้างอิง

Aug 18 2020

ฉันใช้ 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);


  }

}?>

คำตอบ

1 RyanSzrama Aug 21 2020 at 01:38

สิ่งนี้เป็นไปได้นอกกรอบโดยไม่ต้องใช้โค้ดที่กำหนดเองใด ๆ เพียงแค่ Views ธรรมดา เคล็ดลับคือการสร้างมุมมองตามเนื้อหาของประเภทโหนดของคุณและตั้งค่าความสัมพันธ์จากโหนดไปยังผลิตภัณฑ์ที่อ้างอิงโดยฟิลด์การอ้างอิงผลิตภัณฑ์ เมื่อคุณมีฟิลด์ผลิตภัณฑ์พร้อมใช้งานสำหรับ View แล้ว Commerce 1.x จะมีฟิลด์ Add to Cart สำหรับแต่ละรูปแบบเพื่อดร็อปลงใน View

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

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

ในกรณีที่คุณเป็นผู้เรียนรู้ด้านภาพนี่คือ View I ที่สร้างขึ้นเพื่อให้ทำงานนี้: