This code snippet shows how to change attribute scope in a setup script:
<?php /* @var $oInstaller Mage_Catalog_Model_Resource_Setup */ $oInstaller = $this; $oInstaller->startSetup(); $oInstaller->updateAttribute( 'catalog_product', 'abc_attribute', 'is_global', Mage_Catalog_Model_Resource_Eav_Attribute::SCOPE_STORE ); $oInstaller->updateAttribute( 'catalog_product', 'xyz_attribute', 'is_global', Mage_Catalog_Model_Resource_Eav_Attribute::SCOPE_STORE ); $oInstaller->endSetup(); // mark index as "reindex required" $aIndexerCodes = [ 'catalog_product_attribute', 'catalog_product_flat', 'catalogsearch_fulltext' ]; $oIndexer = Mage::getModel('index/process'); foreach ($aIndexerCodes as $sCode) { $oIndexer->load($sCode, 'indexer_code') ->changeStatus(Mage_Index_Model_Process::STATUS_REQUIRE_REINDEX); } //clear EAV Cache: $oInstaller->cleanCache();
And the config.xml:
<?xml version="1.0"?> <config> <modules> <Sheldon_Catalog> <version>0.1.0</version> </Sheldon_Catalog> </modules> <global> <resources> <sheldon_catalog_setup> <setup> <module>Sheldon_Catalog</module> <class>Mage_Catalog_Model_Resource_Setup</class> </setup> </sheldon_catalog_setup> </resources> </global> </config>