Obtenga datos de configuración del sistema en el sitio web, tienda y al alcance predeterminado

magento.stackexchange https://magento.stackexchange.com//questions/51954

Pregunta

He creado los grupos y los campos personalizados en Sistema-> Configuración-> Diseño Usé el siguiente evento.

<admin_system_config_changed_section_design>
    <observers>
        <custom>
            <type>singleton</type>
            <class>Custon_Custom_Observer</class>
            <method>save</method>
            </custom>
    </observers>
</admin_system_config_changed_section_design>

Hay tres tipos de alcance en Magento.

1) Predeterminado

2) sitios web

3) tiendas

Quiero todos los valores de mis campos personalizados en el panel de administración para almacenar los valores en la tabla personalizada. ingrese la descripción de la imagen aquí

Por ejemplo, Usted obtiene un valor de campo de descripción en el nivel de la tienda.

Mage::getStoreConfig('design/custom/description');

Quiero el valor anterior en el nivel del sitio web y el nivel actual de la tienda. Lo he intentado este enlace

¿Fue útil?

Solución

en config.xml,

 <global>
    <events>
        <admin_system_config_changed_section_design>
            <observers>
                <custom>
                    <type>singleton</type>
                    <class>Custon_Custom_Observer</class>
                    <method>saveSystemConfig</method>
                    </custom>
            </observers>
        </admin_system_config_changed_section_design>
    </events>
 </global>

en Observer.php,

public function saveSystemConfig(Varien_Event_Observer $observer)
{
    $postData = $observer->getEvent()->getData();

    if (is_null($postData['store']) && $postData['website']) //check for website scope
    {
        $scopeId = Mage::getModel('core/website')->load($postData['website'])->getId();
        $description  = Mage::app()->getWebsite($scopeId)->getConfig('design/custom/description');
        $currentScope = 'websites';
    }
    elseif($postData['store']) //check for store scope
    {
        $scopeId =   Mage::getModel('core/store')->load($postData['store'])->getId();
        $description  = Mage::app()->getStore($scopeId)->getConfig('design/custom/description');
        $currentScope = 'stores';
    }
    else //for default scope
    {
        $scopeId = 0;
        $description  = Mage::getStoreConfig('design/social-meta-tags/design/custom/description')
        $currentScope = 'default';
    }
}

De lo anterior puede obtener valores de campo individuales en todos los ámbitos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a magento.stackexchange
scroll top