karapuzz

[Решено {платным модулем}] Как сделать переадресацию на страницу после оформления заказа

Рекомендуемые сообщения

karapuzz    1

Сделал на сайте упрощенную форму заказа - скачал чей-то хак с этого форума.

Когда покупатель начинает оформлять заказ, ссылка у сайта такая - site.ru/index.php?route=checkout/checkout

После того как пользователь заполняет данные о себе, и жмет подтвердить, ссылка остается такой же - site.ru/index.php?route=checkout/checkout.

Как сделать, чтобы его редиректило на другую страницу?

Привожу файл site.ru/catalog/view/theme/default/template/checkout/checkout.tpl

<?php  echo $header; ?><?php echo $column_left; ?><?php echo $column_right; ?>
<div id="content"><?php echo $content_top; ?>
<form action="<?php echo $url; ?>" name="checkout" method="post">
<?php if ($error_warning) { ?>
<div class="warning"><?php echo $error_warning; ?></div>
<?php } ?>

<h2><?php echo $text_your_details; ?></h2>

<span class="required">*</span> <?php echo $entry_firstname; ?><br />
<input type="text" name="firstname" value="<?php echo $firstname; ?>" class="large-field" /><br />
<?php if ($error_firstname) { ?>
  <span class="error"><?php echo $error_firstname; ?></span>
<?php } ?>

<span class="required">*</span> <?php echo $entry_telephone; ?><br />
<input type="text" name="telephone" value="<?php echo $telephone; ?>" class="large-field" /><br />
<?php if ($error_telephone) { ?>
  <span class="error"><?php echo $error_telephone; ?></span>
<?php } ?>

<span class="required">*</span> <?php echo $entry_address_1; ?><br />
<input type="text" name="address_1" value="<?php echo $address_1; ?>" class="large-field" /><br />
<?php if ($error_address_1) { ?>
  <span class="error"><?php echo $error_address_1; ?></span>
<?php } ?>

<?php echo $entry_email; ?><br />
<input type="text" name="email" value="<?php echo $email; ?>" class="large-field" /><br />
<?php if ($error_email) { ?>
  <span class="error"><?php echo $error_email; ?></span>
<?php } ?>

<?php echo $text_comments; ?><br />
<textarea name="comment" rows="5" style="width: 300px"><?php echo $comment; ?></textarea>

<div class="buttons">
	  <div class="left"><a onclick="document.forms['checkout'].submit()" class="button"><span><?php echo $button_checkout; ?></span></a></div>
	</div>
<input type="hidden" name="submited" value="1">
</form>
</div>
<?php echo $footer; ?>

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
fabrikator    274

как вариант могу вам предложить вставить (например в самый низ) следующее

<script type="text/javascript"><!--

function reload() {location = 'index.php'}; setTimeout('reload()', 3000);

//--></script>

это вернет покупателя на главную, время если нужно можете сами подправить

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
karapuzz    1

Вариант интересен))))А если покупатель не успеет ввести данные?))))

Нет,спасибо)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Yoda    444

Открываешь файл контроллер чекаута - и прописываешь там куда те нужен редирект

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
karapuzz    1

Может я тупой - пробовал менять некоторые строки - выдает сразу ошибку. Работает только основной вариант этого файла. Выкладываю его ниже - может быть кто-то подскажет, где прописать нужно.В идеале должен быть редирект на /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());


}

}
?>

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
karapuzz    1

Поставил платный модуль Simple - проблема решилась. Закрывайте тему.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти


  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу