AdminOrderController.php에서 재정의를 만들었습니다. {$ followup} 및 {$ code_traking} 변수를 사용하고 Shipped.html에 배치했습니다.Prestashop 1.6.1.14 - 발송 된 이메일 세트에서 대체되지 않는 변수
불행히도, 단일 주문 상태가 변경되는 이유는 불행히도 당황 스럽습니다. 대량으로 업데이트하려고 시도했을 때 {$ followup} 및 {$ code_traking}이 (가) 이메일로 대체되지 않습니다.
{$ firstname}, {$ lastname} 및 {$ id_order}이 (가) 기준에 따라 이메일에 생성됩니다.
아래 코드가 있습니다.
} elseif (Tools::isSubmit('sendStateEmail') && Tools::getValue('sendStateEmail') > 0 && Tools::getValue('id_order') > 0) {
if ($this->tabAccess['edit'] === '1') {
$order_state = new OrderState((int)Tools::getValue('sendStateEmail'));
if (!Validate::isLoadedObject($order_state)) {
$this->errors[] = Tools::displayError('An error occurred while loading order status.');
} else {
$history = new OrderHistory((int)Tools::getValue('id_order_history'));
$carrier = new Carrier($order->id_carrier, $order->id_lang);
$templateVars = array();
$templateVars = array(
'{followup}' => str_replace('@', $order->shipping_number, $carrier->url),
'{url_traking}' => $carrier->url,
'{shipping_number}' => $order->shipping_number,
'{code_traking}' => $order->shipping_number
);
if ($history->sendEmail($order, $templateVars)) {
Tools::redirectAdmin(self::$currentIndex.'&id_order='.$order->id.'&vieworder&conf=10&token='.$this->token);
} else {
$this->errors[] = Tools::displayError('An error occurred while sending the e-mail to the customer.');
}
}
} else {
$this->errors[] = Tools::displayError('You do not have permission to edit this.');
}
오버라이드에 다음 코드를 추가하려고했지만 여전히 표시되지 않습니다. 나는 캐시를 지웠다.
public function processBulkUpdateOrderStatus()
{
if (Tools::isSubmit('submitUpdateOrderStatus')
&& ($id_order_state = (int)Tools::getValue('id_order_state'))) {
if ($this->tabAccess['edit'] !== '1') {
$this->errors[] = Tools::displayError('You do not have permission to edit this.');
} else {
$order_state = new OrderState($id_order_state);
if (!Validate::isLoadedObject($order_state)) {
$this->errors[] = sprintf(Tools::displayError('Order status #%d cannot be loaded'), $id_order_state);
} else {
foreach (Tools::getValue('orderBox') as $id_order) {
$order = new Order((int)$id_order);
if (!Validate::isLoadedObject($order)) {
$this->errors[] = sprintf(Tools::displayError('Order #%d cannot be loaded'), $id_order);
} else {
$current_order_state = $order->getCurrentOrderState();
if ($current_order_state->id == $order_state->id) {
$this->errors[] = $this->displayWarning(sprintf('Order #%d has already been assigned this status.', $id_order));
} else {
$history = new OrderHistory();
$history->id_order = $order->id;
$history->id_employee = (int)$this->context->employee->id;
$use_existings_payment = !$order->hasInvoice();
$history->changeIdOrderState((int)$order_state->id, $order, $use_existings_payment);
$carrier = new Carrier($order->id_carrier, $order->id_lang);
$templateVars = array();
if ($history->id_order_state == Configuration::get('PS_OS_SHIPPING') && $order->shipping_number) {
//$templateVars = array('{followup}' => str_replace('@', $order->shipping_number, $carrier->url));
$templateVars = array(
'{followup}' => str_replace('@', $order->shipping_number, $carrier->url),
'{url_traking}' => $carrier->url,
'{shipping_number}' => $order->shipping_number,
'{code_traking}' => $order->shipping_number
);
}
if ($history->addWithemail(true, $templateVars)) {
if (Configuration::get('PS_ADVANCED_STOCK_MANAGEMENT')) {
foreach ($order->getProducts() as $product) {
if (StockAvailable::dependsOnStock($product['product_id'])) {
StockAvailable::synchronize($product['product_id'], (int)$product['id_shop']);
}
}
}
} else {
$this->errors[] = sprintf(Tools::displayError('Cannot change status for order #%d.'), $id_order);
}
}
}
}
}
}
if (!count($this->errors)) {
Tools::redirectAdmin(self::$currentIndex.'&conf=4&token='.$this->token);
}
}
}
public function renderList()
{
if (Tools::isSubmit('submitBulkupdateOrderStatus'.$this->table)) {
if (Tools::getIsset('cancel')) {
Tools::redirectAdmin(self::$currentIndex.'&token='.$this->token);
}
$this->tpl_list_vars['updateOrderStatus_mode'] = true;
$this->tpl_list_vars['order_statuses'] = $this->statuses_array;
$this->tpl_list_vars['REQUEST_URI'] = $_SERVER['REQUEST_URI'];
$this->tpl_list_vars['POST'] = $_POST;
}
return parent::renderList();
}
대량 주문 상태 변경을 위해이 기능을 사용하려면 편집해야 할 다른 영역이 있습니까? 나는 그것이 끝내서 모든 주문을 하나씩 업데이트하는 것이 가능하지 않다는 것을 깨닫지 못한다. 시간이 너무 오래 걸린다. :(
감사합니다.
이메일 템플릿도 게시하십시오. 재정의를 추가 한 후 cache/class_index.php 파일을 삭제 했습니까? 아니면 모듈 설치에 재정의를 설치 했습니까? – sadlyblue
class_index.php를 삭제했지만 여전히 변수가 대량 주문 상태 변경으로 표시되지 않습니다. – Enthu