[FAQ] Отключаем обязательные поля при оформлении заказа в OpenCart

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

  1. cwdima

    cwdima

    Регистрация:
    27 дек 2012
    Сообщения:
    178
    Симпатии:
    70
    Первым делом находим файл opencart/catalog/view/theme/default/template/checkout/guest.tpl и у тех полей, которые мы хотим сделать необязательными удаляем <span>*</span>

    Например поле Фамилия было
    Код:
    1	<span class="required">*</span> <?php echo $entry_lastname; ?><br />
    Стало

    Код:
    1	<?php echo $entry_lastname; ?><br />
    Таким образом я оставил обязательными только поля Имя и Телефон. Но это только внешнее отключение, если сейчас нажать кнопку Далее то OpenCart все равно потребует заполнять почти все поля. Чтобы отключить такое поведение лезем в файл /opencart/www/catalog/controller/checkout/guest.php в котором будем править метод validate(). Больше всего нас интересуют строки от 136 по 176

    Было

    Код:
    		if (!$json) {
    			if ((utf8_strlen($this->request->post['firstname']) < 1) || (utf8_strlen($this->request->post['firstname']) > 32)) {
    				$json['error']['firstname'] = $this->language->get('error_firstname');
    			}
     
    			if ((utf8_strlen($this->request->post['lastname']) < 1) || (utf8_strlen($this->request->post['lastname']) > 32)) {
    				$json['error']['lastname'] = $this->language->get('error_lastname');
    			}
     
    			if ((utf8_strlen($this->request->post['email']) > 96) || !preg_match('/^[^\@]+@.*\.[a-z]{2,6}$/i', $this->request->post['email'])) {
    				$json['error']['email'] = $this->language->get('error_email');
    			}
    		 
    			if ((utf8_strlen($this->request->post['telephone']) < 3) || (utf8_strlen($this->request->post['telephone']) > 32)) {
    				$json['error']['telephone'] = $this->language->get('error_telephone');
    			}
    		 
    			if ((utf8_strlen($this->request->post['address_1']) < 3) || (utf8_strlen($this->request->post['address_1']) > 128)) {
    				$json['error']['address_1'] = $this->language->get('error_address_1');
    			}
     
    			if ((utf8_strlen($this->request->post['city']) < 2) || (utf8_strlen($this->request->post['city']) > 128)) {
    				$json['error']['city'] = $this->language->get('error_city');
    			}
    		 
    			$this->load->model('localisation/country');
    		 
    			$country_info = $this->model_localisation_country->getCountry($this->request->post['country_id']);
    		 
    			if ($country_info && $country_info['postcode_required'] && (utf8_strlen($this->request->post['postcode']) < 2) || (utf8_strlen($this->request->post['postcode']) > 10)) {
    				$json['error']['postcode'] = $this->language->get('error_postcode');
    			}
     
    			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');
    			} 
    		}
    Стало

    Код:
    1
    		  if (!$json) {
    			if ((utf8_strlen($this->request->post['firstname']) < 1) || (utf8_strlen($this->request->post['firstname']) > 32)) {
    				$json['error']['firstname'] = $this->language->get('error_firstname');
    			}
     
    			if ((utf8_strlen($this->request->post['telephone']) < 3) || (utf8_strlen($this->request->post['telephone']) > 32)) {
    				$json['error']['telephone'] = $this->language->get('error_telephone');
    			}
    		}

    В результате клиент без регистрации заполняет минимум Имя и Телефон, а мы всегда можем уточнить детали по телефону.



    Вчера нарыл у себя найденый давно мануал! Применялось для 1,5,2 опенкарт

    Если ктото протестит отпишите для выше версий
     
    rubiks и serega098 нравится это.
  2. apocalypce

    apocalypce

    Регистрация:
    24 ноя 2012
    Сообщения:
    6
    Симпатии:
    1
    работает и на 1.5.4.1.

    только не проще ли не удалять за заклмментировать ненужный код??? а теперь попробуйте в админке отредактировать заказ и у вас опенкарт ругнется: заполните имя ,почту и т.д.))) немного не доработали верно???
     
  3. Skur22

    Skur22

    Регистрация:
    19 янв 2013
    Сообщения:
    27
    Симпатии:
    15
    Можно и удалить но на всякий случай закомент вдруг чего, здесь описано решение только для магазина, добавьте для административной части
     
  4. apocalypce

    apocalypce

    Регистрация:
    24 ноя 2012
    Сообщения:
    6
    Симпатии:
    1
    я то это знаю. просто некоторые пользователи этого не знают или не догадываются с чем могут столкнуться. у меня отключено в админке и при регистрации.
     
  5. SpresscodE

    SpresscodE

    Регистрация:
    2 ноя 2012
    Сообщения:
    258
    Симпатии:
    58
    Сделал Все как написано - а поля просто без звездоски - а заполять нада
     
  6. apocalypce

    apocalypce

    Регистрация:
    24 ноя 2012
    Сообщения:
    6
    Симпатии:
    1
    в каком файле редактируете7? и какая версия движка??
     
  7. cwdima

    cwdima

    Регистрация:
    27 дек 2012
    Сообщения:
    178
    Симпатии:
    70
    мануал для версии 1.5.2 - если пробовали не выше версии зделать неуверен что будет работать! Читай внимательно!
     
  8. Toliamba

    Toliamba

    Регистрация:
    27 янв 2013
    Сообщения:
    191
    Симпатии:
    44
    как отключить проверку в админке?
     
  9. winner7

    winner7

    Регистрация:
    6 мар 2013
    Сообщения:
    322
    Симпатии:
    55
    Подскажите, пожалуйста, как отключить в админке обязательные поля которые заполняются в разделе оплата и доставка?
     
  10. kotika

    kotika

    Регистрация:
    11 дек 2013
    Сообщения:
    1
    Симпатии:
    0
    На версии 1.5.5.1 данные изменения будут работать?
    --- Добавлено, 27 дек 2013 ---
    ***Версия Ocstore 1.5.5.1 !! не чистый Opencart