Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Мультимагазин


Recommended Posts

43 минуты назад, Dotrox сказал:

Оба домена должны быть привязаны к одной директории на сервере, но никаких редиректов между ними быть не должно. Чаще всего это называется алиасом, но зависит от вашей панели.

Честно, наверное я тугодум, но я не понял.:wacko:

Надіслати
Поділитися на інших сайтах


В 03.07.2019 в 18:43, Dotrox сказал:

Зачем?

Вам нужна функция мультимагазина! Просто добавьте второй сайт в админке вместо отдельной копии и всё будет правильно генерироваться.

То есть будет генерироваться для каждого сайта отдельная сайтмап? 

 

6 часов назад, Kalwin сказал:

Честно, наверное я тугодум, но я не понял.:wacko:

Создавайте не поддомен, а псевдоним или алиас. Отдельная вкладка в cpanel в разделе домены.

Без названия.png

Змінено користувачем 00051by
добавление изображения
Надіслати
Поділитися на інших сайтах


Только в результате получаем тот же магазин по новому адресу. Причем все товары в админке не отмечены галками для нового магазина, но доступны по новым УРЛ. Что не так делаю?

Надіслати
Поділитися на інших сайтах


10 минут назад, 00051by сказал:

То есть будет генерироваться для каждого сайта отдельная сайтмап?

Да.

 

1 минуту назад, 00051by сказал:

Причем все товары в админке не отмечены галками для нового магазина, но доступны по новым УРЛ.

Не отмеченные выводится не должны.

 

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

Надіслати
Поділитися на інших сайтах


11 минут назад, 00051by сказал:

В строке браузера https://test1.stroymart.by/  в настройках магазина http://test1.stroymart.by/. Вроде одинаково

Вы правда не видите разницу?

 

Из-за этой разницы у вас второй магазин в базе не находится и грузится на его домене дефолтный (то есть, первый).

Надіслати
Поділитися на інших сайтах


17 минут назад, Dotrox сказал:

Вы правда не видите разницу?

 

Из-за этой разницы у вас второй магазин в базе не находится и грузится на его домене дефолтный (то есть, первый).

вы про http?

Надіслати
Поділитися на інших сайтах


1 час назад, 00051by сказал:

Создавайте не поддомен, а псевдоним или алиас. Отдельная вкладка в cpanel в разделе домены.

Нашел в панели такую функцию, сделал, поддомен удалил. Но псевдоним переправляет на основной домен, как так?

Надіслати
Поділитися на інших сайтах


53 минуты назад, 00051by сказал:

вы про http?

Именно!

 

В базе ссылка хранится с протоколом и он подставляется в соответствии с протоколом запроса. У вас стоит редирект на https, так что в запросах всегда именно https (хотя у поддомена и нет сертификата).

 

49 минут назад, Kalwin сказал:

Но псевдоним переправляет на основной домен, как так?

Если речь о редиректе, надо смотреть ваш .htaccess. Вероятно, там при редиректе на https захардкоден основной домен.

Змінено користувачем Dotrox
Надіслати
Поділитися на інших сайтах


8 часов назад, Dotrox сказал:

Если речь о редиректе, надо смотреть ваш .htaccess. Вероятно, там при редиректе на https захардкоден основной домен.

У меня стандартный .htaccess, в нём нет редиректов.

Спойлер

# 1.To use URL Alias you need to be running apache with mod_rewrite enabled.

# 2. In your opencart directory rename htaccess.txt to .htaccess.

# For any support issues please visit: http://www.opencart.com

Options +FollowSymlinks

# Prevent Directoy listing
Options -Indexes

# Prevent Direct Access to files
<FilesMatch "(?i)((\.tpl|.twig|\.ini|\.log|(?<!robots)\.txt))">
 Require all denied
## For apache 2.2 and older, replace "Require all denied" with these two lines :
# Order deny,allow
# Deny from all
</FilesMatch>

# SEO URL Settings
RewriteEngine On
# If your opencart installation does not run on the main web folder make sure you folder it does run in ie. / becomes /shop/

RewriteBase /
RewriteRule ^sitemap.xml$ index.php?route=extension/feed/google_sitemap [L]
RewriteRule ^googlebase.xml$ index.php?route=extension/feed/google_base [L]
RewriteRule ^system/storage/(.*) 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]

### Additional Settings that may need to be enabled for some servers
### Uncomment the commands by removing the # sign in front of it.
### If you get an "Internal Server Error 500" after enabling any of the following settings, restore the # as this means your host doesn't allow that.

# 1. If your cart only allows you to add one item at a time, it is possible register_globals is on. This may work to disable it:
# php_flag register_globals off

# 2. If your cart has magic quotes enabled, This may work to disable it:
# php_flag magic_quotes_gpc Off

# 3. Set max upload file size. Most hosts will limit this and not allow it to be overridden but you can try
# php_value upload_max_filesize 999M

# 4. set max post size. uncomment this line if you have a lot of product options or are getting errors where forms are not saving all fields
# php_value post_max_size 999M

# 5. set max time script can take. uncomment this line if you have a lot of product options or are getting errors where forms are not saving all fields
# php_value max_execution_time 200

# 6. set max time for input to be recieved. Uncomment this line if you have a lot of product options or are getting errors where forms are not saving all fields
# php_value max_input_time 200

# 7. disable open_basedir limitations
# php_admin_value open_basedir none

 

 

Змінено користувачем Kalwin
Надіслати
Поділитися на інших сайтах


12 часов назад, Dotrox сказал:

Именно!

 

В базе ссылка хранится с протоколом и он подставляется в соответствии с протоколом запроса. У вас стоит редирект на https, так что в запросах всегда именно https (хотя у поддомена и нет сертификата).

 

Если речь о редиректе, надо смотреть ваш .htaccess. Вероятно, там при редиректе на https захардкоден основной домен.

Большое спасибо за помощь! Исправил. Кэш обновился и Все заработало.

Надіслати
Поділитися на інших сайтах


4 часа назад, Kalwin сказал:

У меня стандартный .htaccess, в нём нет редиректов.

  Показать контент


# 1.To use URL Alias you need to be running apache with mod_rewrite enabled.

# 2. In your opencart directory rename htaccess.txt to .htaccess.

# For any support issues please visit: http://www.opencart.com

Options +FollowSymlinks

# Prevent Directoy listing
Options -Indexes

# Prevent Direct Access to files
<FilesMatch "(?i)((\.tpl|.twig|\.ini|\.log|(?<!robots)\.txt))">
 Require all denied
## For apache 2.2 and older, replace "Require all denied" with these two lines :
# Order deny,allow
# Deny from all
</FilesMatch>

# SEO URL Settings
RewriteEngine On
# If your opencart installation does not run on the main web folder make sure you folder it does run in ie. / becomes /shop/

RewriteBase /
RewriteRule ^sitemap.xml$ index.php?route=extension/feed/google_sitemap [L]
RewriteRule ^googlebase.xml$ index.php?route=extension/feed/google_base [L]
RewriteRule ^system/storage/(.*) 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]

### Additional Settings that may need to be enabled for some servers
### Uncomment the commands by removing the # sign in front of it.
### If you get an "Internal Server Error 500" after enabling any of the following settings, restore the # as this means your host doesn't allow that.

# 1. If your cart only allows you to add one item at a time, it is possible register_globals is on. This may work to disable it:
# php_flag register_globals off

# 2. If your cart has magic quotes enabled, This may work to disable it:
# php_flag magic_quotes_gpc Off

# 3. Set max upload file size. Most hosts will limit this and not allow it to be overridden but you can try
# php_value upload_max_filesize 999M

# 4. set max post size. uncomment this line if you have a lot of product options or are getting errors where forms are not saving all fields
# php_value post_max_size 999M

# 5. set max time script can take. uncomment this line if you have a lot of product options or are getting errors where forms are not saving all fields
# php_value max_execution_time 200

# 6. set max time for input to be recieved. Uncomment this line if you have a lot of product options or are getting errors where forms are not saving all fields
# php_value max_input_time 200

# 7. disable open_basedir limitations
# php_admin_value open_basedir none

 

 

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

Надіслати
Поділитися на інших сайтах


1 час назад, 00051by сказал:

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

Хорошо, будем клацать.

Надіслати
Поділитися на інших сайтах


15 часов назад, Kalwin сказал:

У меня стандартный .htaccess, в нём нет редиректов.

Возможно, у вас на хостинге где-то настроено перенаправление.

 

 

10 часов назад, 00051by сказал:

Даже после удаления перенаправления какое-то время выкидывало на основной магазин.

Браузеры кешируют 301-й редирект. Поэтому редиректы надо проверять через анонимное окно браузера (режим инкогнито).

Надіслати
Поділитися на інших сайтах


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

Надіслати
Поділитися на інших сайтах


22 часа назад, 00051by сказал:

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

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

 

Для модулей с собственными моделями это нужно делать отдельно и тут может возникнуть проблема, если у модуля модель закрыта ИонКубом. Но, похоже, шифрование моделей уже вышло из моды, потому что проблем с этим пока не возникало.

Надіслати
Поділитися на інших сайтах


  • 1 month later...
В 23.06.2017 в 13:50, sanya167 сказал:

Всем привет. Как массово можно включить все категории и товары во все созданные магазины? А то 20тыс товаров вручную клацать не вариант)

Спасибо )

 

 

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

Надіслати
Поділитися на інших сайтах


2 часа назад, Tobolskiy сказал:

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

// получаем общий массив всех магазинов в системе
$default_store = array(0 => array('store_id' => 0, 'name' => $this->config->get('config_name').' (Default)'));
$this->load->model('setting/store');
$all_stores = array_merge($this->model_setting_store->getStores(), $default_store);

// очищяем таблицу product_to_store
$this->db->query("TRUNCATE ".DB_PREFIX."product_to_store");

// добавляем каждый товар во все магазины
$all_products = $this->db->query("SELECT product_id FROM " . DB_PREFIX . "product"); // сюда можете дописывать условия выборки нужных вам товаров

foreach ($all_stores as $store) {
 if ($all_products->rows) {
  foreach ($all_products->rows as $product) {
    $this->db->query("INSERT INTO " . DB_PREFIX . "product_to_store SET product_id = '" . (int)$product['product_id'] . "', store_id = '" . (int)$store['store_id'] . "'");
  }
 }
}	

 

  • +1 1
Надіслати
Поділитися на інших сайтах

Так например
 

INSERT INTO `oc_product_to_store` (`product_id`, `store_id`) SELECT `product_id`, 2 FROM `oc_product`;
INSERT INTO `oc_category_to_store` (`category_id`, `store_id`) SELECT `category_id`, 2 FROM `oc_category`;

итд по аналогии.

  • +1 1
Надіслати
Поділитися на інших сайтах

9 минут назад, Pascha сказал:

для НЕхамов пишу так 

Вы адекват? Где я вам нахамил? Вы себе сообщения набиваете что ли? Я вежливо спросил у людей как решить проблему, вменяемые люди уже ответили, вам все скучно. У вас стиль общения такой? Пришли, насрали в топик и свалили. Нафиг вы пишете?

Надіслати
Поділитися на інших сайтах


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

Так например
 


INSERT INTO `oc_product_to_store` (`product_id`, `store_id`) SELECT `product_id`, 2 FROM `oc_product`;
INSERT INTO `oc_category_to_store` (`category_id`, `store_id`) SELECT `category_id`, 2 FROM `oc_category`;

итд по аналогии.

 

благодарю

Надіслати
Поділитися на інших сайтах


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

// получаем общий массив всех магазинов в системе
$default_store = array(0 => array('store_id' => 0, 'name' => $this->config->get('config_name').' (Default)'));
$this->load->model('setting/store');
$all_stores = array_merge($this->model_setting_store->getStores(), $default_store);

// очищяем таблицу product_to_store
$this->db->query("TRUNCATE ".DB_PREFIX."product_to_store");

// добавляем каждый товар во все магазины
$all_products = $this->db->query("SELECT product_id FROM " . DB_PREFIX . "product"); // сюда можете дописывать условия выборки нужных вам товаров

foreach ($all_stores as $store) {
 if ($all_products->rows) {
  foreach ($all_products->rows as $product) {
    $this->db->query("INSERT INTO " . DB_PREFIX . "product_to_store SET product_id = '" . (int)$product['product_id'] . "', store_id = '" . (int)$store['store_id'] . "'");
  }
 }
}	

 

 

спасибо. хотя не очень понял куда этот код вставлять в какой файл

Надіслати
Поділитися на інших сайтах


2 часа назад, OCdevWizard сказал:

// получаем общий массив всех магазинов в системе
$default_store = array(0 => array('store_id' => 0, 'name' => $this->config->get('config_name').' (Default)'));
$this->load->model('setting/store');
$all_stores = array_merge($this->model_setting_store->getStores(), $default_store);

// очищяем таблицу product_to_store
$this->db->query("TRUNCATE ".DB_PREFIX."product_to_store");

// добавляем каждый товар во все магазины
$all_products = $this->db->query("SELECT product_id FROM " . DB_PREFIX . "product"); // сюда можете дописывать условия выборки нужных вам товаров

foreach ($all_stores as $store) {
 if ($all_products->rows) {
  foreach ($all_products->rows as $product) {
    $this->db->query("INSERT INTO " . DB_PREFIX . "product_to_store SET product_id = '" . (int)$product['product_id'] . "', store_id = '" . (int)$store['store_id'] . "'");
  }
 }
}	

 

Плохая идея!

 

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

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

 

 

Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку

×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.