2009-06-17 4 views
5

Tôi cần tìm cách hiển thị giá trị của thuộc tính tùy chỉnh thay cho "Tên sản phẩm" được hiển thị trong hình bên dưới.Magento - Hiển thị thuộc tính tùy chỉnh trong bảng Sản phẩm được nhóm

Grouped products table http://www.magentocommerce.com/images/uploads/grouped_prod_front.gif

Tôi đang làm việc với /app/design/frontend/default/defaultx/template/catalog/product/view/type/grouped.php

Đoạn code dưới đây không làm việc (thuộc tính tùy chỉnh là nămmade):

<?php if (count($_associatedProducts)): ?> 
<?php foreach ($_associatedProducts as $_item): ?> 
    <tr> 
     <td><?php echo $this->htmlEscape($_item->getYearmade()) ?></td> 

Mọi trợ giúp sẽ được đánh giá cao.

EDIT: Vì vậy, câu trả lời hóa ra khá đơn giản. Bạn thấy những gì tôi không đề cập ở trên là có thực sự là đầu ra ... nhưng đó chỉ là một số (ví dụ: 52). Hóa ra đây là ID cho giá trị thuộc tính tùy chỉnh đó (Đó là một loại Dropdown thuộc tính tùy chỉnh).

Vì vậy, trong bản tóm tắt
này hoạt động cho các thuộc tính tùy chỉnh của kiểu văn bản:

echo $this->htmlEscape($_item->getYearmade()) 

Nhưng đối với tất cả các loại thuộc tính tùy chỉnh (tôi nghĩ), sau đây nên được sử dụng:

echo $this->htmlEscape($_item->getAttributeText('yearmade')) 

Tôi sẽ không phát hiện ra điều này nếu không có câu trả lời xuất sắc nhất do Alan Storm cung cấp, bên dưới. Cảm ơn ngài.

+0

Đối với những người vẫn cung cấp câu trả lời, lưu ý rằng câu hỏi này đã được đăng cách đây 3 năm. Các codebase Magento đã phát triển kể từ đó, vì vậy rõ ràng kết quả của bạn sẽ khác nhau. –

Trả lời

3

Tất cả các mô hình Magento đều có sẵn phương thức "getData", sẽ trả về một chuỗi các cặp khóa/giá trị php. Hãy thử điều này ở đầu tệp grouped.phtml của bạn (sau khi $ _product được xác định)

print('<pre>');print_r($_product->getData());print('</pre>'); 

Bạn sẽ thấy kết quả trông giống như sau.

Array 
(
    [store_id] => 1 
    [entity_id] => 3437 
    [entity_type_id] => 4 
    [attribute_set_id] => 27 
    [type_id] => grouped 
    [sku] => 
    [category_ids] => 
    [created_at] => 2009-04-16 03:37:51 
...  

Vì vậy, bạn có thể lấy một mảng thuộc tính và chỉ cần kéo khóa ra. Bạn cũng có thể sử dụng các phương thức getX/getX và setX của Magento. Trên tất cả các mô hình Magento, bạn có thể truy cập vào bất cứ tài sản trong mảng dữ liệu bằng cách gọi một phương pháp dựa trên các phiên bản chữ lạc đà của tên,

$created_at = $_product->getCreatedAt(); 
$_product->setCreatedAt($date); 

Vì vậy, bất cứ điều gì tùy chỉnh của bạn tên thuộc tính là, bạn sẽ có thể để có được tại nó bằng cách sử dụng ở trên, và nếu bạn không chắc chắn chỉ print_r hoặc var_dump nội dung của mảng trả về bởi getData().

Cuối cùng, nếu các thuộc tính tùy chỉnh là một trong những sản phẩm liên quan sản phẩm đơn giản, bạn sẽ muốn một cái gì đó giống như

$_associatedProducts[0]->getCreatedAt(); 
+0

Tôi dường như không nhận được thuộc tính tùy chỉnh với mã ở trên. Tôi đang làm gì sai? Tôi có một danh mục tùy chỉnh được gọi là "product_type" và tôi muốn hiển thị giá trị của nó trên trang grouped.phtml. – Landitus

+0

Bạn tạo đối tượng sản phẩm như thế nào? –

0

Từ ver. 1.3. và trong 1.4 bạn cũng phải sử dụng $ _item không phải $ _product, đối với tôi điều này cũng hoạt động tốt trong bảng có thể nhóm.

Ví dụ:

<?php echo $_item->getAttributeText('your attribute'); ?> 
1

Tôi cũng gặp vấn đề tương tự.

  1. Bạn phải xác định vị trí grouped.phtml app/design/frontend/base/default/template/catalog/product/view/type/grouped.phtml

  2. Lấy mục, ví dụ $_item[units]

  3. Thêm một tế bào vào bảng và dán vang $_item['units'];

  4. Thats tất cả:)