Bulk update Magento attributen

Magento CMS website logoAls je attributen gebruikt kan je die instellen voor het hele systeem (Global), per website of per winkelzicht (store). Er is geen functie om een groot aantal artikelen het vinkje “winkelzicht” aan of uit te zetten.

In mijn geval moest op alle artikelen het vinkje (weer) aan en de bulk update kan je zo doen:

  1. Ga naar attributen en kies gewenste attribuut
  2. Wijzig de instelling Scope van Winkelzicht naar Systeem en sla het op
  3. Wijzig aansluitend de instelling Scope van Systeem naar Winkelzicht en sla op.

Nu staan alle vinkjes weer aan bij de artikelen om gebruik te maken van de systeem waarde.

Magento group attributes on product page

Magento CMS website logoFor a Magento project I was looking for a way to group the attributes so the visitor can view the ‘Product features’ and ‘Technical features’ grouped together. The project involves the Magento Connector by Tinx-IT which synchronizes the data from Microsoft Dynamics to a Magento database.

Magento has default functionality to create attributes groups.

  1. Goto CMS-> Catalog->Attibutes->Manage attributes sets
  2. Choose an Attribute set
  3. The center window will show Attribute Groups. You can add Groups at you wish and drag and drop attributes in a specific group. In my case I made a group called ‘Technical’ and added the technical product attributes to that group.

I found this page which has code to group the attributes: http://www.magentocommerce.com/boards/viewthread/26167/.

The code is not fully functional in my case so this is my edited version. Features of my version:

  • Only show attributes from attribute groups defined in $listable_groups = array (‘group1′,’group2’).
  • Add the names of your attribute groups in the array.
  • Neglect all other attributes groups.
  • Add this code to in the page: app/design/frontend/default/theme/template/catalog/product/view/attributes.phtml. This will edit the standard attributes overview.
  • You can also add a new tab to the product page if you want to separate the attributes in two tabs.
<?php
 $_helper = $this->helper('catalog/output');
 $_product = $this->getProduct()
 ?>
 <?php
 $listable_groups = array('General','Technical'); //The attribute groups listed here will display as a single list beneath the group name
 $group_names = array();
 $active_group_name = null;
 $attributes = $_product->getAttributes();
 $new_group = true;

foreach ($attributes as $attribute) {
   $new_group = false;
   if ($attribute->getIsVisibleOnFront() ) {
      $group_id = $attribute->getData('attribute_set_info/' . $_product->getAttributeSetId() . '/group_id');
      if ( !isset($group_names[$group_id]) ) {
         $group_model = Mage::getModel('eav/entity_attribute_group');
         $group_model->load($group_id);
         // group names are cached to prevent having to check the DB on each iteration
         $group_names[$group_id] = $group_model->getAttributeGroupName();
      }
      if ( $group_names[$group_id] != $active_group_name ) {
         $active_group_name = $group_names[$group_id];
         $new_group = true;
      }
      $value = $attribute->getFrontend()->getValue($_product);
      if ( in_array($active_group_name, $listable_groups) ) { 
         // If a "listable" attribute
         if ($new_group) { //display the heading of a new group
         ?>
         <div class="product-attribute-title">
            <?php echo $active_group_name ?>
         </div>
         <?php
      }
      if (strlen($value) && $_product->hasData($attribute->getAttributeCode())) {
      ?>
      <div class="product-attribute-label">
         <?php echo $this->__($attribute->getFrontend()->getLabel()) ?>
      </div>
      <div class="product-attribute-data">
         <?php echo $_helper->productAttribute($_product, $value, $attribute->getAttributeCode()) ?>
       </div>
       <div style="clear:both;"></div>
       <?php
       }
    }
 }
?>

 

Styles used:

/* attributes tab */
 .product-attribute-title {
    width:400px;
    font-weight: bold;
    margin:12px 0 8px 0;
 }
 .product-attribute-label {
    display:inline-block;
    width:200px;
    font-weight: bold;
 }
    .product-attribute-data {
    display:inline;
 }