Всем привет! Хотите сделать возможность быстрой покупки на opencart 2.0.3.1 без регистрации? Легко! (возможно, в шаблонах более поздних версий что-то изменится, но принцип, надеюсь, всё равно останется прежним). Картинок не будет, но будет много-много кода... (внимательнее!) Итак, вооружаемся Notepad++ и поехали! Делаем "заказ без регистрации" основным по умолчанию: Файл /catalog/view/theme/default/template/checkout/login.tpl Ищем: Код: <div class="radio"> <label> <?php if ($account == 'register') { ?> <input type="radio" name="account" value="register" checked="checked" /> <?php } else { ?> <input type="radio" name="account" value="register" /> <?php } ?> <?php echo $text_register; ?></label> </div> <?php if ($checkout_guest) { ?> <div class="radio"> <label> <?php if ($account == 'guest') { ?> <input type="radio" name="account" value="guest" checked="checked" /> <?php } else { ?> <input type="radio" name="account" value="guest" /> <?php } ?> <?php echo $text_guest; ?></label> </div> и заменяем на Код: <div class="radio"> <label> <?php if ($account == 'register') { ?> <input type="radio" name="account" value="register" /> <?php } else { ?> <input type="radio" name="account" value="register" /> <?php } ?> <?php echo $text_register; ?></label> </div> <?php if ($checkout_guest) { ?> <div class="radio"> <label> <?php if ($account == 'guest') { ?> <input type="radio" name="account" value="guest" checked="checked" /> <?php } else { ?> <input type="radio" name="account" value="guest" checked="checked" /> <?php } ?> <?php echo $text_guest; ?></label> </div> Готово. Далее. Если вы хотите СОВСЕМ убрать возможность регистрации из формы оформления заказа, после этого в начало ЭТОГО же файла добавляем в самое начало: Код: <script> $(document).ready(function(){ setTimeout(function(){ $('#button-account').trigger('click'); },1000); }); </script> а в файле /catalog/view/theme/default/template/checkout/checkout.tpl находим: Код: <div class="panel-group" id="accordion"> <div class="panel panel-default"> и меняем на: Код: <div class="panel-group" id="accordion"> <div class="panel panel-default" style="display:none;"> Этим самым первый шаг, дающий возможность регистрации в форме оформления заказа, будет скрыт. Далее: Открываем файл: /catalog/view/theme/default/template/checkout/guest.tpl Обрабатываем поле "Имя" (если хотите, можете оставить, как есть и тогда гость должен будет указать какое-то имя) Ищем: Код: <div class="form-group required"> <label class="control-label" for="input-payment-firstname"><?php echo $entry_firstname; ?></label> <input type="text" name="firstname" value="<?php echo $firstname; ?>" placeholder="<?php echo $entry_firstname; ?>" id="input-payment-firstname" class="form-control" /> </div> Меняем на: Код: <div class="form-group required" style="display:none;"> <label class="control-label" for="input-payment-firstname"><?php echo $entry_firstname; ?></label> <input type="text" name="firstname" value="Гость" placeholder="<?php echo $entry_firstname; ?>" id="input-payment-firstname" class="form-control" /> </div> style="display:none;" скроет поле, а значение, указанное в value позволит пройти проверку "обязательному" полю. Далее так же поступаем с фамилией Код: <div class="form-group required"> <label class="control-label" for="input-payment-lastname"><?php echo $entry_lastname; ?></label> <input type="text" name="lastname" value="<?php echo $lastname; ?>" placeholder="<?php echo $entry_lastname; ?>" id="input-payment-lastname" class="form-control" /> </div> меняем на: Код: <div class="form-group required" style="display:none;"> <label class="control-label" for="input-payment-lastname"><?php echo $entry_lastname; ?></label> <input type="text" name="lastname" value="Фамилия не указана" placeholder="<?php echo $entry_lastname; ?>" id="input-payment-lastname" class="form-control" /> </div> и забываем про него. Следующие e-mail и телефон, давайте их оставим? Переходим к факсу. Тут просто: Есть: Код: <div class="form-group"> <label class="control-label" for="input-payment-fax"><?php echo $entry_fax; ?></label> <input type="text" name="fax" value="<?php echo $fax; ?>" placeholder="<?php echo $entry_fax; ?>" id="input-payment-fax" class="form-control" /> </div> добавим всего одно слово hide после класса и поле скрыто: Код: <div class="form-group hide"> <label class="control-label" for="input-payment-fax"><?php echo $entry_fax; ?></label> <input type="text" name="fax" value="<?php echo $fax; ?>" placeholder="<?php echo $entry_fax; ?>" id="input-payment-fax" class="form-control" /> </div> Справа у нас куча обязательных полей, заполним их за посетителя и удалим необязательные: Компания (скрываем): Код: <div class="form-group"> <label class="control-label" for="input-payment-company"><?php echo $entry_company; ?></label> <input type="text" name="company" value="<?php echo $company; ?>" placeholder="<?php echo $entry_company; ?>" id="input-payment-company" class="form-control" /> </div> меняем на Код: <div class="form-group hide"> <label class="control-label" for="input-payment-company"><?php echo $entry_company; ?></label> <input type="text" name="company" value="<?php echo $company; ?>" placeholder="<?php echo $entry_company; ?>" id="input-payment-company" class="form-control" /> </div> Адрес 2 (скрываем) Код: <div class="form-group"> <label class="control-label" for="input-payment-address-2"><?php echo $entry_address_2; ?></label> <input type="text" name="address_2" value="<?php echo $address_2; ?>" placeholder="<?php echo $entry_address_2; ?>" id="input-payment-address-2" class="form-control" /> </div> Меняем на: Код: <div class="form-group hide"> <label class="control-label" for="input-payment-address-2"><?php echo $entry_address_2; ?></label> <input type="text" name="address_2" value="<?php echo $address_2; ?>" placeholder="<?php echo $entry_address_2; ?>" id="input-payment-address-2" class="form-control" /> </div> Адрес 1 (если он вам не нужен) не просто скрываем, а обязательно меняем значение атрибута value на что-то, что подскажет вам фантазия. Вместо: Код: <div class="form-group required"> <label class="control-label" for="input-payment-address-1"><?php echo $entry_address_1; ?></label> <input type="text" name="address_1" value="<?php echo $address_1; ?>" placeholder="<?php echo $entry_address_1; ?>" id="input-payment-address-1" class="form-control" /> </div> я сделала так: Код: <div class="form-group required"> <label class="control-label" for="input-payment-address-1"><?php echo $entry_address_1; ?></label> <input type="text" name="address_1" value="Введите адрес или оставьте как есть" placeholder="<?php echo $entry_address_1; ?>" id="input-payment-address-1" class="form-control" /> </div> То есть я его оставила, но сама заполнила форму ответа и посетитель сможет этого уже не делать. Город и индекс тоже скрываем, если надо. Город: Код: <div class="form-group required"> <label class="control-label" for="input-payment-city"><?php echo $entry_city; ?></label> <input type="text" name="city" value="<?php echo $city; ?>" placeholder="<?php echo $entry_city; ?>" id="input-payment-city" class="form-control" /> </div> заменим на: Код: <div class="form-group required" style="display:none;"> <label class="control-label" for="input-payment-city"><?php echo $entry_city; ?></label> <input type="text" name="city" value="Не указан" placeholder="<?php echo $entry_city; ?>" id="input-payment-city" class="form-control" /> </div> Индекс: Код: <div class="form-group required"> <label class="control-label" for="input-payment-postcode"><?php echo $entry_postcode; ?></label> <input type="text" name="postcode" value="<?php echo $postcode; ?>" placeholder="<?php echo $entry_postcode; ?>" id="input-payment-postcode" class="form-control" /> </div> на Код: <div class="form-group required" style="display:none;"> <label class="control-label" for="input-payment-postcode"><?php echo $entry_postcode; ?></label> <input type="text" name="postcode" value="000000" placeholder="<?php echo $entry_postcode; ?>" id="input-payment-postcode" class="form-control" /> </div> Страну и регион я оставила для симметричности формы (ну женщина же!)... Если хотите, про скрытие региона почитайте тут: Оформление заказа, Шаг 5 (там описаны два метода). Что осталось? Сменить надписи... Легко! Идем в файл /catalog/language/russian/checkout/checkout.php и правим там что и как хотим... Я просто убрала "Шаги", оставив названия. Всё? Вопросов по быстрой форме заказа в опенкарт БЕЗ регистрации больше быть не должно... Один полезный совет для тех, кто дочитал до конца. НЕ правьте все это на дефолтном шаблоне, создайте свой (как это сделать, написано тут: Руководство дизайнера) и тогда, если что-то пойдет не так, не будет паники, а можно будет просто взять и создать еще один новый шаблон. И да, бекапы перед внесением какиx-то серьезных обновлений нужно делать не только на хостинге, но и на локалке. Если вы цените свой труд, конечно Всем удачи! Спойлер: Об авторстве На авторство метода не претендую, просто собрала по разным источникам все советы, проверила на своем магазине и оформила в виде единой темы, чтобы другим не приходилось искать и додумывать.
Здравствуйте. Подскажите, пжл, в чем может быть проблема? Выполнил все изменения и в итоге поверх страницы выскакивает окно с след надписью: " Not Found Not Found <!DOCTYPE html> <!--[if IE]><![endif]--> <!--[if IE 8 ]><html dir="ltr" lang="ru" class="ie8"><![endif]--> <!--[if IE 9 ]><html dir="ltr" lang="ru" class="ie9"><![endif]--> <!--[if (gt IE 9)|!(IE)]><!--> <html dir="ltr" lang="ru"> <!--<![endif]--> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>Запрашиваемая страница не найдена!</title> <base href="http://localhost/ocart/" /> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <link href="http://localhost/ocart/image/catalog/cart.png" rel="icon" /> <script src="catalog/view/javascript/jquery/jquery-2.1.1.min.js" type="text/javascript"></script> <link href="catalog/view/javascript/bootstrap/css/bootstrap.min.css" rel="stylesheet" media="screen" /> <script src="catalog/view/javascript/bootstrap/js/bootstrap.min.js" type="text/javascript"></script> <link href="catalog/view/javascript/font-awesome/css/font-awesome.min.css" rel="stylesheet" type="text/css" /> <link href="//fonts.googleapis.com/css?family=Open+Sans:400,400i,300,700" rel="stylesheet" type="text/css" /> <link href="catalog/view/theme/default/stylesheet/stylesheet.css" rel="stylesheet"> <script src="catalog/view/javascript/common.js" type="text/javascript"></script> ..."
Мммм... Что-то Вы где-то не так изменили. С чего бы странице пропадать? Верните бекап на место и попробуйте заново, только очень внимательно. У меня этот способ и на локалке работал.
Я все на локалке и делаю сейчас. Точнее сказать учусь - это первый мой магазин. Выше указанные шаги сделал и меня из заказа ушел только первый шаг, остальные пять остались и неактивные. Попробую сделать бекап и повторить. Позже отпишу что выйдет
Очень интересная реализация с заполнением полей за пользователя, спасибо! Подскажите пожалуйста как сделать так, что бы пропустить и автоматически отметить за пользователя поля в способе доставки и способе оплаты и оставить только подтверждение заказа.
Zlata Jesen, спасибо за статью. А не подскажете можно ли убрать звездочки с полей (сделать не обязательными для заполнения? или это уже совсем другая статья?
Доставка пропускается отключением всех возможных методов доставки и проставлением в товаре радиокнопки "доставка не требуется", а вот по оплате... Я изменила один из шаблонов под себя (банковский перевод) и вписала свою инструкцию. Где-то как-то так: http://forum.opencart-russia.ru/thr...olej-pri-redaktirovanii-zakaza-i-klienta.1495
Еще вариант кому может по душе: Я отправляю только по Украине и это видно для любого посетителя. (тем кто отправляет в других странах тоже может пригодиться с вариантами) Расчет по регионам мне не нужен, потому я в админке отвязал магазин от всех областей, удалил регионы,области всех стран, а потом и все страны кроме Украины. Таким образом стало не обязательным заполнение страны и области. А затем скрыл их из формы, как подсказывает Zlata с помощью hide: PHP: <div class="form-group hide"> <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 hide"> <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> Потом поправил языковой файл, изменив слов "Адрес" на "Адрес или склад Новой Почты" а "Город" на "Город, индекс для Укрпочты" Может не идеально вышло, но на 2 строки меньше в форме
оформите пожалуйста как положено http://forum.opencart-russia.ru/threads/rekomendacii-po-oformleniju-koda-i-voprosov.460/
Есть вопрос. Если покупатель хочет зарегистрироваться, то ему тоже приходится пройти 7 кругов ада. Начал решать эту проблему. на шаге "Платежная информация" скрыл чекбокс "Адрес доставки совпадает с адресом плательщика." с помощью style="display:none" в \catalog\view\theme\default\template\checkout\register.tpl изменил код Код: <div class="checkbox" style="display:none"> <label> <input type="checkbox" name="shipping_address" value="1" checked="checked" /> <?php echo $entry_shipping; ?></label> </div> потом в \catalog\view\theme\default\template\checkout\checkout.tpl тоже добавил style="display:none" в строчках Код: <div class="panel panel-default" style="display:none"> <div class="panel-heading"> <h4 class="panel-title"><?php echo $text_checkout_shipping_address; ?></h4> </div> <div class="panel-collapse collapse" id="collapse-shipping-address"> <div class="panel-body"></div> </div> </div> Шаг Платежная информация скрылся, но кнопку на нем нажать некому. Как скрыть этот шаг имитировав нажатие кнопки или обойти ее нажатие Потом таким же способом нужно избавиться от блока Адрес доставки
Найдите в файле \catalog\view\theme\default\template\checkout\checkout.tpl Строка примерно 379 PHP: success: function(html) { $('#collapse-shipping-address .panel-body').html(html); $('#collapse-shipping-address').parent().find('.panel-heading .panel-title').html('<a href="#collapse-shipping-address" data-toggle="collapse" data-parent="#accordion" class="accordion-toggle"><?php echo $text_checkout_shipping_address; ?> <i class="fa fa-caret-down"></i></a>'); $('a[href=\'#collapse-shipping-address\']').trigger('click'); $('#collapse-shipping-method').parent().find('.panel-heading .panel-title').html('<?php echo $text_checkout_shipping_method; ?>'); $('#collapse-payment-method').parent().find('.panel-heading .panel-title').html('<?php echo $text_checkout_payment_method; ?>'); $('#collapse-checkout-confirm').parent().find('.panel-heading .panel-title').html('<?php echo $text_checkout_confirm; ?>'); }, и перед закрывающейся скобкой }, добавьте PHP: $('#button-shipping-address').trigger('click'); // <-- здесь имитируем клик
Здравствуйте. Все описанное я сделал все хорошо. Отлично все расписано. Теперь не получается обойти шаг способ оплаты. У меня он один я его прописал, как сделать нажатие кнопки и убрать или обойти еще комментарии к оплате. Помогите кто знает, а то никак не выходит. Версия 3.0.2.0.