Jump to content
покупайте без комиссии
Search In
  • More options...
Find results that contain...
Find results in...
  • Sign Up

Мультимагазин на 5 поддоменов. Полноценное решение


Recommended Posts

На оcstore 1.5.4 в прошлом году сделал строительный мультимагазин. Но время идёт, а опенкарт развивается и видоизменяется. Интересно как можно было бы решить подобную задачу, используя новшества версий 2 и 3 движка или иные подходы. Распишу подробно, как поступил я, а вы уже, как говорится, вставьте своих пять копеек. 

 

1)  Для всех магазинов использую одни и те же схемы. Уже не помню, но вроде бы убрал какой-то sql-запрос для обращения к схемам по ИД магазина, т. е. Не стало разделения по принципу: например, common/home только у магазина 1, а product/category только у магазина2, магазина3. Хотя можно было написать sql-запрос, который проставил каждой схеме «галочки» всех созданных магазинов.

 

2) С помощью алиасов в конфигах apache к основному домену мультимагазина site.ru привязал поддомены остальных магазинов shop2.site.ru, shop3.site.ru, shop4.site.ru и т.д.  

В настройках в админке магазина добавил новые магазины и прописал им алиасы из предыдущего пункта

 

3) Создал под  тайтлы, мета-теги, seo товаров отдельные таблицы product_description_shop1,product_description_shop2, product_description_shop3...,product_description_subdomain, связанные с таблицей product по id. Т.е. используются на всех доменах одни и те же товары, но в зависимости от поддомена проставляются свои тайтлы, мета-теги, seo 

4)  Тоже самое сделал для категорий; появились таблицы вида category_description_shopN 

 

5)в config.php поставил константу UNDERDOMAIN, в которую сохраняется subdomain магазина из url. Там прописал такой код  

$url = explode('.',$_SERVER['SERVER_NAME']); 

$underdm =''; 

if (count($url)==3){     

define('UNDER_DOMAIN',$url[0]); 

$underdm = $url[0].'.'; 

} 

 

Вот ещё строки оттуда, которые изменились 

define('HTTP_SERVER', 'http://' .$underdm .'site.ru/'); 

define('HTTP_IMAGE', 'http://' .$underdm .'site.ru/image/'); 

define('HTTP_ADMIN', 'http://' .$underdm .'site.ru/admin-rd/'); 


 

// HTTPS 

define('HTTPS_SERVER', 'http://' .$underdm .'site.ru/'); 

define('HTTPS_IMAGE', 'http://' .$underdm .'site.ru/image/');

 

Это я сделал, чтобы в sql-запросах на получение инфы о товарах/категориях из БД подставлялся subdomain в качестве суффикса к названию таблиц. Например, 

$suffix = '_'.UNDER_DOMAIN; 

$query= $this->db->query("SELECT * FROM product_description".$suffix ." WHERE product_id = '" .$product_id ."'"); 

 

7) Написал скрипт синхронизации и добавил в админку№2(скопировал файлы admin, изменил конфиг, назначил своих администраторов от новой пользовательской группы). Его задачи:

во-первых,добавить записи  в таблицы product_to_store, category_to_store  - для привязки всех товаров/категорий к поддоменам;

во-вторых, сгенерировать уникальные тайтлы, метатеги, seo в описания товаров/категорий для каждого магазина, подставляя города, регионы в разных склонениях из таблицы store 

 

8) Для установки разных цен, скидок, акций на товары создал таблицы product_discount_shopN, product_special_shopN . Цена прописывается в таблицах product_decrition_shopN . Если цены, скидки, акции не прописаны у какого-то товара, то берутся значения из основного магазина по адресу site.ru. 

Вся эта информация для доменов отправляется в БД из 1С напрямую через sql-запросы один раз в день. 

 

9) Для сохранения всяких дополнительных настроек магазинов (например, ID метрик и счётчиков, склонения городов по падежам и т.п.) я добавил в БД ещё одну таблицу store_option 

 

10) Подгрузку разных телефонов, контактных данных для каждого магазина и выбор города я предоставил модулю geoip. Кстати, этот модуль пришлось допиливать, чтобы показывал правильно город, а то была такая проблема, что при заходе с поисковика или по прямой ссылке, например, при заходе по ссылке piter.site.ru на сайте отображался, например, воронеж, т.е. нарушалось соответствие url и того, что видим в качестве выводимого города.

 

11) Сделал так, чтобы модуль ocfilter корректно фильтровал товары по ценам независимо от того, где их фильтрует пользователь (основной магазин или поддомены). Это пришлось реализовывать, потому что цены для разных магазинов я записал в отдельные таблицы

 

12) Правки кода для реализации полноценного многодоменного мультимагазина я вносил через скрипты vqmod. В основном понадобилось подменять sql-запросы, чтобы в зависимости от поддомена получать разные тайтлы, мета, seo товаров/категорий, цены, скидки,акции, также чтобы правильно фильтровались товары по ценам, ещё кое-где нужно было заменять url страниц c  инфой по доставкам, контактам  

 

14) Сделал под каждый поддомен/магазин отдельные robots.txt(на самом деле это robots.php + директивы htaccess) и sitemaps, чтобы поисковики всё поняли, как надо. В итоге яндексу и гуглу это понравилось, с индексацией проблем не возникло, а трафик и позиции выросли нормально

 

Edited by ladOK
Link to post
Share on other sites
9 минут назад, ladOK сказал:

10) Подгрузку разных телефонов, контактных данных для каждого магазина и выбор города я предоставил модулю geoip. Кстати, этот модуль пришлось допиливать, чтобы показывал правильно город, а то была такая проблема, что при заходе с поисковика или по прямой ссылке, например, при заходе по ссылке piter.site.ru на сайте отображался, например, воронеж, т.е. нарушалось соответствие url и того, что видим в качестве выводимого города.

А можно чуть подробней, что именно допиливать? Эта проблема еще исправлена в текущих версиях модуля?

Link to post
Share on other sites
В 16.08.2018 в 00:15, dexion сказал:

А можно чуть подробней, что именно допиливать? Эта проблема еще исправлена в текущих версиях модуля?

 

я покупал непрофессиональную версию в прошлом году осенью. Исправили или нет не могу сказать, потому что новые версии не скачивал. Но модуль этой редакции обновляется судя по графе Обновлено Четверг в 11:41. Если интересует, то могу покапаться в коде и найти изменения. Но вроде бы после перехода на https эта проблема снова появилась

 

Link to post
Share on other sites
В 16.08.2018 в 04:01, ladOK сказал:

14) Сделал под каждый поддомен/магазин отдельные robots.txt(на самом деле это robots.php + директивы htaccess) и sitemaps, чтобы поисковики всё поняли, как надо. В итоге яндексу и гуглу это понравилось, с индексацией проблем не возникло, а трафик и позиции выросли нормально

А как вы настроили редирект в .htaccess?
У меня после добавления правила  - RewriteRule ^robots.txt$ robots.php - выдает ошибку в Яндекс Вебмастере: Сервер отвечает редиректом на запрос /robots.txt

 

Link to post
Share on other sites

3 часа назад, art2make сказал:

А как вы настроили редирект в .htaccess?
У меня после добавления правила  - RewriteRule ^robots.txt$ robots.php - выдает ошибку в Яндекс Вебмастере: Сервер отвечает редиректом на запрос /robots.txt

 

Вот так отдельно прописывал для каждого поддомена  и самого домена

RewriteCond  %{HTTP_HOST} ^undomain.domain.ru$
Rewriterule ^robots.txt$ robots.php [L]

и проблем не было

Link to post
Share on other sites
  • 3 months later...
В 27.08.2018 в 18:10, ladOK сказал:

 

Edited by bravo14
Link to post
Share on other sites

В 27.08.2018 в 18:10, ladOK сказал:

Вот так отдельно прописывал для каждого поддомена  и самого домена

RewriteCond  %{HTTP_HOST} ^undomain.domain.ru$
Rewriterule ^robots.txt$ robots.php [L]

и проблем не было

На возмездной основе занимаетесь реализацией такого функционала (региональные поддомены по описанной схеме)? 

Link to post
Share on other sites

  • 1 year later...

Тоже вопрос, готовы ли реализовать на возмездной основе? или кто то может сделать? пишите в skype djdryxa.

Link to post
Share on other sites

image.thumb.png.cbfac9176366bb138356d8da22300d96.png

 

Реализовывал на 1 из проектов.

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.