🤟
Support Morozov&Pimnev
  • Введение
    • Покупка модуля
    • Версия модуля
    • Обновление модуля
    • Переустановить модуль
    • Оставить отзыв
    • Продление периода технической поддержки
    • Вопросы, поддержка и предложения
  • AmoCRM
    • Создание ключа интеграции
    • Установка модуля
    • Добавление сета настроек
    • Пользователи сайта
    • События (хуки)
    • Настройки
    • Планировщик задач
  • Bitrix24
    • Создание ключа интеграции
    • Установка модуля
    • Добавление сета настроек
    • События (хуки)
    • Настройки
    • Планировщик задач
  • MegaPost
    • Технические требования
    • Установка модуля
    • Создание ключа API
    • DaData
    • Настройки макета
    • Подключение XSL и ТДС
    • События (хуки) и др
    • Настройка MegaPost
      • СДЭК
      • Почта России
      • Boxberry
      • DPD
      • ПЭК
      • Деловые линии
      • Энергия
      • Яндекс GO
      • Мой склад [HostCMS]
    • MegaPost условия
    • Зависимые поля
    • Тип платежной системы
    • Карточка товара
    • Вывод карты ПВЗ
    • Выгрузка заказов в ЛК
    • Изменение названий тарифов
    • Город для расчета
    • Добавление доставки
    • Шаблон карточки заказа
    • MegaPost_Command_Controller
    • Работа с Яндекс картой (ymaps)
    • Обновление модуля
    • Отладка
    • Возможные ошибки
  • RetailCRM
    • Создание ключа доступа к API
    • Установка модуля
    • Добавление магазина
    • Экспорт товаров в RetailCRM через ICML
    • Настройка триггера для создания/обновления заказов из RetailCRM в HostCMS
    • Выгрузка ранее сделанных заказов в RetailCRM
    • События (хуки)
    • Настройки
    • Планировщик задач
  • Мультиязычность
    • Установка модуля
    • Создание ключа Яндекс.Облако
    • Настройка модуля
    • Создание языков
    • Настройка макета
    • Сущность язык
    • Настройка SEO заголовков
    • Настройка HREFLANG
    • Интернационализация в XSL-шаблонах
    • Интернационализация в макетах
    • Интернационализация в ТДС или собственных php файлах
    • Работа с объектами ORM
    • Sitemap
    • Хлебные крошки
    • Массовый перевод
  • Мультирегиональность
    • Установка модуля
    • Настройка модуля
    • Создание регионов
    • Настройки городов
    • Настройка макета
    • Работа с объектами ORM
    • Настройка SEO заголовков
    • Свои Яндекс/Google счетчики и другие скрипты для региона
    • Sitemap
    • Шорткоды
    • Импорт регионов
    • Версии элементов
    • Ограничение по складу
    • Morphos
    • Хлебные крошки
  • Умные фильтры
    • Установка модуля
    • Настройка модуля
    • Настройки макета
    • Подключение XSL и ТДС
    • Вывод фильтра
    • Sitemap
    • Типы свойств для фильтрации
    • Пресеты
    • SEO-фильтр
    • Производители
    • Виды сортировки
    • Свойства товара, доступные для группы товаров
  • Маркетинг
    • Установка модуля
    • Настройка модуля
    • Скидки от суммы заказа
    • Условия
      • Подарки
      • Купон в подарок
    • Приоритетность
  • Улучшенный выбор города
    • Установка модуля
    • Настройка модуля
    • Настройка макета
    • Работа с объектами ORM
  • GeoIP
    • Установка модуля
    • Список сервисов
    • Настройка модуля
    • Проверка IP в ЦА
    • Работа с данными
    • Корзина
  • MegaImport
    • Технические требования
    • Установка модуля
    • Добавление импорта
      • Вкладка «Основные»
        • Тип импорта
        • Тип файла
      • Вкладка «Наценки»
      • Вкладка «Условия»
      • Вкладка «Расписание»
    • Модификации
    • Соответствие полей
    • Отчет импорта
    • Xpath
    • Планировщик задач
    • Возможные ошибки
  • MARKET
    • Установка шаблона
    • Настройка шаблона
    • Поиск
    • Google reCAPTCHA
    • Jivo чат
    • Яндекс.Метрика
      • Электронная коммерция
      • Цель: заказ
      • Цель: телефон/email
      • Цель: отправка форм
    • Настройки виджета
    • Дизайн: меню
    • Дизайн: главная
      • 👉 Сообщения
      • Главный баннер
      • Баннера на слайдере
      • Преимущества
      • Популярные категории
      • Популярные предложения
      • Выгодные предложения
      • Товары дня
      • Категории хиты
      • Баннер средний
      • Стоит приглядеться
      • Отзывы о нас
      • Последние новости
      • Рады видеть вас в нашем маркете
      • Вы ранее смотрели
      • Производители
      • Подписка
    • Дизайн: товары
      • Лейблы: Эксклюзив / Хиты продаж / Рекомендуем
      • Карточка товара
    • Дизайн: о компании
    • Социальные сети
    • Мессенджеры
    • Доп. модули
    • Обновление
  • Сборщик отзывов
    • Технические требования
    • Установка модуля
    • Настройка модуля
    • Настройка макета
    • Планировщик задач
    • Отправка SMS
  • Подписка на товар
    • Установка модуля
    • Настройка модуля
    • Настройка макета
    • Список подписок
    • Отчеты
    • Настройка XSL шаблона товара
    • Отправка SMS
  • Telegram Bot
    • Создание бота и ключа интеграции
    • Установка модуля
    • Настройка модуля
    • HTML style
    • Core_Meta
  • Telegram Bot v2
    • Создание бота и ключа интеграции
    • Установка модуля
    • Добавление магазина
    • TelegramBot пользователи
    • Подписка на уведомления
    • Авторизация
    • HTML style
    • Core_Meta
  • Брошенная корзина x2
    • Установка модуля
    • Настройка макета
  • 🔥Полезности
    • Сброс кэш изображений
    • Удобная авторизация в ЦА
    • Memcache*d
    • Core_Auth::logged()
    • Update хук
Powered by GitBook
On this page
  1. Мультирегиональность

Ограничение по складу

PreviousВерсии элементовNextMorphos

Last updated 1 year ago

Если Вам нужно ограничить показ каких либо товаров в регионе по привязанному к нему складу,

то в контроллере показа товаров можно добавить следующее ограничение:

// ограничение по мультирегионам MultiRegion
if(isset(Core_Page::instance()->multiregion) && $oMultiRegion = Core_Page::instance()->multiregion)
{
	$aReturn = $oMultiRegion->getWarehouses();

	if(count($aReturn))
	{
		// подключаем склады
		$Shop_Controller_Show->warehouseMode('in-stock');

		// ограничиваем по ID склада в регионе
		$Shop_Controller_Show
			->shopItems()
			//->shopItemsInit() // для модуля "Умные фильтры"
				->queryBuilder()
					->where('shop_warehouse_items.shop_warehouse_id','IN',$aReturn);
	}
}

Для модификаций - добавьте хук в bootstrap.php или в нужную ТДС

class My_Multiregion_Observer
{
    static public function onBeforeSelectModifications($object, $args)
    {
        list($oShop_Items_Modifications) = $args;
        
        if(isset(Core_Page::instance()->multiregion) && $oMultiRegion = Core_Page::instance()->multiregion)
        // огранчиение только для карточки товара
        //if(isset(Core_Page::instance()->item) && Core_Page::instance()->item && isset(Core_Page::instance()->multiregion) && $oMultiRegion = Core_Page::instance()->multiregion)
        {
            $aReturn = $oMultiRegion->getWarehouses();
            
            if(count($aReturn))
            {
    		// подключаем склады
                $oShop_Items_Modifications
                    ->queryBuilder()
        		->join('shop_warehouse_items', 'shop_warehouse_items.shop_item_id', '=', 'shop_items.id')
        		->join('shop_warehouses', 'shop_warehouses.id', '=', 'shop_warehouse_items.shop_warehouse_id')
        		->where('shop_warehouses.active', '=', 1)
        		->where('shop_warehouses.deleted', '=', 0)
        		->having('SUM(shop_warehouse_items.count)', '>', 0)
                        ->groupBy('shop_items.id');
    
    		// ограничиваем по ID склада в регионе
    		$oShop_Items_Modifications
                    ->queryBuilder()
                        ->where('shop_warehouse_items.shop_warehouse_id','IN',$aReturn);
            }
        }
    }
}

Core_Event::attach('shop_item.onBeforeSelectModifications', array('My_Multiregion_Observer', 'onBeforeSelectModifications'));