Это популярное сообщение. АлексейК Опубликовано: апреля 4, 2016 Это популярное сообщение. Жалоба Поделиться Опубликовано: апреля 4, 2016 Товарищи! Мучаюсь третий день с переводом магазина на HTTPS. CMS OpenCart 2.2.0.0. Сертификат получил и на хостинг его залил. Тут все получилось без проблем. По тех.условиям хостинга добавил в шапку .htaccess строки RewriteCond %{HTTP:X-Forwarded-Protocol} !=https RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L] Сам .htaccess получился такой (настраиваю так сказать в песочнице, .htaccess чистый с установки) RewriteCond %{HTTP:X-Forwarded-Protocol} !=https RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L] Options +FollowSymlinks Options -Indexes <FilesMatch "(?i)((\.tpl|\.ini|\.log|(?<!robots)\.txt))"> Order deny,allow Deny from all </FilesMatch> RewriteEngine On RewriteBase / RewriteRule ^sitemap.xml$ index.php?route=feed/google_sitemap [L] RewriteRule ^googlebase.xml$ index.php?route=feed/google_base [L] RewriteRule ^system/download/(.*) index.php?route=error/not_found [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_URI} !.*\.(ico|gif|jpg|jpeg|png|js|css) RewriteRule ^([^?]*) index.php?_route_=$1 [L,QSA] В конфигах согласно тех.условиях OpenCart прописал изменения да HTTPS_SERVER <?php // HTTP define('HTTP_SERVER', 'http://shop.ru/'); // HTTPS define('HTTPS_SERVER', 'https://shop.ru/'); и <?php // HTTP define('HTTP_SERVER', 'http://shop.ru/admin/'); define('HTTP_CATALOG', 'http://shop.ru/'); // HTTPS define('HTTPS_SERVER', 'https://shop.ru/admin/'); define('HTTPS_CATALOG', 'https://shop.ru/'); соответственно. В настройках магазина включил "Использовать SSL". Казалось бы на этом все приключения должны закончиться. Но не тут то было. Сам магазин и админка открываются по HTTPS. Но 1. В самом магазине все внутренние ссылки остались по HTTP. По совету старших товарищей в /system/library/request.php дописал public function is_ssl() { if ( isset($_SERVER['HTTP_SSL']) ) { if ( 'on' == strtolower($_SERVER['HTTP_SSL']) ) return true; if ( '1' == $_SERVER['HTTP_SSL'] ) return true; } elseif ( isset($_SERVER['HTTPS']) ) { if ( 'on' == strtolower($_SERVER['HTTPS']) ) return true; if ( '1' == $_SERVER['HTTPS'] ) return true; } elseif ( isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && ( 'https' == strtolower($_SERVER['HTTP_X_FORWARDED_PROTO']) ) ) { return true; } elseif ( isset($_SERVER['SERVER_PORT']) && ( '443' == $_SERVER['SERVER_PORT'] ) ) { return true; } elseif ( isset($_SERVER['HTTP_X_FORWARDED_PORT']) && ( '443' == $_SERVER['HTTP_X_FORWARDED_PORT'] ) ) { return true; } return false; } а в /system/library/url.php public function is_https() { return preg_match('/https:\/\//', $this->ssl); } Модификаторы обновил, кэш удалил - ничего не изменилось. 2. Не могу зайти в админку. Страница авторизации открывается, после ввода логина/пароля без каких-либо сообщений об ошибке и т.д. вход в админку не происходит, и собственно отображается стандартное окно авторизации. Что делать и как быть не знаю. Перечитал кучу форумов, решения найти не могу!!! ПОМОГИТЕ!!! alexoz14 1 Цитата Ссылка на комментарий Поделиться на других сайтах Больше вариантов поделиться...
АлексейК Опубликовано: апреля 4, 2016 Автор Жалоба Поделиться Опубликовано: апреля 4, 2016 5 минут назад, Yoda сказал: RewriteCond %{HTTP:X-Forwarded-Protocol} !=https RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L] Для начала попробуйте это перенести в самый низ Перенес. system/storage/cache очистил. Ничего не изменилось. Цитата Ссылка на комментарий Поделиться на других сайтах Больше вариантов поделиться...
АлексейК Опубликовано: апреля 4, 2016 Автор Жалоба Поделиться Опубликовано: апреля 4, 2016 Такое ощущение, что MySQL отвалился от магазина. Админка Только что, Yoda сказал: По всем признакам - у вас проблема не в сертификате, а в том что, основное зеркало не соответсвует записи в конфиге. Попробуйте добавить www к адресам. Добавил. <?php // HTTP define('HTTP_SERVER', 'http://www.shop.ru/admin/'); define('HTTP_CATALOG', 'http://www.shop.ru/'); // HTTPS define('HTTPS_SERVER', 'https://www.shop.ru/admin/'); define('HTTPS_CATALOG', 'https://www.shop.ru/'); <?php // HTTP define('HTTP_SERVER', 'http://www.shop.ru/'); // HTTPS define('HTTPS_SERVER', 'https://www.shop.ru/'); Магазин по прежнему открывается в HTTPS нормально. Ссылки так же в коде прописаны как HTTP, а при переходя открываются в HTTPS (ну как и было). А вот админка умерла на стадии входа, браузер не пускает, выдает ошибку SSL, мол "сертификат сервера не соответствует адресу сайта". Цитата Ссылка на комментарий Поделиться на других сайтах Больше вариантов поделиться...
АлексейК Опубликовано: апреля 4, 2016 Автор Жалоба Поделиться Опубликовано: апреля 4, 2016 3 минуты назад, Yoda сказал: И 2.2 - это вы зря! Какую версию рекомендуете? 5 минут назад, Yoda сказал: Попробуйте сделать админку без HTTPS Собственно в конфиге так прописать? <?php // HTTP define('HTTP_SERVER', 'http://shop.ru/admin/'); define('HTTP_CATALOG', 'http://shop.ru/'); // HTTPS define('HTTPS_SERVER', 'http://shop.ru/admin/'); define('HTTPS_CATALOG', 'http://shop.ru/'); CSS отваливается. Далее все так же... Цитата Ссылка на комментарий Поделиться на других сайтах Больше вариантов поделиться...
АлексейК Опубликовано: апреля 4, 2016 Автор Жалоба Поделиться Опубликовано: апреля 4, 2016 Когда коту делать нечего, он ничего не делает А я попробую поставить релиз от 12.01.2016 [ 2.1.0.2.X ] OPENCART.CMS. Попробую на нем настроить все то же самое. Может реально 2.2.0.0. тупит адово. Цитата Ссылка на комментарий Поделиться на других сайтах Больше вариантов поделиться...
Это популярное сообщение. АлексейК Опубликовано: апреля 4, 2016 Автор Это популярное сообщение. Жалоба Поделиться Опубликовано: апреля 4, 2016 Ребятки! Всем спасибо! Все свободны. Поставил ваш релиз все сразу после установки заработало на HTTPS без проблем! Подчеркиваю СРАЗУ! Устанавливал правда сразу с измененным .htaccess. Предыдущий используемый релиз на таких настройках даже стартовать не хотел! А вот это пусть горит в аду! Намаялся я с ней. Сил моих нет. Yoda 1 Цитата Ссылка на комментарий Поделиться на других сайтах Больше вариантов поделиться...
АлексейК Опубликовано: апреля 4, 2016 Автор Жалоба Поделиться Опубликовано: апреля 4, 2016 2 минуты назад, Yoda сказал: Прямо как то звучит как заказушная джинса ) Убрал я ссылку на тот вариант, чтобы так не звучало Не поверите, сколько времени на ту сборку убил. Цитата Ссылка на комментарий Поделиться на других сайтах Больше вариантов поделиться...
АлексейК Опубликовано: апреля 4, 2016 Автор Жалоба Поделиться Опубликовано: апреля 4, 2016 2 минуты назад, Yoda сказал: НЕ НЕ - верните уж пожалуйста!!!! Как скажете. Вернул. Самое печальное, что там еще и "русский" форум! Цитата На американском форуме задаешь вопрос — тебе отвечают на вопрос. На израильском форуме задаешь вопрос — тебе отвечают вопросом на вопрос. На нашем форуме задаешь вопрос — тебе долго и нудно объясняют, какой ты *****. Цитата Ссылка на комментарий Поделиться на других сайтах Больше вариантов поделиться...
АлексейК Опубликовано: апреля 4, 2016 Автор Жалоба Поделиться Опубликовано: апреля 4, 2016 Только что, Yoda сказал: А если вы еще про версию купите - будет вам еще ништяков пачка. Скорее всего и куплю. Сравнил CMS и PRO, различия нашел по модулям. PRO, естественно, интереснее. Но пока на CMS потренируюсь. Сначала хочу все настроить от и до, понять все особенности сборки и т.д. А потом уже в бой! Пока вот уперся в проблему Fatal error: Switch statements may only contain one default clause in /catalog/controller/common/seo_pro.php on line 242 Ищу, что не так сделал) Выключаю SEO PRO - все работает. Включаю - не работает. Цитата Ссылка на комментарий Поделиться на других сайтах Больше вариантов поделиться...
АлексейК Опубликовано: апреля 4, 2016 Автор Жалоба Поделиться Опубликовано: апреля 4, 2016 1 минуту назад, Yoda сказал: У вас php 7.0 Уберите из /catalog/controller/common/seo_pro.php Повторяющийся default: break; Спасибо! В таком виде заработало: //blog case 'blog_category_id': $blog_categories = explode('_', $value); foreach ($blog_categories as $blog_category) { $queries[] = 'blog_category_id=' . $blog_category; } unset($data[$key]); break; //blog Цитата Ссылка на комментарий Поделиться на других сайтах Больше вариантов поделиться...
АлексейК Опубликовано: апреля 13, 2016 Автор Жалоба Поделиться Опубликовано: апреля 13, 2016 Если никто не против, продолжу я эту тему, поскольку от разных людей приходят разные вопросы относительно магазина, и что бы было куда их ткнуть. Вопрос 1: Как и где я получил SSL. SSL для моего магазина по большей части моя блажь, не более. Но тем не менее, я это сделал. Получил я его бесплатно. Что нужно для этого сделать. Во-первых, узнайте, дружит ли Ваш хостер с SSL. Конечно, сейчас дружат практически все на условия подключения выделенного IP. Ну так во, подключил я выделенный IP. Пока на хостинге шел перенос я полез на https://www.startssl.com/. Для работы с этим сайтом не используйте Google Chrome!!! Лучше всего юзать IE. На сайте есть русскоязычний интерфейс, но с весьма убогим переводом. И так (во-вторых)... На сайте жмакаем "Сейчас получить бесплатный сертификат". Затем регистрируемся. Тут вроде все предельно ясно. Да, не смущайтесь, что время от времени сайт вас будет сбрасывать на английский интерфейс, в шапке выбирайте русский и продолжайте. После того, как сертификат установится на ваш компьютер, перезапустите браузер и зайдите на сайт снова. Далее, идете на https://startssl.com/Certificates и выбираете самый бесплатный Из предложенных вариантов нам нужен "Веб-Сервер SSL/TLS Сертификат". Далее в мастере проверки домена, вводим адрес своего магазина, и... Теперь, он вам предложит для валидации выслать код на один из адресов (postmaster@вашмагазин, или hostmaster@вашмагазин, или webmaster@вашмагазин, как вариант, примари-мэйл домена, если сможет его считать). Короче, если этих ящиков у вас нет, создавайте. Как? Это отдельная тема и OC никак не касается. Почитать можно к примеру тут - https://pdd.yandex.ru/domains_add/. Там же мануал. Все! После получения кода подтверждения, введите его на сайте и жмакайте продолжить. Через 4-6 часов ваш основной и промежуточный сертификат будет сгенерирован и доступен для загрузки. Как все это настраивать на хостинге - вопрос в ТП хостера. Вопрос 2: Как перевести магазин на SSL. Живой магазин я не переводил. Пробовал с версией 2.2.0.0 кривой сборки, ничего не получилось. Задача стояла сделать новый магазин (поскольку старый уже весь испоганен кодами). Новый я устанавливал сразу на HTTPS, предварительно внеся правки в .htaccess по ТУ хостера (пример для моего хостера) RewriteCond %{HTTP:X-Forwarded-Protocol} !=https RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L] Магазин сразу встал как надо и без каких-либо проблем. Так, при нормальной сборке и не запоганеном коде, достаточно сделать изменения в конфигах <?php // HTTP define('HTTP_SERVER', 'https://вашмагазин/'); // HTTPS define('HTTPS_SERVER', 'https://вашмагазин/'); и <?php // HTTP define('HTTP_SERVER', 'https://вашмагазин/admin/'); define('HTTP_CATALOG', 'https://вашмагазин/'); // HTTPS define('HTTPS_SERVER', 'https://вашмагазин/admin/'); define('HTTPS_CATALOG', 'https://вашмагазин/'); Повторюсь! Это для нормальной сборки или оригинального движка и с неиспоганеным кодом! С этим все! Цитата Ссылка на комментарий Поделиться на других сайтах Больше вариантов поделиться...
АлексейК Опубликовано: апреля 13, 2016 Автор Жалоба Поделиться Опубликовано: апреля 13, 2016 Вопрос 3: Перекрестные сопутствующие товары. Можно прям пожеланием для будущих сборок. В OpenCart с самого начала присутствовала толи бага, толи фича с перекрестной привязкой товара. Т.е., если к процессору вы рекомендуете термопасту, то автоматически к этой термопасте рекомендуется этот процессор. Не знаю почему до сих пор никого это так не волновало и не волнует, но я считаю это жестью! За сим, не идем покупать платные модули и не ищем фрилансеров а делаем следующее (для версии 2.1.0.2 CMS): Идем по пути /admin/model/catalog/product.php и ищем участок кода: if (isset($data['product_related'])) { foreach ($data['product_related'] as $related_id) { $this->db->query("DELETE FROM " . DB_PREFIX . "product_related WHERE product_id = '" . (int)$product_id . "' AND related_id = '" . (int)$related_id . "'"); $this->db->query("INSERT INTO " . DB_PREFIX . "product_related SET product_id = '" . (int)$product_id . "', related_id = '" . (int)$related_id . "'"); $this->db->query("DELETE FROM " . DB_PREFIX . "product_related WHERE product_id = '" . (int)$related_id . "' AND related_id = '" . (int)$product_id . "'"); $this->db->query("INSERT INTO " . DB_PREFIX . "product_related SET product_id = '" . (int)$related_id . "', related_id = '" . (int)$product_id . "'"); } } меняем его на if (isset($data['product_related'])) { foreach ($data['product_related'] as $related_id) { $this->db->query("DELETE FROM " . DB_PREFIX . "product_related WHERE product_id = '" . (int)$product_id . "' AND related_id = '" . (int)$related_id . "'"); $this->db->query("INSERT INTO " . DB_PREFIX . "product_related SET product_id = '" . (int)$product_id . "', related_id = '" . (int)$related_id . "'"); //$this->db->query("DELETE FROM " . DB_PREFIX . "product_related WHERE product_id = '" . (int)$related_id . "' AND related_id = '" . (int)$product_id . "'"); //$this->db->query("INSERT INTO " . DB_PREFIX . "product_related SET product_id = '" . (int)$related_id . "', related_id = '" . (int)$product_id . "'"); } } Далее там же ищем участок кода $this->db->query("DELETE FROM " . DB_PREFIX . "product_related WHERE product_id = '" . (int)$product_id . "'"); $this->db->query("DELETE FROM " . DB_PREFIX . "product_related WHERE related_id = '" . (int)$product_id . "'"); if (isset($data['product_related'])) { foreach ($data['product_related'] as $related_id) { $this->db->query("DELETE FROM " . DB_PREFIX . "product_related WHERE product_id = '" . (int)$product_id . "' AND related_id = '" . (int)$related_id . "'"); $this->db->query("INSERT INTO " . DB_PREFIX . "product_related SET product_id = '" . (int)$product_id . "', related_id = '" . (int)$related_id . "'"); $this->db->query("DELETE FROM " . DB_PREFIX . "product_related WHERE product_id = '" . (int)$related_id . "' AND related_id = '" . (int)$product_id . "'"); $this->db->query("INSERT INTO " . DB_PREFIX . "product_related SET product_id = '" . (int)$related_id . "', related_id = '" . (int)$product_id . "'"); } } и меняем его на $this->db->query("DELETE FROM " . DB_PREFIX . "product_related WHERE product_id = '" . (int)$product_id . "'"); //$this->db->query("DELETE FROM " . DB_PREFIX . "product_related WHERE related_id = '" . (int)$product_id . "'"); if (isset($data['product_related'])) { foreach ($data['product_related'] as $related_id) { $this->db->query("DELETE FROM " . DB_PREFIX . "product_related WHERE product_id = '" . (int)$product_id . "' AND related_id = '" . (int)$related_id . "'"); $this->db->query("INSERT INTO " . DB_PREFIX . "product_related SET product_id = '" . (int)$product_id . "', related_id = '" . (int)$related_id . "'"); //$this->db->query("DELETE FROM " . DB_PREFIX . "product_related WHERE product_id = '" . (int)$related_id . "' AND related_id = '" . (int)$product_id . "'"); //$this->db->query("INSERT INTO " . DB_PREFIX . "product_related SET product_id = '" . (int)$related_id . "', related_id = '" . (int)$product_id . "'"); } } Последнее что делаем, ищем такой участок $this->db->query("DELETE FROM " . DB_PREFIX . "product_related WHERE product_id = '" . (int)$product_id . "'"); $this->db->query("DELETE FROM " . DB_PREFIX . "product_related WHERE related_id = '" . (int)$product_id . "'"); $this->db->query("DELETE FROM " . DB_PREFIX . "product_related_article WHERE product_id = '" . (int)$product_id . "'"); и меняем на $this->db->query("DELETE FROM " . DB_PREFIX . "product_related WHERE product_id = '" . (int)$product_id . "'"); //$this->db->query("DELETE FROM " . DB_PREFIX . "product_related WHERE related_id = '" . (int)$product_id . "'"); $this->db->query("DELETE FROM " . DB_PREFIX . "product_related_article WHERE product_id = '" . (int)$product_id . "'"); С кодом все! Кинулись проверять на работу? Не заработало? Не тут то было... С данного момента все привязки будут идти без перекрестия, а вот все что было раньше придется перепривязывать. Жизнь - боль! Другого варианта решения я не нашел. Если Вы только собираете магазинчик, то делайте это сразу. p.s.: та реализация, которая есть в модуле по умолчанию, подходит для "Аналогичных товаров", для "Рекомендуемых товаров" - с натяжкой. А вот для аксесов и доп.услуг к товарам - решение выше. Цитата Ссылка на комментарий Поделиться на других сайтах Больше вариантов поделиться...
RHCk Опубликовано: апреля 13, 2016 Жалоба Поделиться Опубликовано: апреля 13, 2016 13 минуты назад, АлексейК сказал: Для работы с этим сайтом не используйте Google Chrome!!! Можно об этом подробнее? Цитата Ссылка на комментарий Поделиться на других сайтах Больше вариантов поделиться...
АлексейК Опубликовано: апреля 13, 2016 Автор Жалоба Поделиться Опубликовано: апреля 13, 2016 Только что, RHCk сказал: Можно об этом подробнее? Можно! Когда вы регистрируетесь, StartSSL генерирует сертификат на вход, который должен установиться на Ваш компьютер. Здесь нет привычных логинов/паролей. Так вот даже на чистый Chrome в автоматическом режиме он вставать не хочет. Пляски с бубном, думаю, ни к чему. Цитата Ссылка на комментарий Поделиться на других сайтах Больше вариантов поделиться...
RHCk Опубликовано: апреля 13, 2016 Жалоба Поделиться Опубликовано: апреля 13, 2016 Браузер - SRware Iron (аналог Chrome без следящей за действиями ерунды), думаю отличий в меню минимум. ОС - Server 2012 R2 (окно импорта сертификатов может незначительно отличаться) Цитата Ссылка на комментарий Поделиться на других сайтах Больше вариантов поделиться...
АлексейК Опубликовано: апреля 13, 2016 Автор Жалоба Поделиться Опубликовано: апреля 13, 2016 Вопрос 4: Упросить простую форму заказа! На деле форма "оформление заказа" и так предельно проста. Взрывает мозг людям только "Адрес 1" и "Адрес 2". Данные поля являются по факту дословным переводом и у нас они в целом не приняты. Проще всего в соответствующих /catalog/language/russian/.php поменять "Адрес 1" на "Улица", а "Адрес 2" на "Дом, квартира". Кому этого мало (мне мало в виду покупательского контингента и особенностей магазина), можно делать следующее... 4.1. Убираем "Способ оформления заказа". Здесь не будем спорить, хорошо или плохо предлагать пользователю зарегистрироваться, у каждого на этот счет свое мнение. Идем в /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"> и второму "диву" добавляем ситль style="display:none;" т.е. получаем <div class="panel-group" id="accordion"> <div class="panel panel-default" style="display:none;"> Собственно все поля, которые считаете ненужными (ИМХО - факс, компания, адрес 2) так же скрываем стилями style="display:none;" Если есть потребность скрыть обязательное поле, то туда приклеиваем значение ввода, к примеру для "фамилии" <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> т.е. вместо value="<?php echo $lastname; ?> мы определили фамилию Петров value="Петров" Делая такие замены, помните, что все это будет сыпаться клиенту в почту в подтверждение заказа, если Вы не поменяете форму письма в соответствующих .tpl !!! Прим.: Фамилию бы я не стал трогать, а вот поле "Почтовый индекс" (input-payment-postcode) можно забить нулями, особенно, если Вы не отправляете клиентам товары по почте. Поскольку 90% (на мой взгляд) владельце магазинов на OC не работают дальше своей страны, в частности, мы дальше РФ, то уберем лишнее действие пользователя. Ищем: <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" style="display:none;"> <label class="control-label" for="input-payment-country"><?php echo $entry_country; ?></label> <select name="country_id" id="input-payment-country" class="form-control" style="display:none;"> <option value="176"></option> </select> <script> $('document').ready(function(){$("#input-payment-country").trigger('change');}); </script> </div> где 176 - это ID РФ по умолчанию в SQL. Проверить его или найти код своей страны можно в таблице вашпрефикс__country. Скрипт ниже помогает сохранить выбор региона. Закрытие типа <input type="text" value="176" name="country_id" id="input-payment-country" class="form-control"> убьет возможность выбора региона. Если Вы работает в пределах одного региона, то можно закрыть и этим инпутом <div class="form-group required" style="display:none;"> <label class="control-label" for="input-payment-country"><?php echo $entry_country; ?></label> <input type="text" value="176" name="country_id" id="input-payment-country" class="form-control"> </div> Регион (input-payment-zone) убивается напрочь аналогично. Если требуется все-таки оставить выбор региона, то в <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> ничего не меняем, а вот дальше в /catalog/view/theme/default/template/checkout/guest.tpl ищем if (json['zone'][i]['zone_id'] == '<?php echo $zone_id; ?>') { html += ' selected="selected"'; } и меняем на if (json['zone'][i]['zone_id'] == 2761) { html += ' selected="selected"'; } 2761 - ID Московской области, по моей специфике, заказы больше идут оттуда. Вы можете поставить свой регион, ID регионов в SQL в вашпрефикс_zone Опять же не понимаю смысловой нагрузки "Платежный адрес" и "Адрес доставки", точнее как, понимаю, но в нашей стране и при работе только с физиками это лишняя путаница. Так же убиваем это поле. Там же в guest.tpl ищем <input type="checkbox" name="shipping_address" value="1" checked="checked" /> <?php } else { ?> <input type="checkbox" name="shipping_address" value="1" /> и меняем на <input type="checkbox" name="shipping_address" value="1" checked="checked" /> <?php } else { ?> <input type="checkbox" name="shipping_address" value="1" checked="checked"/> Шаг с адресом доставки из батареи так же убираем стилями. To /catalog/view/theme/default/template/checkout/checkout.tpl и лепим вот так в $shipping_required <?php if ($shipping_required) { ?> <?php if (!$logged) { ?> <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> <div class="panel panel-default"> <div class="panel-heading"> <h4 class="panel-title"><?php echo $text_checkout_shipping_method; ?></h4> </div> <div class="panel-collapse collapse" id="collapse-shipping-method"> <div class="panel-body"></div> </div> </div> <?php } else { ?> <div class="panel panel-default"> <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> <div class="panel panel-default"> <div class="panel-heading"> <h4 class="panel-title"><?php echo $text_checkout_shipping_method; ?></h4> </div> <div class="panel-collapse collapse" id="collapse-shipping-method"> <div class="panel-body"></div> </div> </div> <?php } ?> <?php } ?> Решение в данном случае "костыльное". Знаете, как сделать лучше, жду. Я пока тут завис. Причина в том, что если пользователь авторизовался, то без php if он встанет на оформлении заказа. У меня есть два магазина, один торгует только по оплате наличными курьеру или на пункте выдачи. Соответственно лишний выбор способа оплаты ни к чему! В голову /catalog/view/theme/default/template/checkout/payment_method.tpl добавляем <script> $(document).ready(function(){ setTimeout(function(){ $('#button-payment-method').trigger('click'); },1000); }); </script> и <?php if ($agree) { ?> <input type="checkbox" name="agree" value="1" checked="checked" /> <?php } else { ?> <input type="checkbox" name="agree" value="1" /> <?php } ?> меняем на <input type="checkbox" name="agree" value="1" checked="checked" /> в батарее (/catalog/view/theme/default/template/checkout/checkout.tpl) закрываем также стилями (это - collapse-payment-method). Ну собственно как-то так... Получается такая картинка...Пример, настройки на старом магазине... Цитата Ссылка на комментарий Поделиться на других сайтах Больше вариантов поделиться...
Это популярное сообщение. АлексейК Опубликовано: апреля 13, 2016 Автор Это популярное сообщение. Жалоба Поделиться Опубликовано: апреля 13, 2016 55 минут назад, RHCk сказал: Браузер - SRware Iron (аналог Chrome без следящей за действиями ерунды), думаю отличий в меню минимум. ОС - Server 2012 R2 (окно импорта сертификатов может незначительно отличаться) Связка Windows 7 Professional 64 и Chrome 49.0.2623.112 m с дефолтными настройками: Amigo 1 Цитата Ссылка на комментарий Поделиться на других сайтах Больше вариантов поделиться...
АлексейК Опубликовано: апреля 13, 2016 Автор Жалоба Поделиться Опубликовано: апреля 13, 2016 Ну и для тех кто забыл... Или не знал... checkout/ - шаблоны страниц Оформления заказа и Корзины покупок cart.tpl – страница Корзины покупок login.tpl – страница Авторизации register.tpl – страница Регистрации checkout.tpl – общий шаблон станицы оформления заказа guest.tpl – шаг, оформление без регистрации guest_shipping.tpl – шаг, ввод данных доставки (при оформлении без регистрации) payment_address.tpl – шаг, ввод личных данных адреса плательщика shipping_address.tpl – шаг, ввод данных нового адреса доставки payment_method.tpl – шаг, выбор способа оплаты shipping_method.tpl – шаг, выбор способа доставки confirm.tpl – шаблон шага подтверждения заказа shipping.tpl – шаблон вывода формы оформления доставки coupon.tpl – шаблон модуля купонов (вывод происходит в на странице корзины) voucher.tpl - шаблон модуля сертификатов (вывод происходит в на странице корзины) reward.tpl - шаблон модуля бонусных баллов (вывод происходит в на странице корзины) account/ - шаблоны страниц Личного кабинета account.tpl – шаблон главной страницы Личного кабинета login.tpl – страница авторизации register.tpl – страница регистрации address_form.tpl – страница формы редактирования адреса address_list.tpl – страница Мои адреса edit.tpl – страница редактирования контактной информации password.tpl – изменение пароля forgotten.tpl – восстановление пароля download.tpl – страница Файлы для скачивания newsletter.tpl – подписка на новости order_info.tpl – информация о заказе order_list.tpl - список заказов recurring_info.tpl – информация о периодическом платеже recurring_list.tpl – список периодических платежей return_form.tpl – форма возврата товара return_info.tpl – информация о возврате return_list.tpl – список возвратов transaction.tpl – страница транзакций reward.tpl – страница бонусных баллов voucher.tpl – подарочные сертификаты wishlist.tpl - закладки Собственно, выше я разобрал ситуацию с гостевым заказом. Зарегистрированные пользователи так же должны пользоваться аналогичной адекватной формой. Все правки делаем по аналогии. Цитата Ссылка на комментарий Поделиться на других сайтах Больше вариантов поделиться...
АлексейК Опубликовано: апреля 13, 2016 Автор Жалоба Поделиться Опубликовано: апреля 13, 2016 Вопрос 5: Семантическая разметка schema.org для товара. Нужна она или нет - многие спорят. Я полагаю, нужна! И так... Идет в catalog\view\theme\default\template\product\product.tpl Далее по порядку меняем: <div class="container"> на <div class="container" itemscope itemtype="http://schema.org/Product"> затем <li><a href="<?php echo $breadcrumb['href']; ?>"><?php echo $breadcrumb['text']; ?></a></li> на <li><a itemprop="url" href="<?php echo $breadcrumb['href']; ?>"><?php echo $breadcrumb['text']; ?></a></li> затем <ul class="thumbnails"> <?php if ($thumb) { ?> <li><a class="thumbnail" href="<?php echo $popup; ?>" title="<?php echo $heading_title; ?>"><img src="<?php echo $thumb; ?>" title="<?php echo $heading_title; ?>" alt="<?php echo $heading_title; ?>" /></a></li> на <ul class="thumbnails"> <?php if ($thumb) { ?> <li><a class="thumbnail" href="<?php echo $popup; ?>" title="<?php echo $heading_title; ?>"><img itemprop="image" src="<?php echo $thumb; ?>" title="<?php echo $heading_title; ?>" alt="<?php echo $heading_title; ?>" /></a></li> затем <div class="tab-pane active" id="tab-description"><?php echo $description; ?></div> на <div itemprop="description" class="tab-pane active" id="tab-description"><?php echo $description; ?></div> затем <h1><?php echo $heading_title; ?></h1> на <h1 itemprop="name"><?php echo $heading_title; ?></h1> затем <li> <h2 itemprop="price"><div itemprop="priceCurrency" content="RUB"><?php echo $price; ?></div></h2> </li> на <li itemprop="offers" itemscope itemtype="http://schema.org/Offer"> <h2 itemprop="price"><div itemprop="priceCurrency" content="RUB"><?php echo $price; ?></div></h2> </li> ну и для полного ажура <li><?php echo $text_model; ?> <?php echo $model; ?></li> на <li><?php echo $text_model; ?> <span itemprop="model"><?php echo $model; ?></span></li> и <?php if ($manufacturer) { ?> <li><?php echo $text_manufacturer; ?> <a href="<?php echo $manufacturers; ?>"><?php echo $manufacturer; ?></a></li> <?php } ?> на <?php if ($manufacturer) { ?> <li><?php echo $text_manufacturer; ?> <a href="<?php echo $manufacturers; ?>"> <span itemprop="brand"><?php echo $manufacturer; ?></span> </a></li> <?php } ?> Всё! Если все правильно сделали, то валидатор ошибок не покажет. Показал ошибки, смотрите, где накосячили! Цитата Ссылка на комментарий Поделиться на других сайтах Больше вариантов поделиться...
АлексейК Опубликовано: апреля 14, 2016 Автор Жалоба Поделиться Опубликовано: апреля 14, 2016 Вопрос 6: Редактирование кнопок соц.сетей. Многих не устраивают запиленные по дефолту социальные кнопки от AddThis. Я их заменил на нужный мне набор от https://tech.yandex.ru/share/. Собственно на тех.яндексе выбираем нужный набор, копируем код и идем в catalog\view\theme\default\template\product\product.tpl. Меняем <!-- AddThis Button BEGIN --> <div class="addthis_toolbox addthis_default_style" data-url="<?php echo $share; ?>"><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a> <a class="addthis_button_tweet"></a> <a class="addthis_button_pinterest_pinit"></a> <a class="addthis_counter addthis_pill_style"></a></div> <script type="text/javascript" src="//s7.addthis.com/js/300/addthis_widget.js#pubid=ra-515eeaf54693130e"></script> <!-- AddThis Button END --> на полученый код. Обновляем модификаторы. Всё! p.s.: по тестам, скорость сайта со скриптом яндекса падает где-то на 1%. Вопрос 7: Тень "блока" при наведении на него. Многие спрашивают, как сделать тень при наведении на блок товара/категории на главной странице. Да, мне этот эффект нравится, поскольку добавляет некой жизни и динамики сайту. Реализовать такую тень просто. Код .product-thumb:hover { box-shadow: 0 0 5px 1px #ddd; } добавляем в catalog/view/theme/default/stylesheet/stylesheet.css Вопрос 8: "Хлебные крошки" расколбашивает в мобильной версии. Есть такая проблема, что на узких экранах хлебные крошки расползаются черт знает как и портят весь вид сайта. Единственный разумный выход из этого я нашел только правкой стилей. @media(max-width: 800px) {.breadcrumb {display:none;}} добавляем в catalog/view/theme/default/stylesheet/stylesheet.css В зависимости от начала возникновения проблем ширину отключения крошек регулируем цифрой (800). Цитата Ссылка на комментарий Поделиться на других сайтах Больше вариантов поделиться...
Это популярное сообщение. evgenylebedevv Опубликовано: октября 17, 2018 Это популярное сообщение. Жалоба Поделиться Опубликовано: октября 17, 2018 Может кому пригодится ответ по заданной теме: В файле admin/view/template/common/login.tpl меняем вот это: <form action="<?php echo $action; ?>" method="post" enctype="multipart/form-data"> На это: <form action="https://сайт.ру/admin/index.php?route=common/login" method="post" enctype="multipart/form-data"> Мне помогло. Сколько ещё сюрпризов ждать от 2.2, или заморочиться и перейти на 2.3? Или может быть какие-то фиксы для неё есть? Mik 1 Цитата Ссылка на комментарий Поделиться на других сайтах Больше вариантов поделиться...
BuslikDrev Опубликовано: октября 17, 2018 Жалоба Поделиться Опубликовано: октября 17, 2018 7 минут назад, evgenylebedevv сказал: Сколько ещё сюрпризов ждать от 2.2, или заморочиться и перейти на 2.3? Лучше перейти на OpenCart.pro 2.3.0.2.5 Цитата Ссылка на комментарий Поделиться на других сайтах Больше вариантов поделиться...
evgenylebedevv Опубликовано: октября 17, 2018 Жалоба Поделиться Опубликовано: октября 17, 2018 14 минуты назад, BuslikDrev сказал: Лучше перейти на OpenCart.pro 2.3.0.2.5 Каким образом это лучше сделать? Цитата Ссылка на комментарий Поделиться на других сайтах Больше вариантов поделиться...
BuslikDrev Опубликовано: октября 17, 2018 Жалоба Поделиться Опубликовано: октября 17, 2018 40 минут назад, evgenylebedevv сказал: Каким образом это лучше сделать? Сделать на втором нерабочем сайте, после адаптации и уверенности в работе - перенести. Цитата Ссылка на комментарий Поделиться на других сайтах Больше вариантов поделиться...
Mik Опубликовано: января 21, 2019 Жалоба Поделиться Опубликовано: января 21, 2019 В 17.10.2018 at 08:17, evgenylebedevv сказал: Может кому пригодится ответ по заданной теме: В файле admin/view/template/common/login.tpl меняем вот это: <form action="<?php echo $action; ?>" method="post" enctype="multipart/form-data"> На это: <form action="https://сайт.ру/admin/index.php?route=common/login" method="post" enctype="multipart/form-data"> Мне помогло. Сколько ещё сюрпризов ждать от 2.2, или заморочиться и перейти на 2.3? Или может быть какие-то фиксы для неё есть? Мне тоже помогло. Спасибо! Админка заработала. Уже и надеялся что то найти по теме читая первую страницу и инструкции не совсем по теме в начале второй. Наткнулся на нужное сообщение можно сказать случайно. Цитата Ссылка на комментарий Поделиться на других сайтах Больше вариантов поделиться...
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете опубликовать сейчас и зарегистрироваться позже. Если у вас есть учётная запись, войдите, чтобы публиковать под своей учётной записью.