Первым делом находим файл 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 опенкарт Если ктото протестит отпишите для выше версий
работает и на 1.5.4.1. только не проще ли не удалять за заклмментировать ненужный код??? а теперь попробуйте в админке отредактировать заказ и у вас опенкарт ругнется: заполните имя ,почту и т.д.))) немного не доработали верно???
Можно и удалить но на всякий случай закомент вдруг чего, здесь описано решение только для магазина, добавьте для административной части
я то это знаю. просто некоторые пользователи этого не знают или не догадываются с чем могут столкнуться. у меня отключено в админке и при регистрации.
мануал для версии 1.5.2 - если пробовали не выше версии зделать неуверен что будет работать! Читай внимательно!
Подскажите, пожалуйста, как отключить в админке обязательные поля которые заполняются в разделе оплата и доставка?
На версии 1.5.5.1 данные изменения будут работать? --- Добавлено, 27 дек 2013 --- ***Версия Ocstore 1.5.5.1 !! не чистый Opencart