Мультишоп

Мультишоп
7 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

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

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

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

Скриншоты

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

Версия Дата Описание Версия от Версия до
2.9.2 06.09.2024

Добавлена поддержка версии 7.1.2

7.1.2
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
Еще версии

Комментарии

  • Без темы

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

    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
Похожие