Cách chính xác để ghi đè / thay thế bộ chứa tùy chọn tùy chỉnh là gì?


7

Lý lịch

Tôi đang phát triển một mô-đun tạo ra một vài thực thể tùy chỉnh có liên quan / tác động đến các tùy chọn có sẵn cho một sản phẩm cụ thể. Đây là cách nó hoạt động:

Khi tải sản phẩm, truy vấn được thực hiện trên các thực thể tùy chỉnh của tôi bằng hai thuộc tính của sản phẩm.

Tôi sử dụng kết quả của truy vấn và trình bày nó theo cách 2 bước, như thế này (lựa chọn đầu tiên của khách hàng tác động đến các tùy chọn có sẵn cho lần thứ hai của họ):

giao diện dự định

Các thách thức

Đây là những gì tôi biết tôi cần phải hoàn thành trên frontend:

1. Ghi đè hai phần logic trong Chế độ xem sản phẩm.

--- Đầu tiên:

<form action="<?php echo $this->getSubmitUrl($_product) ?>" method="post" id="product_addtocart_form"<?php if($_product->getOptions()): ?> enctype="multipart/form-data"<?php endif; ?>>

... bạn sẽ enctype="multipart/form-data"chỉ nhận được thêm nếu $_product->getOptions()true, và các sản phẩm của tôi sẽ không thực sự có chúng (vì vậy điều này sẽ trở lại false).

--- Thứ hai:

 <?php if ($_product->isSaleable() && $this->hasOptions()):?>
    <?php echo $this->getChildChildHtml('container1', '', true, true) ?>
 <?php endif;?>

... cũng bởi vì các sản phẩm của tôi thực sự sẽ không có tùy chọn tùy chỉnh, vì vậy $this->hasOptions()sẽ trả lại falsevà ngăn kết xuất container1.

2. Thay thế / ghi đè / ghi đè 'container1' - khối con (có phải là khối không?) "Chứa" html cho các tùy chọn tùy chỉnh, như được hiển thị ở đây: những gì cần phải được thay thế

Tôi đã đọc một vài bài đăng cho rằng sao chép view.phtmlvà chỉnh sửa trực tiếp nó không phải là cách chính xác để làm điều này, nhưng đâu là sự thay thế?

Thứ hai, tôi đã đọc Tôi có thể removehoặc unSetmột container1phần - tôi nên sử dụng phương pháp nào, và sau đó làm thế nào để tôi thay thế chính xác container1?

Cảm ơn rât nhiều!


Bạn đã tìm thấy một giải pháp tốt cho việc này? Bạn đã xem làm thế nào catalog.xmlvới nó với các PRODUCT_TYPE_xxxxxxtay cầm?
pspahn

Tôi không rõ điều này khác với Sản phẩm có thể định cấu hình tiêu chuẩn như thế nào. Bạn có thể giải thích điều đó không?
awesomerice

@fantasticrice Tôi không thể nói cho TriggerDan nhưng trong trường hợp của tôi, không có loại sản phẩm Magento mặc định nào đủ để mô hình danh mục của khách hàng của tôi.
pspahn

@pspahn - Ở khía cạnh nào họ không thể được mô hình hóa trong Magento?
awesomerice

Trong trường hợp của tôi, tôi cần (trong số nhiều thứ khác) bảng giá có hơn 4 vị trí chính xác (nghĩ giá bằng feet vuông).
pspahn

Câu trả lời:


2

Tôi đã làm việc trên một mô-đun tương tự một thời gian và gặp phải khá nhiều điều tương tự. Tôi đã thêm một loại sản phẩm tùy chỉnh để làm cho công việc này.

Chìa khóa là product_type_datakhối. Điều này bạn có thể ghi đè khối này mà không phải sửa đổi các tệp mẫu khác. Trong tệp XML bố trí mô-đun của tôi, tôi đã thêm:

<PRODUCT_TYPE_myproduct translate="label" module="my_module">
    <reference name="content">
        <reference name="product.info">
            <block type="my_module/product_type_myproduct" name="product.info.myproduct" as="product_type_data" template="my_module/product/type/myproduct.phtml">

            </block>
        </reference>
    </reference>
</PRODUCT_TYPE_myproduct>

Từ đó, tôi thêm các trường mẫu của tôi trong mẫu. Các giá trị sẽ được chuyển cho người quan sát về sales_quote_add_itemsự kiện mà tôi có thể thêm các lựa chọn của người dùng vào additional_options.

Ngoài ra, bằng cách sử dụng loại sản phẩm tùy chỉnh, bạn có thể sử dụng _prepareProduct()phương pháp của riêng mình , nơi bạn sẽ có thể đặt các giá trị khác nhau sẽ được chuyển quaparent::_prepareProduct($buyRequest, $product, $processMode)

(Tôi có thể sẽ quay lại và sửa đổi điều này sau với các chi tiết bổ sung)


2

Tôi hy vọng tôi không quá muộn để trả lời câu hỏi này. Bạn sẽ yêu cầu các tùy chọn tùy chỉnh liên quan đến sản phẩm. Sản phẩm sẽ chỉ mang các giá trị tùy chọn tùy chỉnh nếu có chúng, vì vậy hãy thêm các tùy chọn tùy chỉnh trong phụ trợ với trường tùy chỉnh bằng cách thêm vào đó trong catalog_product_optionbảng với các điều chỉnh nhỏ trong adminhtml.
Đây là cách dễ nhất có thể để đạt được đầu ra khác mà bạn phải chỉnh sửa kết xuất sản phẩm, giỏ hàng và dòng đặt hàng.
Bây giờ khi bạn sẽ có các tùy chọn tùy chỉnh cần thiết với một trường bổ sung sẽ giúp bạn trong việc lọc tùy chọn tùy chỉnh đó cần nhiều tùy chỉnh hơn hoặc không phải ở lối vào.
Theo giá trị trường đó, hãy viết mã của bạn vào local/mage/catalog/Block/Producthoặc trong layout/view
Xin vui lòng cho tôi biết nếu bạn thấy cách này phù hợp. Tôi sẽ tìm ra các tập tin chính xác và thay đổi nếu vẫn cần thiết.


Một câu trả lời (có thể muộn như thế nào) luôn được hoan nghênh.
Julien Lachal

1

Trước hết để ghi đè bất kỳ mẫu nào trong Magento, bạn có thể tạo tệp local.xml trên thư mục bố cục và ghi đè nút tương ứng với phần đó của mẫu hoặc xem bạn đang cố gắng ghi đè; hoặc tạo thư mục mẫu của riêng bạn và ghi đè lên bố cục và cấu trúc mẫu từ đó, có một ví dụ hay ở đây . Thứ hai đã thử sử dụng các sản phẩm có thể định cấu hình để thực hiện những gì bạn đang cố gắng thực hiện, vì như bạn đã mô tả, có vẻ như các sản phẩm có thể định cấu hình đã làm điều đó

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.