Gruplandırılmış ürün özelliklerini işleme


9

Yeni bir Magento dükkanı inşa etmeye çalışıyorum (bu Magento ile ilk benim).

En azından mizanpaj açısından, ürün sayfalarım için mevcut bir mağazanın görünümünü çoğaltmak istiyorum:

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

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

Sonradan bir şey yaratmak için basit ürünlerle birlikte gruplandırılmış ürünler kullanmam gerektiğini anladım .

Yukarıdaki örneklerde, her ürünün ayrı nitelikleri vardır, bunların Magento'daki farklı özellik setleri ile yapıldığını varsayıyorum.

Ancak temada bu farklı tablo başlıklarını / değerlerini nasıl görüntüleyebilirler?

Ben yapabileceğimi biliyorum ->getAttributeName()ya ->getAttribute('attribute_code')içinde grouped.phtmldosyanın, ancak bu geniş miktardaki neden olacaktır if (->getAttributeName() != '')...ve ben daha eklerken şablonu değiştirmek gerekiyordu.

Eminim tüm öznitelikleri almak ve bunların üzerinde döngü bir yol var, ama sonra nasıl meta_description( $_product->getData()yöntem tarafından döndürülen ) öznitelik ve tabloda listelenmesini istediğiniz bir özniteliği arasında nasıl ayırt ederdiniz ?

Sahip olduklarına benzer bir şeyi nasıl başarabilirim?

Ayrıca, mağazanın açılışta 5k ürüne sahip olacağı performansından da endişeliyim, kalan stokumuzu ekledikçe belki de 25k-30k'a çıktık. Bunların birçoğunun farklı özniteliklere ihtiyacı olacak, ancak çok fazla performans sorunu olmadan öznitelik kümeleri arasında öznitelikleri paylaşabileceğimi tahmin ediyorum?


Güncelleme:

Bununla oynamaya devam ettim, tüm ürün özelliklerini almak için bunu buldum, ancak yine de gruplanmış bir ürün tablosundaki belirli değerleri göstermenin basit bir yolunu bilmiyorum?

$attributes = Mage::getModel('catalog/product_attribute_api')->items($_product->getAttributeSetId());
foreach($attributes as $_attribute){
    print_r($_attribute);
}

Ürünün ürün sayfasında gösterilip gösterilmeyeceğini belirlemek için neden özelliğin "Ön Görünümdeki Ürün Görünümü Sayfasında Görünür" özelliğini kullanmıyorsunuz?
BlueC

Yanıtlar:


2

İhtiyacınız olan şey bu olmalı:

$product->getResource()->getAttribute('attribute_code')->getStoreLabel();

Ama bu sadece tek bir özellik alacaktı, farklı ürünler için farklı özellikler göstermenin bir yoluna ihtiyacım var - OP'ye dahil ettiğim bağlantılara göre?
Tom Green

2

Neden hangi özellikleri göstereceğini söyleyen bir özellik oluşturmuyorsunuz?

Nitelik kod dizeleri olan gruplandırılmış ürünler için iki metin özniteliğinin değerini yükleyen bir modül oluşturma sona erdi. Esasen, ilgili ürün özellik verilerini yüklemek için bu liste dizesini ve bu döngülerin özniteliklerini patlatan bir yardımcıdır.

Benim dediğim bir özellik oluştur:

grouped_attr_array

Özniteliği, gruplanmış ürünün admin'de ayarlanan tasarım özniteliğine ekleyin ve ardından bunları ürün verilerinde noktalı virgülle ayrılmış alan olarak ekleyin

torque_range;torque_increments;torque_accuracy

Bu kodu modülümden aldım. Bir öznitelik değerine dayalı olarak varsayılan öznitelikleri biraz daha yükleme veya gizleme yapıyor ve modül biraz daha karmaşık. Ancak tabloda gösterilen verileri elde etmek için bunlar temel işlevlerden bazılarıdır. İnşallah size bir fikir verir. Bu magento 1.9.2 kullanıyor

Modülün Yardımcısı:

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;
}

Groupedproduct.phtml dosyasındaki yardımcıdan Veri Alma

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

TH adlı

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

TD masa

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

Mağazanın mevcut özelliklerine göre bu özelliği seçmenin yolunu oluşturmak istiyorum. Belki de bunu yapmanın çok daha iyi bir yolu var. Henüz buna ulaşmadım.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.