Menangani atribut produk yang dikelompokkan

9

Saya sedang bekerja membangun toko Magento baru (ini adalah yang pertama dengan Magento).

Saya ingin meniru tampilan toko yang ada untuk halaman produk saya, setidaknya dalam hal tata letak:

http://www.panamericantool.com/cobalt-drills/drill-stops.html

http://www.panamericantool.com/screw-driver-bits/paint-cutters.html

Saya telah menemukan bahwa saya perlu menggunakan produk yang dikelompokkan, dengan produk sederhana untuk membuat hal yang saya cari.

Dalam contoh di atas, setiap produk memiliki atribut terpisah, saya menganggap ini dilakukan melalui set atribut yang berbeda di Magento.

Namun bagaimana mereka menampilkan judul tabel / nilai yang berbeda dalam tema?

Saya tahu saya bisa melakukan ->getAttributeName()atau ->getAttribute('attribute_code')di grouped.phtmlfile, tetapi ini akan menghasilkan sejumlah besar if (->getAttributeName() != '')...dan saya harus mengubah template ketika menambahkan lebih banyak.

Saya yakin ada cara untuk mendapatkan semua atribut dan mengulanginya, tetapi kemudian bagaimana Anda membedakan antara mengatakan meta_descriptionatribut (juga dikembalikan oleh $_product->getData()metode) dan atribut yang ingin saya daftarkan di tabel?

Bagaimana saya bisa mencapai sesuatu yang mirip dengan yang mereka miliki?

Saya juga khawatir tentang kinerja toko akan memiliki produk 5k pada saat peluncuran, tumbuh mungkin 25k-30k saat kami menambahkan stok kami yang tersisa. Banyak dari ini akan memerlukan atribut yang berbeda, tapi saya kira saya bisa berbagi atribut antara set atribut tanpa terlalu banyak masalah kinerja?


Memperbarui:

Saya terus bermain-main dengan ini, saya menemukan ini untuk mendapatkan semua atribut produk, namun saya masih tidak tahu cara sederhana untuk menunjukkan nilai-nilai tertentu pada tabel produk yang dikelompokkan?

$attributes = Mage::getModel('catalog/product_attribute_api')->items($_product->getAttributeSetId());
foreach($attributes as $_attribute){
    print_r($_attribute);
}
Tom Green
sumber
Mengapa tidak menggunakan properti "Terlihat pada Halaman Tampilan Produk pada Front-end" atribut untuk menentukan apakah akan menampilkannya pada halaman produk?
BlueC

Jawaban:

2

Ini yang Anda butuhkan:

$product->getResource()->getAttribute('attribute_code')->getStoreLabel();
tanda batas
sumber
Tapi ini hanya akan mendapatkan satu atribut, saya perlu cara menampilkan atribut yang berbeda untuk produk yang berbeda - sesuai tautan yang saya sertakan dalam OP?
Tom Green
2

Mengapa tidak membuat atribut yang menunjukkan atribut apa yang ditampilkan?

Saya akhirnya membuat modul yang memuat nilai dua atribut teks untuk produk yang dikelompokkan yang merupakan string kode atribut. Pada dasarnya penolong yang meledak string daftar atribut itu dan loop di atasnya untuk memuat data atribut produk terkait.

Buat atribut yang saya sebut milik saya:

grouped_attr_array

Tambahkan atribut ke atribut desain produk kelompok yang diatur di admin dan kemudian mereka sebagai bidang yang dipisahkan titik koma di data produk

torque_range;torque_increments;torque_accuracy

Saya menarik kode ini dari modul saya. Itu melakukan beberapa pemuatan atau menyembunyikan atribut default berdasarkan nilai atribut dan modul sedikit lebih kompleks. Tetapi untuk mendapatkan data yang ditampilkan dalam tabel ini adalah beberapa fungsi inti. Semoga ini memberi Anda ide untuk membangun. Ini menggunakan magento 1.9.2

Modul Pembantu:

public function findAttributes($product, $attributes)
{
    //determined by attribute with id to add additional attributes to the table
    //string needs to be ; separated in ADMIN
    $strattributes = $product->getResource()->getAttribute('grouped_attr_array')->getFrontend()->getValue($product);
    if ($strattributes) {
        $strattributes = explode(';', $strattributes, 5);
        foreach ($strattributes as $additionAttribute) {
            //make sure these are valid attributes
            if ($product->getResource()->getAttribute($additionAttribute)) {
                array_push($attributes, $additionAttribute);
            }
        }
    }
}

public function groupedAttrDump($groupedProduct, $attributes)
{
    $cells = [];
    foreach ($attributes as $attrCode) {
        $attrText = $groupedProduct->getResource()->getAttribute($attrCode);
        if($attrText){
            array_push($cells, $attrText->getFrontend()->getValue($groupedProduct));
        }
    }
    return $cells;
}

public function groupedAttrHeaders($currentProduct, $attributes)
{
    $theads = [];
    foreach ($attributes as $attrCode) {
        $headerText = $currentProduct->getResource()->getAttribute($attrCode);
        if($headerText){
            $headerText = $headerText->getStoreLabel();
            array_push($theads,$headerText);
        }

    }
    return $theads;
}

Mendapatkan data dari helper di groupedproduct.phtml

$attrrSetName = Mage::getModel("eav/entity_attribute_set")->load($_product->getAttributeSetId())->getAttributeSetName();
$tableAttributes = Mage::helper('groupedtable')->findAttributes($_product, $attrrSetName);

TH's

     <?php foreach (Mage::helper('groupedtable')->groupedAttrHeaders($_product, $tableAttributes) as $attrLabel ): ?>
        <th><?php echo $attrLabel ?> </th>
     <?php endforeach; ?>

TD adalah meja

<?php foreach (Mage::helper('groupedtable')->groupedAttrDump($_associatedProduct, $tableAttributes) as $attr ):?>
        <td><?php if($attr != 'No'){ echo $attr; } ?></td>
   <?php endforeach; ?>

Saya ingin membangun cara memilih atribut itu berdasarkan atribut toko yang tersedia. Mungkin ada cara yang jauh lebih baik untuk melakukan ini juga. Belum sampai di situ.

asherrard
sumber