Может я тупой - пробовал менять некоторые строки - выдает сразу ошибку. Работает только основной вариант этого файла. Выкладываю его ниже - может быть кто-то подскажет, где прописать нужно.В идеале должен быть редирект на /index.php?route=checkout/success.
<?php
class ControllerCheckoutCheckout extends Controller {
public function index() {
$this->language->load('checkout/checkout');
$this->document->setTitle($this->language->get('heading_title'));
// Инициируем переменные для шаблона
// 1. Языковые переменные
$this->data['text_your_details'] = $this->language->get('text_your_details');
$this->data['entry_firstname'] = $this->language->get('entry_firstname');
$this->data['entry_address_1'] = $this->language->get('entry_address_1');
$this->data['entry_telephone'] = $this->language->get('entry_telephone');
$this->data['entry_email'] = $this->language->get('entry_email');
$this->data['text_comments'] = $this->language->get('text_comments');
$this->data['button_checkout'] = $this->language->get('button_checkout');
$err = false;
// 2. Получаем данные формы и проверяем корректность
$firstname = '';
$this->data['error_firstname'] = '';
if(isset($_POST['firstname']))
{
$firstname = addslashes(strip_tags($_POST['firstname']));
if( strlen($firstname) < 2 )
{
$this->data['error_firstname'] = $this->language->get('error_firstname');
$err = true;
}
}
$this->data['firstname'] = $firstname;
$address_1 = '';
$this->data['error_address_1'] = '';
if(isset($_POST['address_1']))
{
$address_1 = addslashes(strip_tags($_POST['address_1']));
if( strlen($address_1) < 3 || strlen($address_1) > 128 )
{
$this->data['error_address_1'] = $this->language->get('error_address_1');
$err = true;
}
}
$this->data['address_1'] = $address_1;
$telephone = '';
$this->data['error_telephone'] = '';
if(isset($_POST['telephone']))
{
$telephone = addslashes(strip_tags($_POST['telephone']));
if( strlen($telephone) < 7 )
{
$this->data['error_telephone'] = $this->language->get('error_telephone');
$err = true;
}
}
$this->data['telephone'] = $telephone;
$email = '';
$this->data['error_email'] = '';
if(isset($_POST['email']))
{
$email = addslashes(strip_tags($_POST['email']));
if($email && !preg_match('/^[_a-z0-9-]+(.[_a-z0-9-]+)*@[a-z0-9-]+(.[a-z0-9-]+)*(.[a-z]{2,3})$/i', $email))
{
$this->data['error_email'] = $this->language->get('error_email');
$err = true;
}
}
$this->data['email'] = $email;
$comment = '';
if(isset($_POST['comment']))
{
$comment = addslashes(strip_tags($_POST['comment']));
}
$this->data['comment'] = $comment;
if($err)
{
$this->data['error_warning'] = $this->language->get('error_warning');
} else {
$this->data['error_warning'] = '';
}
$this->data['url'] = $this->url->link('checkout/checkout', '', 'SSL');
$this->children = array(
'common/column_left',
'common/column_right',
'common/content_top',
'common/content_bottom',
'common/footer',
'common/header'
);
// Если данные уже были введены и они соответствуют щаблону то добавляем заказ в базу
if( $err == false && isset($_POST['submited']) && $_POST['submited'] == 1 )
{
$total = 0;
$data['invoice_prefix'] = $this->config->get('config_invoice_prefix');
$data['store_id'] = $this->config->get('config_store_id');
$data['store_name'] = $this->config->get('config_name');
if ($data['store_id']) {
$data['store_url'] = $this->config->get('config_url');
} else {
$data['store_url'] = HTTP_SERVER;
}
$data['customer_id'] = 0;
$data['customer_group_id'] = $this->config->get('config_customer_group_id');
$data['firstname'] = $firstname;
$data['lastname'] = '';
$data['email'] = $email;
$data['telephone'] = $telephone;
$data['fax'] = '';
$data['payment_firstname'] = $firstname;
$data['payment_lastname'] = '';
$data['payment_company'] = '';
$data['payment_address_1'] = $address_1;
$data['payment_address_2'] = '';
$data['payment_city'] = 'Yekaterinburg';
$data['payment_postcode'] = '620000';
$data['payment_zone'] = 'Yekaterinburg';
$data['payment_zone_id'] = '2807';
$data['payment_country'] = 'Russian Federation';
$data['payment_country_id'] = '176';
$data['payment_address_format'] = '';
$data['payment_method'] = 'Cash On Delivery';
$data['shipping_firstname'] = $firstname;
$data['shipping_lastname'] = '';
$data['shipping_company'] = '';
$data['shipping_address_1'] = $address_1;
$data['shipping_address_2'] = '';
$data['shipping_city'] = 'Yekaterinburg';
$data['shipping_postcode'] = '620000';
$data['shipping_zone'] = 'Yekaterinburg';
$data['shipping_zone_id'] = '2807';
$data['shipping_country'] = 'Russian Federation';
$data['shipping_country_id'] = '176';
$data['shipping_address_format'] = '';
$data['shipping_method'] = '';
$product_data = array();
foreach ($this->cart->getProducts() as $product) {
$option_data = array();
foreach ($product['option'] as $option) {
if ($option['type'] != 'file') {
$option_data[] = array(
'product_option_id' => $option['product_option_id'],
'product_option_value_id' => $option['product_option_value_id'],
'product_option_id' => $option['product_option_id'],
'product_option_value_id' => $option['product_option_value_id'],
'option_id' => $option['option_id'],
'option_value_id' => $option['option_value_id'],
'name' => $option['name'],
'value' => $option['option_value'],
'type' => $option['type']
);
} else {
$this->load->library('encryption');
$encryption = new Encryption($this->config->get('config_encryption'));
$option_data[] = array(
'product_option_id' => $option['product_option_id'],
'product_option_value_id' => $option['product_option_value_id'],
'product_option_id' => $option['product_option_id'],
'product_option_value_id' => $option['product_option_value_id'],
'option_id' => $option['option_id'],
'option_value_id' => $option['option_value_id'],
'name' => $option['name'],
'value' => $encryption->decrypt($option['option_value']),
'type' => $option['type']
);
}
}
$product_data[] = array(
'product_id' => $product['product_id'],
'name' => $product['name'],
'model' => $product['model'],
'option' => $option_data,
'download' => $product['download'],
'quantity' => $product['quantity'],
'subtract' => $product['subtract'],
'price' => $product['price'],
'total' => $product['total'],
);
$total += $product['total'];
}
// Gift Voucher
if (isset($this->session->data['vouchers']) && $this->session->data['vouchers']) {
foreach ($this->session->data['vouchers'] as $voucher) {
$product_data[] = array(
'product_id' => 0,
'name' => $voucher['description'],
'model' => '',
'option' => array(),
'download' => array(),
'quantity' => 1,
'subtract' => false,
'price' => $voucher['amount'],
'total' => $voucher['amount'],
'tax' => 0
);
}
}
$totals = array();
$tatals[0]['code'] = 'sub_total';
$tatals[0]['title'] = 'Sub-Total';
$tatals[0]['text'] = $total;
$tatals[0]['value'] = $total;
$tatals[0]['sort_order'] = 1;
$tatals[1]['code'] = 'shipping';
$tatals[1]['title'] = 'Flat Rate';
$tatals[1]['text'] = '0.00';
$tatals[1]['value'] = 0;
$tatals[1]['sort_order'] = 3;
$tatals[2]['code'] = 'total';
$tatals[2]['title'] = 'Total';
$tatals[2]['text'] = $total;
$tatals[2]['value'] = $total;
$tatals[2]['sort_order'] = 9;
$data['products'] = $product_data;
$data['totals'] = $tatals;
$data['comment'] = $comment;
$data['total'] = $total;
$data['reward'] = $this->cart->getTotalRewardPoints();
if (isset($this->request->cookie['tracking'])) {
$this->load->model('affiliate/affiliate');
$affiliate_info = $this->model_affiliate_affiliate->getAffiliateByCode($this->request->cookie['tracking']);
if ($affiliate_info) {
$data['affiliate_id'] = $affiliate_info['affiliate_id'];
$data['commission'] = ($total / 100) * $affiliate_info['commission'];
} else {
$data['affiliate_id'] = 0;
$data['commission'] = 0;
}
} else {
$data['affiliate_id'] = 0;
$data['commission'] = 0;
}
$data['language_id'] = $this->config->get('config_language_id');
$data['currency_id'] = $this->currency->getId();
$data['currency_code'] = $this->currency->getCode();
$data['currency_value'] = $this->currency->getValue($this->currency->getCode());
$data['ip'] = $this->request->server['REMOTE_ADDR'];
$this->load->model('checkout/order');
$order_id = $this->model_checkout_order->create($data);
$this->model_checkout_order->confirm2( $order_id );
if (isset($order_id)) {
$this->cart->clear();
unset($this->session->data['shipping_method']);
unset($this->session->data['shipping_methods']);
unset($this->session->data['payment_method']);
unset($this->session->data['payment_methods']);
unset($this->session->data['guest']);
unset($this->session->data['comment']);
unset($this->session->data['order_id']);
unset($this->session->data['coupon']);
unset($this->session->data['voucher']);
unset($this->session->data['vouchers']);
}
$this->language->load('checkout/success');
$this->document->setTitle($this->language->get('heading_title'));
$this->data['breadcrumbs'] = array();
$this->data['breadcrumbs'][] = array(
'href' => $this->url->link('common/home'),
'text' => $this->language->get('text_home'),
'separator' => false
);
$this->data['breadcrumbs'][] = array(
'href' => $this->url->link('checkout/cart'),
'text' => $this->language->get('text_basket'),
'separator' => $this->language->get('text_separator')
);
$this->data['breadcrumbs'][] = array(
'href' => $this->url->link('checkout/checkout', '', 'SSL'),
'text' => $this->language->get('text_checkout'),
'separator' => $this->language->get('text_separator')
);
$this->data['breadcrumbs'][] = array(
'href' => $this->url->link('checkout/success'),
'text' => $this->language->get('text_success'),
'separator' => $this->language->get('text_separator')
);
$this->data['heading_title'] = $this->language->get('heading_title');
if ($this->customer->isLogged()) {
$this->data['text_message'] = sprintf($this->language->get('text_customer'), $this->url->link('account/account', '', 'SSL'), $this->url->link('account/order', '', 'SSL'), $this->url->link('account/download', '', 'SSL'), $this->url->link('information/contact'));
} else {
$this->data['text_message'] = sprintf($this->language->get('text_guest'), $this->url->link('information/contact'));
}
$this->data['button_continue'] = $this->language->get('button_continue');
$this->data['continue'] = $this->url->link('common/home');
if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/common/success.tpl')) {
$this->template = $this->config->get('config_template') . '/template/common/success.tpl';
} else {
$this->template = 'default/template/common/success.tpl';
}
} else {
$this->template = 'default/template/checkout/checkout.tpl';
}
$this->response->setOutput($this->render());
}
}
?>