Wanneer je in Magento een nieuw attribuut wilt toevoegen aan alle bestaande attributensets kan dit in de backend alleen door handmatig bij elke attributenset het attribuut erin te slepen. Wanneer je webshop gebruikt maakt van een groot aantal attributensets en deze veel producten bevatten dan kan dit een tijdrovende bezigheid zijn. Dit kan eenvoudiger door eenmalig een script uit te voeren.

Stap 1

Maak een nieuw attribuut aan en onthoud de gekozen attribuutcode of zoek de attribuutcode van een bestaand attribuut op in de lijst met attributen.
attribuutcode_magento_backend

Stap 2

Bepaal onder welke attributensetgroep het attribuut moet worden toegevoegd. Bijvoorbeeld General of Prices. Het attribuut voegen we zometeen voor elke attributenset toe in de gekozen groep.
magento_backend_attribuutset_groepen

Stap 3

Maak een tijdelijke CMS-pagina aan. Vanaf deze pagina gaan we het script draaien dus zorg dat eventuele bezoekers niet per ongeluk op deze pagina terrecht komen. Kies dus geen eenvoudige URL-key voor je pagina. Bezoek deze pagina nog niet.

Stap 4

Voeg op de tijdelijke CMS-pagina onder Ontwerp > Pagina layout > Layout update XML de volgende code toe:




magento_backend_layout_update_xml

Stap 5

Maak een nieuw bestand met als bestandsnaam attribuuttoevoegen.phtml in een texteditor met daarin de volgende code:

getCollection()->addFieldToFilter('entity_type_code','catalog_product')->getFirstItem();
$attSetCollection = Mage::getModel('eav/entity_type')->load($attSet->getId())->getAttributeSetCollection();
$attributeInfo = Mage::getResourceModel('eav/entity_attribute_collection')->setCodeFilter('ATTRIBUUT_CODE')->getFirstItem();
$attCode = $attributeInfo->getAttributeCode();
$attId = $attributeInfo->getId();

foreach ($attSetCollection as $a)
{
	$set = Mage::getModel('eav/entity_attribute_set')->load($a->getId());
	$setId = $set->getId();
	$group = Mage::getModel('eav/entity_attribute_group')->getCollection()->addFieldToFilter('attribute_set_id',$setId)->addFieldToFilter('attribute_group_name','ATTRIBUTENSET_GROEP')->getFirstItem();
	$groupId = $group->getId();
	$newItem = Mage::getModel('eav/entity_attribute');
	$newItem->setEntityTypeId($attSet->getId())->setAttributeSetId($setId)->setAttributeGroupId($groupId)->setAttributeId($attId)->setSortOrder(999)->save();

	echo "Attribuut ".$attCode." toegevoegd aan attribuutset ".$set->getAttributeSetName()." in attribuutsetgroep ".$group->getAttributeGroupName()."
n"; } ?>

Stap 6

Vervang in het script ATTRIBUUT_CODE met de attribuutcode (uit stap 1) en ATTRIBUTENSET_GROEP met de attributenset groep naam (uit stap 2).

Stap 7

Upload het bestand attribuuttoevoegen.phtml met een ftp programma in de volgende map

app/design/frontend/default/THEME/template/custom/

Wanneer er geen custom map bestaat maak deze dan aan.

Stap 8

Open eenmalig de tijdelijke CMS-pagina in de browser en wacht tot het attribuut is toegevoegd aan alle attributensets.

Stap 9

Verwijder de tijdelijke CMS pagina.

Stap 10

Als alles goed is gegaan is het attribuut toegevoegd aan elke attributenset. Controleer dit even in de Magento Backend. Heb je nog vragen? Stel ze hieronder of neem contact op.

Done!