НОВИНКА!
Занимательная математика от Трепачёва. Присоединяйтесь к нам!
89 of 152 menu

Таблица oc_zone

Таблица oc_zone является ключевым справочником в OpenCart и содержит информацию о регионах (областях, штатах, провинциях, департаментах) внутри стран. Эти данные используются при указании адресов доставки и оплаты, а также для настройки налоговых ставок и зон доставки.

Поля

Поле Тип данных Описание
zone_id int Уникальный идентификатор региона (первичный ключ). Автоматически инкрементируется.
country_id int Внешний ключ, связывающий регион со страной. Ссылается на oc_country.
name varchar(128) Название региона на языке, указанном в language_id. Например, "California", "Московская область".
code varchar(32) Код региона (например, аббревиатура: "CA" для California, "SPB" для Санкт-Петербурга). Используется некоторыми платежными и транспортными системами.
status tinyint(1) Статус региона: 1 - активен, 0 - неактивен. Неактивные регионы не отображаются в выпадающих списках на витрине магазина.

Как это работает

Таблица oc_zone работает в тесной связке с таблицей oc_country. При выборе страны на форме ввода адреса (при регистрации, в адресной книге, при оформлении заказа) AJAX-запрос загружает список активных регионов (status = 1) для этой страны и динамически обновляет выпадающий список "Регион / Область".

Данные из этой таблицы критически важны для корректной работы геозон (Geo Zones) в OpenCart. Геозоны позволяют назначать особые условия (налоги, доставку) не просто для всей страны, а для конкретных её частей. Например, можно установить налог 8% только для покупателей из Калифорнии (zone_id = 5), в то время как для остальных штатов налог будет другим.

Администратор может управлять регионами через панель управления в разделе "Система" → "Локализация" → "Регионы". Там можно добавлять новые регионы, редактировать существующие (например, переводить названия) и отключать их.

Пример SQL-запроса

Получить список всех активных регионов для конкретной страны (например, для России, country_id = 176) вместе с названием страны можно следующим запросом:

SELECT z.zone_id, z.name as zone_name, z.code, c.name as country_name FROM oc_zone z LEFT JOIN oc_country c ON (z.country_id = c.country_id) WHERE z.country_id = 176 AND z.status = 1 ORDER BY z.name;

Смотрите также

  • таблицу oc_country,
    которая хранит справочник стран
  • таблицу oc_address,
    которая использует zone_id для адресов пользователей
  • таблицу oc_geo_zone,
    которая определяет зоны для налогов и доставки на основе регионов
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить