Чтобы поменять письмо, я закомментил дефолтную функцию edit и сделал свою.
Ключевые моменты - это докидывание данных в $data и создание нового twig шаблона.
Мне надо было, чтобы в письмах была таблица с заказом, так что надо передать в шаблон языковые строки:
$language->load('mail/order_add');
И данные по товарам в заказе (копируется из функции выше):
$order_products = $this->model_checkout_order->getOrderProducts($order_info['order_id']);
// Products
$data['products'] = array();
foreach ($order_products as $order_product) {
...
}
Создаём копию catalog/view/theme/<MYTHEME>/template/mail/order_add.twig с новым названием, например catalog/view/theme/<MYTHEME>/template/mail/order_status_change.twig
И меняем в новой функции edit строку $mail->setText($this->load->view('mail/order_edit', $data)); на $mail->setHtml($this->load->view('mail/order_status_change', $data));
Это надо, чтобы письмо было не plain text, а красивенький-гламурненький HTML.
Смотрим переменные в /catalog/view/theme/myshop/template/mail/order_edit.twig или в функции edit переменной $data и правим новый шаблон order_status_change.
Мне надо было только таблицу с товарами, так что я копировал только про товары. Если надо ещё что-то, то в шаблон надо передать данные.