Проблема с OpenCart 2.0.2.0. Убирал обязательные поля при оформлении заказа. Вроде сначала всё нормально работало, заказ оформил, всё получилось, но потом как будто бы слетело. Причём в тот момент слетело, когда оформлял заказ. сначала выдало ошибку на "ШАГ 5" Код: Notice: Undefined index: country_id in /var/www/user44692/data/www/bebang.ru/system/library/tax.php on line 17Notice: Undefined index: zone_id in/var/www/user44692/data/www/bebang.ru/system/library/tax.php on line 17 а затем вверху появилась такая ошибка Код: Notice: Undefined index: country_id in /var/www/user44692/data/www/bebang.ru/system/library/tax.php on line 17Notice: Undefined index: zone_id in /var/www/user44692/data/www/bebang.ru/system/library/tax.php on line 17 Причём суть в том, что заказ оформил после того, как внёс изменения все, всё нормально получилось. Но сейчас знакомый на сайт зашел, говорит, что ошибка при оформлении. Захожу - действительно... Смотрел на америкосовских форумах. Обсуждали там такую проблему. Но понять ничего не удалось. Что-то писали про аккаунты какие-то и что-то подобное... Вот этот форум http://forum.opencart.com/viewtopic.php?f=20&t=45393 А это мой сайт bebang.ru
ну так верните исправления назад. Удалили видимо из шаблона country_id вот и все. Так делать нельзя. Вы поля просто в дисплей-ноне скрывайте и все..
Я пошёл этим путём, но чтобы скрыть выбор страны и региона, необходимо, чтобы они выбирались каким-то образом автоматически. вот страна автоматически стоит Россия, а регион не стоит автоматически. Пробовал осуществить через value, выдало ошибку. Вот часть кода: Код: <div class="form-group required"> <label class="control-label" for="input-payment-country"><?php echo $entry_country; ?></label> <select name="country_id" id="input-payment-country" class="form-control"> <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> </div> <div class="form-group required"> <label class="control-label" for="input-payment-zone"><?php echo $entry_zone; ?></label> <select name="zone_id" id="input-payment-zone" class="form-control"> <!--Начинается та часть, которую я добавил--> <option value=""><?php echo $text_select; ?></option> <?php foreach ($zones) { ?> <?php if ($zone['zone_id'] == $zone_id) { ?> <option value="<?php echo $zone['zone_id']; ?>" selected="selected"><?php echo $zone['name']; ?></option> <?php } else { ?> <option value="<?php echo $zone['zone_id']; ?>"><?php echo $zone['name']; ?></option> <?php } ?> <?php } ?> <!--Оканчивается та часть, которую я добавил--> </select> </div>
Решил! Заменить это Код: html = '<option value=""><?php echo $text_select; ?></option>'; if (json['zone'] && json['zone'] != '') { for (i = 0; i < json['zone'].length; i++) { html += '<option value="' + json['zone'][i]['zone_id'] + '"'; if (json['zone'][i]['zone_id'] == '<?php echo $zone_id; ?>') { html += ' selected="selected"'; } html += '>' + json['zone'][i]['name'] + '</option>'; } } else { html += '<option value="0" selected="selected"><?php echo $text_none; ?></option>'; } На это Код: html = ''; if (json['zone'] && json['zone'] != '') { for (i = 0; i < json['zone'].length; i++) { html += '<option value="' + json['zone'][i]['zone_id'] + '"'; if (json['zone'][i]['zone_id'] == '<?php echo $zone_id; ?>') { html += ' selected="selected"'; } html += '>' + json['zone'][i]['name'] + '</option>'; } } else { html += '<option value="0" selected="selected"><?php echo $text_none; ?></option>'; }
Я пытаюсь повторить задумку @olegianni , но что-то слабо получается - PHP совсем не знаю, как говорится "читаю со словарем". Но ОЧЕНЬ хочу научиться, разумеется, это лучше всего делать на практике. Помогите, пожалуйста, понять. Мне НЕ нужен готовый код, мне нужно объяснение, если не трудно, ну и подсказки... Итак, что требуется: в выпадающем списке регионов принудительно задать нужный, чтобы или скрыть потом это поле или предоставить пользователю возможность менять уже заданный регион. Спойлер: Есть, конечно, вариант... Да-да, я понимаю, что скрыть можно,заменив select на inputtype="text" и принудительно указав значение, но это ведь слишком просто и ничему я не научусь... В файле /catalog/view/theme/default/template/checkout/guest.tpl изначальный код такой: Код: <div class="form-group required"> <label class="control-label" for="input-payment-zone"><?php echo $entry_zone; ?></label> <select name="zone_id" id="input-payment-zone" class="form-control"> </select> </div> В нем не хватает тега <option> c опцией selected, чтобы принудительно выбрать регион. Что задумал @olegianni , как я это понимаю. Он скопировал образец кода принудительного выбора страны (чуть выше в том же файле) и все переменные страны ($country) заменил на переменные зоны ($zone). Так? Это, похоже, не заработало и он меняет код (уж не знаю, на основании чего он его менял, возможно, гуглил) на джаву... которую потом правит во втором посте... Вопрос: Можно ли тут обойтись без JSON и почему не заработал первый код? Переменная есть не $zone, а $zone_info, но ведь оператор присваивания должен был сработать, нет? Нужно расписать построчно, как я понимаю действие этого куска кода? Я, правда, совсем новичок в PHP, но читать, сравнивать и пробовать я умею, просто прошу чуток помочь и подсказать. Спойлер: Дополнение Если этот вопрос выходит за рамки данной темы, прошу перенести в отдельную тему "Научите девушку кодить" в разделе "Обо всем".
как вариант. В настройках магазина, во вкладке Локализация выставляем нужный регион. Затем в файле \catalog\controller\checkout\guest.php меняем строку PHP: $data['zone_id'] = ''; на эту PHP: $data['zone_id'] = $this->config->get('config_zone_id'); ну или вручную задаем код региона.
@Ravilr , спасибо огромное, все без лишних сложностей... Но это просто "как вариант"? (Себе уже быстренько сделала и записала, где и зачем правила файл). А если "поколдовать", можно обойтись без правки контроллера? Через этот злополучный шаблон, не? Или что-то мешает такой реализации? Хочется понять, в чем ошибка простого копирования по образцу страны.
В коде выше нужно понять так Код: if (json['zone'][i]['zone_id'] == '53') { html += ' selected="selected"'; } Где 53 номер региона
Заменял и задавал регион, но все равно остается все без изменения guest.tpl guest.php Пробовал также совет от olegianni, но там в его случае просто убирает из списка "выберите" и выставляет первый регион из списка, мне же нужно выставить конкретный. Надеюсь сможете что-нибудь предложить, заранее спасибо.
У вас шаблон не стандартный, потому и стандартные методы работать не будут. Но изменения в контроллере в теории должны были помочь при условии что все же область назначена в админке магазина. Ну и в конце концов, всегда можно купить модуль оформления заказа за 450р. который сэкономит кучу времени. http://shop.opencart-russia.ru/rybrikator/rybrika-bistrii-oformlenie/