Skip to content
This repository has been archived by the owner on Jun 2, 2021. It is now read-only.

Публичная версия модуля для создания мультирегиональности на вашем сайте на основе инфоблоков с привязкой к типам цен и к складам магазина

Notifications You must be signed in to change notification settings

ggrachdev/bitrix_module_multiregionality

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

71 Commits
 
 
 
 
 
 

Repository files navigation

Что делает модуль?

Модуль позволяет организовать мультирегиональность на Вашем сайте исходя из текущего url, например, зашли на moscow.site.ru - будут одни данные, зашли на spb.site.ru - другие. В данный момент модуль может подставлять только формы названия города (Московский, Московская, Московское, Москва, Москве и тп, их заполняете самостоятельно), имеется привязка к типам цен и к регионам на уровне свойства инфоблока, регионы нужно вводить в виде ID'ов (В будущем данное неудобство будет исправлено). Присутствует возможность добавлять пользовательские поля. Так же добавили 2 новых типа свойства - привязка к типам цен и к складам. Чтобы модуль заработал нужно установить модуль, заполнить регионы и в init.php подключить модуль:

\Bitrix\Main\Loader::includeModule('ggrachdev.multiregionality');

Теперь на странице вы можете вставлять плейсхолдеры:

#NAME_REGION#
#FORM_NAME_REGION_1#
#FORM_NAME_REGION_2#
#FORM_NAME_REGION_3#
#FORM_NAME_REGION_4#
#FORM_NAME_REGION_5#
#FORM_NAME_REGION_6#

Они будут заменены на данные региона из инфоблока, можете так же работать с модулем через код:

$regions = \GGrach\Multiregionality\RegionsFactory::getInstance();

// Все регионы, массив array<GGrach\Multiregionality\Entity\Region>
$arRegions = $regions->getRegionsData();

// Данные текущего региона GGrach\Multiregionality\Entity\Region
$nowRegion = $regions->getNowRegionData();

Доступные методы:
$nowRegion->getId();
$nowRegion->getName();
$nowRegion->getNameForms();
$nowRegion->getUrl();
$nowRegion->getData();
// Получить данные вашего свойства, префикс PROPERTY_ писать не надо
$nowRegion->getProperty('CUSTOM_PROPERTY_CODE');
$nowRegion->isDefaultRegion();

// Вместо вызова \GGrach\Multiregionality\RegionsFactory::getInstance() вы можете получить инстанцию:
$regions = MRG();
$arRegions = $regions->getRegionsData();
$arRegions = MRG()->getRegionsData();

// Данные о привязанных локациях
MRG()->getNowRegionData()->getLocations();

// Данные о привязанных типах цен к данному региону
MRG()->getNowRegionData()->getTypePrices();

// Данные о привязанных складах к данному региону
MRG()->getNowRegionData()->getStores();
// ...

Если вам нужно определить текущий регион не исходя из текущего url, то передайте в фабрику параметр:

$regions = \GGrach\Multiregionality\RegionsFactory::getInstance('irkutsk.site.ru');

События:

// 1) OnAfterGetListRegions - После первичного получения регионов из репозитория, вторичное получение будет закешировано

// Пример вызова:
\Bitrix\Main\EventManager::getInstance()->addEventHandler(
    'ggrachdev.multiregionality',
    "OnAfterGetListRegions",
    "OnAfterGetListRegionsHandler"
);
/**
 * @param array<\GGrach\Multiregionality\Entity\Region> $arList - 
 * @param array $arFilter - переданный фильтр
 * @return type
 */
function OnAfterGetListRegionsHandler(array $arList, array $arFilter) {
    return $arList;
}


// 2) OnAfterDeterminateRegionHandler - После определения текущего региона, нужно вернуть \GGrach\Multiregionality\Entity\Region

// Пример создания слушателя:
\Bitrix\Main\EventManager::getInstance()->addEventHandler(
    'ggrachdev.multiregionality',
    "OnAfterDeterminateRegion",
    "OnAfterDeterminateRegionHandler"
);

/**
 * @param string $url - Определенный модулем текущий url
 * @param \GGrach\Multiregionality\Contract\IRegionsRepository $repository
 * @param \GGrach\Multiregionality\Entity\Region $determinateRegion
 * @return \GGrach\Multiregionality\Entity\Region
 */
function OnAfterDeterminateRegionHandler(
    string $url, 
    \GGrach\Multiregionality\Contract\IRegionsRepository $repository, 
    \GGrach\Multiregionality\Entity\Region $determinateRegion
) {
    return $determinateRegion;
}

About

Публичная версия модуля для создания мультирегиональности на вашем сайте на основе инфоблоков с привязкой к типам цен и к складам магазина

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published