Выдано 131974 лицензии

Магазин приложений HostCMS

Мультишоп

Мультишоп

Цена: 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 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
Похожие

Комментарии

  • Без темы

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

    24.11.2017 12:54:46 Puma

    Без темы

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

    24.11.2017 13:35:18 alexander.egorov