Magento - Attributen tonen


Attributen in Magento kunnen bijzonder handig zijn bij het ontwikkelen van een webshop en het tonen van producten. De attributen worden gebruikt om configureerbare producten te maken en kunnen daarnaast gebruikt worden om bepaalde informatie op de detailpagina van een product te tonen. Tevens worden de filteropties die naast het overzicht met producten worden getoond gebaseerd op attributen. Er zijn verschillende soorten attributen, zo is er een invoerveld, een tekstveld, een datumveld en een dropdown.

Hieronder een overzicht van de bijbehorende codes om de attributen en ook de bijbehorende labels die worden ingevoerd op een detailpagina van Magento te tonen.

Vrij invoerveld (input / textarea)

<?php
        echo $_product->getResource()->getAttribute('attribuut_code')->getStoreLabel() . ': ';
        echo $_product->getAttribuut_code();
?>


Dropdown

<?php
        echo $_product->getResource()->getAttribute('attribuut_code')->getStoreLabel() . ': ';
        echo $_product->getAttributeText('attribuut_code');
?>


Meervoudige selectie (Waardes)

<?php
        $multiple = $_product->getResource()->getAttribute('attribuut_code')->getFrontend()->getValue($_product);
        $multipleValues = explode(',', $multiple);
        foreach($multipleValues as $multipleValue):
                echo $multipleValue . '<br />';
        endforeach;
?>


Meervoudige selectie (ID's)

<?php
        $multiple = $_product->getData('attribuut_code');
        $multipleValues = explode(',', $multiple);
        foreach($multipleValues as $multipleValue):
                echo $multipleValue . '<br />';
        endforeach;
?>


Datum

<?php
        echo $_product->getResource()->getAttribute('attribuut_code')->getStoreLabel() . ': ';
        echo date("d-m-y", strtotime($_product->getAttribuut_code()));
?>


Ja/Nee (0 is Nee en 1 is Ja)

<?php
        echo $_product->getResource()->getAttribute('attribuut_code')->getStoreLabel() . ': ';
        echo $_product->getData('attribuut_code');
?>


Afbeelding

<?php
        $image = $_product->getAttribuut_code();
        if($image == '' || $image == 'no_selection'):
        else:
                $currentProduct = Mage::getModel('catalog/product')->load($_product->getId());
                $image = $this->helper('catalog/image')->init($currentProduct, 'attribuut_code')->resize(342, 228);
                echo '<img src="' . $image . '" />';
        endif;
?>


Prijsveld

<?php
        $tax = Mage::helper('tax')->getPrice($_product, $_product->getData('attribuut_code'));
        echo Mage::helper('core')->currency($tax,true,false);
?>


Prijs product

<?php
        $_finalPriceInclTax = $this->helper('tax')->getPrice($_product, $_product->getFinalPrice(), true);
        $_finalPriceExclTax = $this->helper('tax')->getPrice($_product, $_product->getFinalPrice(), false);
        echo number_format($_finalPriceInclTax, 2, ',', '') . 'Incl. BTW<br />';
        echo number_format($_finalPriceExclTax, 2, ',', '') . 'Excl. BTW';
?>


Prijs product (zonder kortingen)

<?php
        $_originalPriceInclTax = $this->helper('tax')->getPrice($_product, $_product->getPrice(), true);
        $_originalPriceExclTax = $this->helper('tax')->getPrice($_product, $_product->getPrice(), false);
        echo number_format($_originalPriceInclTax, 2, ',', '') . 'Incl. BTW<br />';
        echo number_format($_originalPriceExclTax, 2, ',', '') . 'Excl. BTW';
?>

Attribuut niet tonen indien niet ingevuld

Door de onderstaande voorwaarde te gebruiken kan een attribuut verborgen worden indien deze niet is gevuld. Zorg wel dat de juiste code van het attribuut is ingevuld.

<?php
        if($_product->getAttribuut_code()):
        endif;
?>

Attributen in winkelwagen

Voor in: app/design/frontend/[naam]/template/checkout/cart/item/default.phtml.

<?php
        echo Mage::getModel('catalog/product')->load($this->getProduct()->getId())->getSku(); // Vrij invoerveld
        echo Mage::getModel('catalog/product')->load($this->getProduct()->getId())->getAttributeText('color'); // Dropdown
?>

Attributen in e-mails

De mail die naar de klant gaat nadat hij een bestelling heeft geplaatst toont alle bestelde producten, per product gaat het dan om de naam van het product, de omschrijving, het artikelnummer en het aantal. Bij een product in worden standaard verder geen attributen getoond maar deze kunnen wel worden toegevoegd. Hieronder in de code zie je een voorbeeld van een vrij invoerveld, een dropdown en een afbeelding. Plaats deze codes in de diverse e-mails (bestelling, factuur, verzending) op de gewenste plekken, de diverse e-mails waar de code aan toegevoegd kan worden zijn te vinden op de onderstaande locatie.

/app/design/frontend/default/[templatenaam]/template/email/order/items


<?php
        $_product = Mage::getModel('catalog/product')->load($_item->getProduct()->getId());
        echo $_product->getAttribuut_code(); // Vrij invoerveld
        echo $_product->getAttributeText('Attribuut_code'); // Dropdown
?>
<img src="<?php echo Mage::helper('catalog/image')->init($_product, 'image')->resize(75); ?>" />

Attributenset tonen

Met de onderstaande code kan de naam op worden gehaald van de attributenset waar een product op is gebaseerd. Aan de hand hiervan kunnen codes worden uitgevoerd.

<?php
        $attributeSetModel = Mage::getModel("eav/entity_attribute_set");
        $attributeSetModel->load($_product->getAttributeSetId());
        $attributeset = strtolower($attributeSetName = $attributeSetModel->getAttributeSetName());
        if($attributeset == 'default'):
        endif;
?>