Перевод электронной почты с предупреждением о наличии товара на складе


Я добавил перевод в свои папки локали и даже загрузил шаблоны и назначил их в конфигурации системы. Кажется, ничто не переводит это электронное письмо. Когда я смотрю в таблицу product_alert_stock, я также вижу, что сохранен только веб-сайт, но мои локали отличаются на уровне просмотра магазина.

Поэтому, когда я захожу в свой французский магазин и нажимаю ссылку, чтобы подписаться, возвращаю товар на склад и запускаю cron catalog_product_alert, я продолжаю получать английский почта.

Есть идеи о том, что могло пойти не так или это ошибка?

Author: Fabian Schmengler, 2013-06-12

2 answers

TD;DR: Я бы классифицировал это как ошибку.

Немного предыстории:

Магазин для предупреждений о продукте всегда определяется следующим образом в Mage_ProductAlert_Model_Email::send():

....
    $store      = $this->_website->getDefaultStore();
    $storeId    = $store->getId();
....
    $templateId = Mage::getStoreConfig($templateConfigPath, $storeId);
....
    Mage::getModel('core/email_template')
        ->setDesignConfig(array(
            'area'  => 'frontend',
            'store' => $storeId
        ))->sendTransactional(...)

Таким образом, он всегда использует хранилище по умолчанию указанного веб-сайта. Веб-сайт, в свою очередь, настраивается во время подписки. То есть, когда клиент подписывается на уведомления, текущий идентификатор веб-сайта сохраняется вместе с записью подписки:

    $model  = Mage::getModel('productalert/price')
        ->setCustomerId(Mage::getSingleton('customer/session')->getId())
        ->setProductId($product->getId())
        ->setPrice($product->getFinalPrice())
        ->setWebsiteId(Mage::app()->getStore()->getWebsiteId());
    $model->save();

Таким образом, даже если клиент зарегистрировался, скажем, представление магазина на французском языке и подписался на уведомления в представлении магазина на французском языке, если магазином по умолчанию для веб-сайта является представление магазина на английском языке, которое указывает, какой шаблон будет использоваться.

Чтобы исправить поведение, перепишите Mage_ProductAlert_Model_Email::send() и вместо этого используйте идентификатор хранилища клиентов (например).

 7
Author: Vinai, 2013-06-12 15:22:08

Я не знаю, что может пойти не так, но я бы начал отладку следующим образом:

Проверьте, на 100% ли вы уверены, что редактируете правильный шаблон. Попробуйте отредактировать полученное вами письмо на английском языке и проверьте, отражает ли электронное письмо ваши изменения. Если нет, бинго, найди правильный вариант.

Если это так: попробуйте, правильно ли вставлены другие переменные хранилища в электронное письмо, например URL-адрес магазина:

<a href="{{store url=""}}">Store URL</a>
 1
Author: pitmeister, 2013-06-12 10:11:50