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>
