Frage

Ich erstelle ein benutzerdefiniertes Modul mit einer benutzerdefinierten Datenbanktabelle mithilfe das folgende Tutorial.

Dieses Modul ist ein benutzerdefiniertes Kontaktformular, und ich möchte, dass die Einstellungen für dieses benutzerdefinierte Kontaktformular pro Store sein, dh ich möchte, dass die Sende von der E -Mail -Adresse für jedes von mir erstellte Geschäft unterschiedlich ist.

Muss ich der Datenbank bestimmte Felder hinzufügen, damit Magento dies aufnimmt? Oder macht Magento das automatisch?

War es hilfreich?

Lösung

Sie können das vorhandene Verhalten von Magento verwenden, mit dem eine Kontakt -E -Mail -Adresse für jede Store -Ansicht und abhängig von der Abteilung (Verkauf, Kundensupport, allgemein) definiert und abgerufen werden können. Sie können dann diesen spezifischen Kontakt pro Store in Ihrem benutzerdefinierten Modul verwenden.

Hier ist das Konfigurations -Backend für E -Mail -Adressen:backend email addresses

Um diese bestimmte E -Mail in Ihrem benutzerdefinierten Modul zu verwenden, ist der wichtige Teil in Ihrem Fall die $senderVariable. Hier ist ein Code -Beispiel (überprüfen Sie den Kommentar darin, beachten Sie, dass es aus einem Code von mir entnommen wird, also passen Sie sich an Ihre Bedürfnisse an):

$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);

Andere Tipps

Magento fügt diese automatisch hinzu, wenn Sie sie in Ihren Modulen definieren system.xml Datei.

<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>

Sie rufen dann den Konfigurationswert für den fraglichen Speicher über ...

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

app/Mage.php

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

Was wiederum anruft ...

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);
}

Beachten Sie, wie es den Pfad zum Konfigurationswert basierend auf dem Store -Code hier ermittelt ...

$fullPath = 'stores/' . $this->getCode() . '/' . $path;
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit magento.stackexchange
scroll top