Переход на HTTPS - проблема!


АлексейК
 Поделиться

Рекомендуемые сообщения

5 минут назад, Yoda сказал:

RewriteCond %{HTTP:X-Forwarded-Protocol} !=https
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]

Для начала попробуйте это перенести в самый низ

Перенес. system/storage/cache очистил. Ничего не изменилось.

Ссылка на комментарий
Поделиться на других сайтах

Такое ощущение, что 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, мол "сертификат сервера не соответствует адресу сайта".

Ссылка на комментарий
Поделиться на других сайтах

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 отваливается. Далее все так же...

Ссылка на комментарий
Поделиться на других сайтах

Когда коту делать нечего, он ничего не делает :) А я попробую поставить релиз от 12.01.2016 [ 2.1.0.2.X ] OPENCART.CMS. Попробую на нем настроить все то же самое. Может реально 2.2.0.0. тупит адово. 

Ссылка на комментарий
Поделиться на других сайтах

2 минуты назад, Yoda сказал:

Прямо как то звучит как заказушная джинса )

Убрал я ссылку на тот вариант, чтобы так не звучало :) Не поверите, сколько времени на ту сборку убил.

Ссылка на комментарий
Поделиться на других сайтах

2 минуты назад, Yoda сказал:

НЕ НЕ - верните уж пожалуйста!!!!

Как скажете. Вернул.

Самое печальное, что там еще и "русский" форум! 

Цитата

На американском форуме задаешь вопрос — тебе отвечают на вопрос. На израильском форуме задаешь вопрос — тебе отвечают вопросом на вопрос. На нашем форуме задаешь вопрос — тебе долго и нудно объясняют, какой ты *****.

 

Ссылка на комментарий
Поделиться на других сайтах

Только что, 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 - все работает. Включаю - не работает.

Ссылка на комментарий
Поделиться на других сайтах

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	

 

Ссылка на комментарий
Поделиться на других сайтах

  • 2 недели спустя...

Если никто не против, продолжу я эту тему, поскольку от разных людей приходят разные вопросы относительно магазина, и что бы было куда их ткнуть.

Вопрос 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://вашмагазин/');

Повторюсь! Это для нормальной сборки или оригинального движка и с неиспоганеным кодом!

 

С этим все!

Ссылка на комментарий
Поделиться на других сайтах

Вопрос 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.: та реализация, которая есть в модуле по умолчанию, подходит для "Аналогичных товаров", для "Рекомендуемых товаров" - с натяжкой. А вот для аксесов и доп.услуг к товарам - решение выше.

Ссылка на комментарий
Поделиться на других сайтах

13 минуты назад, АлексейК сказал:

Для работы с этим сайтом не используйте Google Chrome!!!

Можно об этом подробнее?

Ссылка на комментарий
Поделиться на других сайтах

Только что, RHCk сказал:

Можно об этом подробнее?

Можно!

Когда вы регистрируетесь, StartSSL генерирует сертификат на вход, который должен установиться на Ваш компьютер. Здесь нет привычных логинов/паролей. Так вот даже на чистый Chrome в автоматическом режиме он вставать не хочет. Пляски с бубном, думаю, ни к чему. 

Ссылка на комментарий
Поделиться на других сайтах

Браузер - SRware Iron (аналог Chrome без следящей за действиями ерунды), думаю отличий в меню минимум.

ОС - Server 2012 R2 (окно импорта сертификатов может незначительно отличаться)

Pic_1.png

Pic_2.png

Pic_3.png

Pic_4.png

Ссылка на комментарий
Поделиться на других сайтах

Вопрос 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).

 

Ну собственно как-то так... 

 

Получается такая картинка...Пример, настройки на старом магазине...

 

ш2.PNG

ш3.PNG

ш1.PNG

Ссылка на комментарий
Поделиться на других сайтах

Ну и для тех кто забыл... Или не знал...

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 - закладки

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

Ссылка на комментарий
Поделиться на других сайтах

Вопрос 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 } ?>

Всё! Если все правильно сделали, то валидатор ошибок не покажет. Показал ошибки, смотрите, где накосячили!

Ссылка на комментарий
Поделиться на других сайтах

Вопрос 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).

Ссылка на комментарий
Поделиться на других сайтах

  • 2 года спустя...
7 минут назад, evgenylebedevv сказал:

Сколько ещё сюрпризов ждать от 2.2, или заморочиться и перейти на 2.3?

Лучше перейти на OpenCart.pro 2.3.0.2.5

Ссылка на комментарий
Поделиться на других сайтах

14 минуты назад, BuslikDrev сказал:

Лучше перейти на OpenCart.pro 2.3.0.2.5

Каким образом это лучше сделать?

Ссылка на комментарий
Поделиться на других сайтах

40 минут назад, evgenylebedevv сказал:

Каким образом это лучше сделать?

Сделать на втором нерабочем сайте, после адаптации и уверенности в работе - перенести.

Ссылка на комментарий
Поделиться на других сайтах

  • 3 месяца спустя...
В 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? Или может быть какие-то фиксы для неё есть?

Мне тоже помогло. Спасибо!  Админка заработала. Уже и надеялся что то найти по теме читая первую страницу и инструкции не совсем по теме в начале второй. Наткнулся на нужное сообщение можно сказать случайно.

Ссылка на комментарий
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете опубликовать сейчас и зарегистрироваться позже. Если у вас есть учётная запись, войдите, чтобы публиковать под своей учётной записью.

Гость
Ответить в тему...

×   Вы вставили отформатированное содержимое.   Удалить форматирование

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Показать вместо этого как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Нельзя вставлять изображения напрямую. Загрузите или вставьте изображения по URL.

 Поделиться

  • Сейчас на странице   0 пользователей

    • Нет пользователей, просматривающих эту страницу