Pregunta

Estoy creando un módulo personalizado con una tabla de base de datos personalizada mediante el siguiente tutorial .

Este módulo es un formulario de contacto personalizado, y me gustaría que los ajustes para ese formulario de contacto personalizado a ser sobre una base por tienda, es decir, quiero que el envío de correo electrónico para ser diferente para cada tienda que creo.

¿Es necesario añadir campos específicos de la base de datos para Magento para recoger en esto? ¿O Magento hacer esto automágicamente?

¿Fue útil?

Solución

Se podría utilizar el comportamiento actual de Magento que permite definir y obtener una dirección de correo electrónico de contacto para cada vista de tienda y en función del departamento (ventas, atención al cliente, en general). A continuación, puede utilizar las tesis de contacto específica por visión tienda en su módulo personalizado.

Aquí está el back-end de configuración de direcciones de correo electrónico: direcciones de correo electrónico de back-end

Y para utilizar este correo electrónico específico en su módulo personalizado, la parte importante en su caso es el $sendervariable. Aquí está un ejemplo de código (ver el comentario en él, tenga en cuenta que se toma de un código de mí, así adaptarse a sus necesidades):

$recipient = $item->getRecipient();
$template = $item->getTemplate();

if (!Mage::getConfig()->getNode(Mage_Core_Model_Email_Template::XML_PATH_TEMPLATE_EMAIL .'/' . $template)){
    Mage::throwException(Mage::helper('customer')->__('Wrong transactional notification email template.'));
}

$customer = Mage::getModel('customer/customer')->load($customer->getId());
$recipient = array('name' => $customer->getName(), 'email' => $customer->getEmail());
    /**
     * $senderType can be support, general, sales, custom1, custom2
     *  You can also replace the array by a string and provide only the string 'general', 'support', etc
     */
    $sender = array(
        'name' => Mage::getStoreConfig('trans_email/ident_' . $senderType . '/name', $storeId),
        'email' => Mage::getStoreConfig('trans_email/ident_' . $senderType . '/email', $storeId)
    );
}

$translate = Mage::getSingleton('core/translate');
$translate->setTranslateInline(false);

/* @var $emailTemplate Mage_Core_Model_Email_Template */
$emailTemplate = Mage::getModel('core/email_template');

if (Mage::app()->getStore()->isAdmin()) Mage::app()->getLocale()->emulate($storeId);

$variables += array(
    'name' => $customer->getName()
);

if (Mage::app()->getStore()->isAdmin()) Mage::app()->getLocale()->revert();

$emailTemplate->setDesignConfig(array('area' => 'frontend', 'store' => $storeId))
    ->sendTransactional($template, // xml path email template
        $sender,
        $recipient['email'],
        $recipient['name'],
        $variables
    );

$translate->setTranslateInline(true);

Otros consejos

Magento añadirá éstos automágicamente cuando se les define en el archivo de módulos system.xml.

<some_setting>
    <label>Some Setting Label</label>
    <frontend_type>text</frontend_type>
    <sort_order>1</sort_order>
    <show_in_default>1</show_in_default>
    <show_in_website>1</show_in_website>
    <show_in_store>1</show_in_store>
</some_setting>

A continuación, recuperar el valor de configuración de la tienda en cuestión a través de ...

Mage::getStoreConfig( '/path/to/setting', $store_id );

app/Mage.php

public static function getStoreConfig($path, $store = null)
{
    return self::app()->getStore($store)->getConfig($path);
}

Lo cual, a su vez, llama ...

app/code/core/Mage/Core/Model/Store.php

public function getConfig($path)
{
    if (isset($this->_configCache[$path])) {
        return $this->_configCache[$path];
    }

    $config = Mage::getConfig();

    $fullPath = 'stores/' . $this->getCode() . '/' . $path;
    $data = $config->getNode($fullPath);
    if (!$data && !Mage::isInstalled()) {
        $data = $config->getNode('default/' . $path);
    }
    if (!$data) {
        return null;
    }
    return $this->_processConfigValue($fullPath, $path, $data);
}

Aviso cómo está la determinación de la ruta de acceso al valor de configuración basado en el código de la tienda aquí ...

$fullPath = 'stores/' . $this->getCode() . '/' . $path;
Licenciado bajo: CC-BY-SA con atribución
No afiliado a magento.stackexchange
scroll top