Мультишоп

Мультишоп
2 990 ₽
Более 10 установок.
Приобрести и затем установить модуль вы можете через раздел «Магазин приложений» в центре администрирования HostCMS.

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

Внимание! Мы не продаем телефоны и другую технику. Данный модуль является дополнительным модулем для программного продукта и никакого отношения к магазинам, в которых вы что-то  купили не имеет!

Опции групп товаров

Группам товаров допускается указание для каждого сайта:

  • название (если не указано, будет использоваться основное);
  • описание группы (если не указано, будет использоваться основное);
  • мета-тег title;
  • мета-тег description;
  • мета-тег keywords.

Опции товаров

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

  • название (если не указано, будет использоваться основное);
  • цена товара (если не указано, будет использоваться основное);
  • артикул товара (если не указано, будет использоваться основное);
  • описание товара (если не указано, будет использоваться основное);
  • текст товара (если не указан, будет использоваться основное);
  • мета-тег title;
  • мета-тег description;
  • мета-тег keywords.

Индексация

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

Публикация магазина на других сайтах

При создании узла структуры магазина на другом сайте его путь должен называться точно также как и на оригинальном сайте. Например, если у вас магазин опубликован как /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

Информация о разработчике:

  • Разработчик: Hostmake LLC
  • Вопросы по модулю: support@hostcms.ru
  • Поддержка: support@hostcms.ru

Скриншоты

Версии модуля

Версия Дата Описание Версия от Версия до
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
Еще версии

Комментарии

  • Без темы

    Подскажите, а названия дополнительных свойств можно менять в этом модуле? Речь идёт о возможности использования данного модуля для мультиязычного сайта.

    iNik 26.02.2024 16:53:46

    Без темы

    > а названия дополнительных свойств можно менять в этом модуле?
    Нет. Только то, что указано в описании модуля.

    alexander.egorov 26.02.2024 17:23:51
  • Без темы

    кто разработчик данного модуля? как связаться?

    Puma 24.11.2017 12:54:46

    Без темы

    Информация о разработчике добавлена.

    alexander.egorov 24.11.2017 13:35:18
Похожие