[Помогите] Сделать необязательными поля Страна и Область?

Тема в разделе "OpenCart", создана пользователем Toliamba, 25 апр 2013.

  1. Toliamba

    Toliamba

    Регистрация:
    27 янв 2013
    Сообщения:
    195
    Симпатии:
    46
    Как убрать проверку в Опенкарт (версия 1.5.3.1) области и страны, сделать эти поля не обязательными, а главное чтобы при редактировании заказа из админки эти поля не проверялись?
     
  2. stifutkin

    stifutkin

    Регистрация:
    22 дек 2012
    Сообщения:
    172
    Симпатии:
    43
  3. Florenco

    Florenco

    Регистрация:
    3 мар 2013
    Сообщения:
    220
    Симпатии:
    102
    catalog/controller/checkout/guest.php (для гостевого заказа)

    заменить:
    Код:
    if (isset($this->session->data['guest']['payment']['country_id'])) {
    			$this->data['country_id'] = $this->session->data['guest']['payment']['country_id'];				
    		} elseif (isset($this->session->data['shipping_country_id'])) {
    			$this->data['country_id'] = $this->session->data['shipping_country_id'];	
    		} else {
    			$this->data['country_id'] = $this->config->get('config_country_id');
    		}
     
    		if (isset($this->session->data['guest']['payment']['zone_id'])) {
    			$this->data['zone_id'] = $this->session->data['guest']['payment']['zone_id'];
    		} elseif (isset($this->session->data['shipping_zone_id'])) {
    			$this->data['zone_id'] = $this->session->data['shipping_zone_id'];					
    		} else {
    			$this->data['zone_id'] = '';
    		}
    на:
    Код:
    $this->data['country_id'] = $this->config->get('config_country_id');
    $this->data['zone_id'] = $this->config->get('config_zone_id');


    это:
    Код:
    if ($this->request->post['country_id'] == '') {
    $json['error']['country'] = $this->language->get('error_country');
    }
     
    if ($this->request->post['zone_id'] == '') {
    $json['error']['zone'] = $this->language->get('error_zone');
    }
    привести к виду:
    Код:
    /* if ($this->request->post['country_id'] == '') {
    $json['error']['country'] = $this->language->get('error_country');
    }
    
    if ($this->request->post['zone_id'] == '') {
    $json['error']['zone'] = $this->language->get('error_zone');
    } */

    Чтобы сделать необязательными этого достаточно. Чтобы убрать совсем делаем дальше.
    catalog/view/theme/ТЕМА/template/checkout/guest.tpl

    это:
    Код:
    <span class="required">*</span> <?php echo $entry_country; ?><br />
      <select name="country_id" class="large-field">
    	<option value=""><?php echo $text_select; ?></option>
    	<?php foreach ($countries as $country) { ?>
    	<?php if ($country['country_id'] == $country_id) { ?>
    	<option value="<?php echo $country['country_id']; ?>" selected="selected"><?php echo $country['name']; ?></option>
    	<?php } else { ?>
    	<option value="<?php echo $country['country_id']; ?>"><?php echo $country['name']; ?></option>
    	<?php } ?>
    	<?php } ?>
      </select>
      <br />
      <br />
      <span class="required">*</span> <?php echo $entry_zone; ?><br />
      <select name="zone_id" class="large-field">
      </select>
      <br />
      <br />
    привести к виду:
    Код:
    <div style="display: none">
    <span class="required">*</span> <?php echo $entry_country; ?><br />
      <select name="country_id" class="large-field">
    	<option value=""><?php echo $text_select; ?></option>
    	<?php foreach ($countries as $country) { ?>
    	<?php if ($country['country_id'] == $country_id) { ?>
    	<option value="<?php echo $country['country_id']; ?>" selected="selected"><?php echo $country['name']; ?></option>
    	<?php } else { ?>
    	<option value="<?php echo $country['country_id']; ?>"><?php echo $country['name']; ?></option>
    	<?php } ?>
    	<?php } ?>
      </select>
      <br />
      <br />
      <span class="required">*</span> <?php echo $entry_zone; ?><br />
      <select name="zone_id" class="large-field">
      </select>
      <br />
      <br />
    </div>
    В итоге в заказах будет устанавливаться страна и регион из настроек магазина.
    Либо можно создать в странах и регионах по одному новому пункту "Не указано" и вписать их id вместо:
    $this->config->get('config_country_id') и $this->config->get('config_zone_id')
     
  4. Toliamba

    Toliamba

    Регистрация:
    27 янв 2013
    Сообщения:
    195
    Симпатии:
    46
    Не помогло, конкретно интересует чтобы убрать валидацию при редактировании заказа в админке
     
  5. Florenco

    Florenco

    Регистрация:
    3 мар 2013
    Сообщения:
    220
    Симпатии:
    102
    Это решение для новых заказов.

    Для существующих, в файле admin/controller/sale/order.php:

     
    winner7 и Toliamba нравится это.
  6. Toliamba

    Toliamba

    Регистрация:
    27 янв 2013
    Сообщения:
    195
    Симпатии:
    46
    Версия 1.5.3.1 не помогло...все равно пишет Внимательно проверьте форму и исправьте ошибки! и просит указать область и страну!

    (дополню что покупатель при заказе просто не видит это поле, посему оно не заполнено)

    Разобрался, изменения в заказе сохраняются...просто выскакивает предупреждающее сообщение, это и насторожило =)
    Я так понимаю чтобы проверки города не было нежно так изменить


    Но...возникла следующая проблема :banghead: при изменении не могу выбрать способ оплаты и доставки, а без этого сохранится никак
     
  7. stifutkin

    stifutkin

    Регистрация:
    22 дек 2012
    Сообщения:
    172
    Симпатии:
    43
     
    winner7 нравится это.
  8. Florenco

    Florenco

    Регистрация:
    3 мар 2013
    Сообщения:
    220
    Симпатии:
    102
    У меня ошибок нигде не выдаёт, только при "Update Totals", но с этим не хочу возиться, проще как я написал в первом посте, присвоить значение по умолчанию и все и не надо никакие проверки вырезать.
     
  9. Toliamba

    Toliamba

    Регистрация:
    27 янв 2013
    Сообщения:
    195
    Симпатии:
    46
    Но дело в том что эти значения по умолчанию будут отправятся в письме покупателю...это значит тогда надо и с письма вырезать
     
  10. Florenco

    Florenco

    Регистрация:
    3 мар 2013
    Сообщения:
    220
    Симпатии:
    102
    Да, именно так, но вырезать два поля из письма гораздо проще, чем вырезать учёт этих полей по всей системе заказа.
     
  11. steler

    steler

    Регистрация:
    10 июн 2013
    Сообщения:
    43
    Симпатии:
    1