Модуль позволяет публиковать один магазин на нескольких сайтах, при этом для товара и группы товаров задаются свои уникальные значения для каждого сайта.
Группам товаров допускается указание для каждого сайта:
Товарам допускается указание для каждого сайта:
Товары и группы товаров индексируются для соответствующих сайтов с учетом полей, заданных в модуле.
При создании узла структуры магазина на другом сайте его путь должен называться точно также как и на оригинальном сайте. Например, если у вас магазин опубликован как /shop/, то и но другом сайте он должен быть указан как /shop/
Стандартная типовая динамическая страница магазина имеет ограничение на публикацию магазинов только текущего сайта.
Чтобы убрать это ограничение, перейдите Структура сайта → Типовые динамические страницы.
Найдите динамические страницы, которыю будете использовать для магазина и корзины, справа нажмите на пиктограмму в столбце «Параметры».
Отредактируйте опцию «Идентификатор магазина» и в секции SQL-запрос строку:
WHERE `site_id` = '{SITE_ID}' AND `deleted` = 0
замените на:
WHERE `deleted` = 0
далее нажмите сохранить.
Вернитесь в список типовых динамических страниц и отредактируйте саму типовую динамическую страницу магазина, на вкладке «Настройки страницы» замените блок:
if ($Shop_Controller_Show->group) { // … } if ($Shop_Controller_Show->item) { // … }
на один из блоков:
1. Для систем до версии 6.7.9
if ($Shop_Controller_Show->group) { $oShop_Group = Core_Entity::factory('Shop_Group', $Shop_Controller_Show->group); // Получаем данные для текущего сайта $oMultishop_Group_Controller = new Multishop_Group_Controller(); $oMultishop_Group = $oMultishop_Group_Controller->getMultishopGroup(CURRENT_SITE, $Shop_Controller_Show->group); $oSeo_Group = $oMultishop_Group ? $oMultishop_Group : $oShop_Group; $bGroupTitle = $oSeo_Group->seo_title != ''; $bGroupDescription = $oSeo_Group->seo_description != ''; $bGroupKeywords = $oSeo_Group->seo_keywords != ''; if (!$Shop_Controller_Show->item) { $bGroupTitle && Core_Page::instance()->title($oSeo_Group->seo_title); $bGroupDescription && Core_Page::instance()->description($oSeo_Group->seo_description); $bGroupKeywords && Core_Page::instance()->keywords($oSeo_Group->seo_keywords); } do { ($Shop_Controller_Show->item || !$bGroupTitle) && $aTitle[] = $oShop_Group->name; ($Shop_Controller_Show->item || !$bGroupDescription) && $aDescription[] = $oShop_Group->name; ($Shop_Controller_Show->item || !$bGroupKeywords) && $aKeywords[] = $oShop_Group->name; } while($oShop_Group = $oShop_Group->getParent()); } if ($Shop_Controller_Show->item) { $oShop_Item = Core_Entity::factory('Shop_Item', $Shop_Controller_Show->item); // Получаем данные для текущего сайта $oMultishop_Item_Controller = new Multishop_Item_Controller(); $oMultishop_Item = $oMultishop_Item_Controller->getMultishopItem(CURRENT_SITE, $Shop_Controller_Show->item); $oSeo_Item = $oMultishop_Item ? $oMultishop_Item : $oShop_Item; $oSeo_Item->seo_title != '' ? Core_Page::instance()->title($oSeo_Item->seo_title) : $aTitle[] = $oShop_Item->name; $oSeo_Item->seo_description != '' ? Core_Page::instance()->description($oSeo_Item->seo_description) : $aDescription[] = $oShop_Item->name; $oSeo_Item->seo_keywords != '' ? Core_Page::instance()->keywords($oSeo_Item->name) : $aKeywords[] = $oShop_Item->name; }
2. Для систем версии 6.7.9 и старше
if ($Shop_Controller_Show->group) { $oShop_Group = Core_Entity::factory('Shop_Group', $Shop_Controller_Show->group); // Получаем данные для текущего сайта $oMultishop_Group_Controller = new Multishop_Group_Controller(); $oMultishop_Group = $oMultishop_Group_Controller->getMultishopGroup(CURRENT_SITE, $Shop_Controller_Show->group); if ($oMultishop_Group) { $oShop_Group_Clone = clone $oShop_Group; $oMultishop_Group->seo_group_title_template && $oShop_Group_Clone->seo_group_title_template = $oMultishop_Group->seo_group_title_template; $oMultishop_Group->seo_group_description_template && $oShop_Group_Clone->seo_group_description_template = $oMultishop_Group->seo_group_description_template; $oMultishop_Group->seo_group_keywords_template && $oShop_Group_Clone->seo_group_keywords_template = $oMultishop_Group->seo_group_keywords_template; $oMultishop_Group->seo_item_title_template && $oShop_Group_Clone->seo_item_title_template = $oMultishop_Group->seo_item_title_template; $oMultishop_Group->seo_item_description_template && $oShop_Group_Clone->seo_item_description_template = $oMultishop_Group->seo_item_description_template; $oMultishop_Group->seo_item_keywords_template && $oShop_Group_Clone->seo_item_keywords_template = $oMultishop_Group->seo_item_keywords_template; // Apply SEO templates if ($Shop_Controller_Show->item) { $oShop_Item = Core_Entity::factory('Shop_Item', $Shop_Controller_Show->item); // Получаем данные для текущего сайта $oMultishop_Item_Controller = new Multishop_Item_Controller(); $oMultishop_Item = $oMultishop_Item_Controller->getMultishopItem(CURRENT_SITE, $Shop_Controller_Show->item); $oShop_Item_Clone = clone $oShop_Item; if ($oMultishop_Item) { $oMultishop_Item->seo_title != '' && $oShop_Item_Clone->seo_title = $oMultishop_Item->seo_title; $oMultishop_Item->seo_description != '' && $oShop_Item_Clone->seo_description = $oMultishop_Item->seo_description; $oMultishop_Item->seo_keywords != '' && $oShop_Item_Clone->seo_keywords = $oMultishop_Item->seo_keywords; } $oCore_Meta = new Core_Meta(); $oCore_Meta ->addObject('shop', $oShop) ->addObject('group', $oShop_Group_Clone) ->addObject('item', $oShop_Item_Clone) ->addObject('this', $Shop_Controller_Show); // Title if ($oShop_Item_Clone->seo_title != '') { $seo_title = $oShop_Item_Clone->seo_title; } elseif ($oShop_Group_Clone->seo_item_title_template != '') { $seo_title = $oCore_Meta->apply($oShop_Group_Clone->seo_item_title_template); } else { $seo_title = $oShop_Item_Clone->name; } // Description if ($oShop_Item_Clone->seo_description != '') { $seo_description = $oShop_Item_Clone->seo_description; } elseif ($oShop_Group_Clone->seo_item_description_template != '') { $seo_description = $oCore_Meta->apply($oShop_Group_Clone->seo_item_description_template); } else { $seo_description = $oShop_Item_Clone->name; } // Keywords if ($oShop_Item_Clone->seo_keywords != '') { $seo_keywords = $oShop_Item_Clone->seo_keywords; } elseif ($oShop_Group_Clone->seo_item_keywords_template != '') { $seo_keywords = $oCore_Meta->apply($oShop_Group_Clone->seo_item_keywords_template); } else { $seo_keywords = $oShop_Item_Clone->name; } Core_Page::instance()->title($seo_title); Core_Page::instance()->description($seo_description); Core_Page::instance()->keywords($seo_keywords); } elseif ($Shop_Controller_Show->group) { $oCore_Meta = new Core_Meta(); $oCore_Meta ->addObject('shop', $oShop) ->addObject('group', $oShop_Group_Clone) ->addObject('this', $Shop_Controller_Show); // Title if ($oShop_Group_Clone->seo_title != '') { $seo_title = $oShop_Group_Clone->seo_title; } elseif ($oShop_Group_Clone->seo_group_title_template != '') { $seo_title = $oCore_Meta->apply($oShop_Group_Clone->seo_group_title_template); } else { $seo_title = $oShop_Group_Clone->name; } // Description if ($oShop_Group_Clone->seo_description != '') { $seo_description = $oShop_Group_Clone->seo_description; } elseif ($oShop_Group_Clone->seo_group_description_template != '') { $seo_description = $oCore_Meta->apply($oShop_Group_Clone->seo_group_description_template); } else { $seo_description = $oShop_Group_Clone->name; } // Keywords if ($oShop_Group_Clone->seo_keywords != '') { $seo_keywords = $oShop_Group_Clone->seo_keywords; } elseif ($oShop_Group_Clone->seo_group_keywords_template != '') { $seo_description = $oCore_Meta->apply($oShop_Group_Clone->seo_group_keywords_template); } else { $seo_keywords = $oShop_Group_Clone->name; } Core_Page::instance()->title($seo_title); Core_Page::instance()->description($seo_description); Core_Page::instance()->keywords($seo_keywords); } } }
Если есть необходимость указывать ответственного сотрудника для заказов, поступивших с разных сайтов, то необходимо внести изменения в конфиг-файл \modules\multishop\config\config.php
Добавляем элемент массива вида
'conformity' => array( 2 => 39, 3 => 40 )
где ключем будет идентификатор сайта, для заказов которого нужно указывать отвественного, а значением - идентификатор самого сотрудника из раздела CRM → Сотрудники.
* доступно с версии 2.8
Информация о разработчике:
Версия | Дата | Описание | Версия от | Версия до |
2.9.1 | 26.07.2023 | Добавлена поддержка PHP-8.2. |
7.0.3 | ∞ |
2.9 | 12.05.2021 | Добавлен импорт из CSV опций товара для мультишопа, опции разделены блоками для каждого сайта. Реализовано указание электронных адресов по каждому из сайтов для отправки писем о заказах. Добавлена возможность редактирования настроек модуля через центр администрирования. Модуль расположен в разделе "Контент" - "Мультишоп". |
6.9.8 | ∞ |
2.8 | 26.04.2021 | Добавлена возможность указания ответственного за заказ для каждого сайта. |
6.9.4 | ∞ |
2.7 | 06.11.2020 | Добавлена возможность указания артикула. |
6.9.4 | ∞ |
2.6 | 07.02.2020 | Добавлена украинская локализация |
6.7.9 | ∞ |
2.5 | 06.02.2019 | Добавлена поддержка seo-шаблонов. |
6.7.9 | ∞ |
Модуль позволяет создать на сайте RSS ленту для показа в ней новых товаров интернет-магазина
Всплывающий блок с информацией о текущем состоянии корзины.