> For the complete documentation index, see [llms.txt](https://support.morozovpimnev.ru/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://support.morozovpimnev.ru/multiregion/versii-elementov.md).

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

#### &#x20;Шаг 1

Есть возможность для элементов (**страницы и документы**, **групп магазина, товары магазина, группы информационных систем, элементы информационных систем**) полностью подменить содержимое текста для текущего региона. В ЦА сайта переходим в раздел и нужного элемента кликаем на «Версии» (1)

<div data-full-width="true"><img src="/files/sWRov7PrVDGEJvmZHnIE" alt="Страницы и документы"></div>

<div data-full-width="true"><img src="/files/YToqUBapunESMXXndOde" alt="Интернет-магазины"></div>

#### Шаг 2

Теперь в раздел «Мультирегиональные версии» кликаем «Добавить» (1)

<div data-full-width="true"><img src="/files/UDgFCzV0qnm4aP75i7QL" alt="Мультирегиональные версии (Страницы и документы)"></div>

<div data-full-width="true"><img src="/files/vTV64Y668L66nFkcdIeQ" alt="Мультирегиональные версии (Интернет-магазины)"></div>

#### Шаг 3

Заполняем параметры для новой версии

<div data-full-width="true"><img src="/files/6dUqntjigV4F9nqQnqgm" alt="Редактирование версии (Страницы и документы)"></div>

<div data-full-width="true"><img src="/files/NDcQLc4e8FSEnnmPWJfw" alt="Редактирование версии (Информационные системы)"></div>

* ***Название** — название документа для региона*
* ***Содержимое документа** — текст для региона*
* ***Мультирегион** – регион которому принадлежит версия документа*
* ***Активность** - активность элемента (только для ИМ и ИС)* $$^{1}$$

$$^{1}$$ Для того чтобы исключить для выборки (так же **ошибка 404**) определенные группы/элементы внесите в ТДС (настройки страницы) следующий код:

{% tabs %}
{% tab title="ТДС \[Настройки страницы]" %}
{% code lineNumbers="true" %}

```php
// для ИМ после ->parseUrl() вставьте
if(Core::moduleIsActive('multiregion'))
{
    if($Shop_Controller_Show->item)
    {
        $oMultiRegion_Shop_Item = Core_Page::instance()->multiregion->MultiRegion_Shop_Items->getByentity_id($Shop_Controller_Show->item);
        
        if(!is_null($oMultiRegion_Shop_Item) && !$oMultiRegion_Shop_Item->active)
        {
            $Shop_Controller_Show->error404();
            
            return ;
        }
    }
    
    if($Shop_Controller_Show->group)
    {
        $oMultiRegion_Shop_Group = Core_Page::instance()->multiregion->MultiRegion_Shop_Groups->getByentity_id($Shop_Controller_Show->group);
        
        if(!is_null($oMultiRegion_Shop_Group) && !$oMultiRegion_Shop_Group->active)
        {
            $Shop_Controller_Show->error404();
            
            return ;
        }
    }
    
    $Shop_Controller_Show
        ->shopGroups()
            ->queryBuilder()
                ->leftJoin('multiregion_shop_groups','multiregion_shop_groups.entity_id','=','shop_groups.id', array(
                    array('AND' => array('multiregion_shop_groups.multiregion_id','=', Core_Page::instance()->multiregion->id))
                ))
                ->open()
                    ->where('multiregion_shop_groups.active', '=', 1)
                    ->setOr()
                    ->where('multiregion_shop_groups.id', 'IS', NULL)
                ->close();
                
    $Shop_Controller_Show
        ->shopItems()
            ->queryBuilder()
                ->leftJoin('multiregion_shop_items','multiregion_shop_items.entity_id','=','shop_items.id', array(
                    array('AND' => array('multiregion_shop_items.multiregion_id','=', Core_Page::instance()->multiregion->id))
                ))
                ->open()
                    ->where('multiregion_shop_items.active', '=', 1)
                    ->setOr()
                    ->where('multiregion_shop_items.id', 'IS', NULL)
                ->close();
}

// для ИС после ->parseUrl() вставьте
if(Core::moduleIsActive('multiregion'))
{
    if($Informationsystem_Controller_Show->item)
    {
        $oMultiRegion_Informationsystem_Item = Core_Page::instance()->multiregion->MultiRegion_Informationsystem_Items->getByentity_id($Informationsystem_Controller_Show->item);
        
        if(!is_null($oMultiRegion_Informationsystem_Item) && !$oMultiRegion_Informationsystem_Item->active)
        {
            $Informationsystem_Controller_Show->error404();
            
            return ;
        }
    }
    
    if($Informationsystem_Controller_Show->group)
    {
        $oMultiRegion_Informationsystem_Group = Core_Page::instance()->multiregion->MultiRegion_Informationsystem_Groups->getByentity_id($Informationsystem_Controller_Show->group);
        
        if(!is_null($oMultiRegion_Informationsystem_Group) && !$oMultiRegion_Informationsystem_Group->active)
        {
            $Informationsystem_Controller_Show->error404();
            
            return ;
        }
    }
    
    $Informationsystem_Controller_Show
        ->informationsystemGroups()
            ->queryBuilder()
                ->leftJoin('multiregion_informationsystem_groups','multiregion_informationsystem_groups.entity_id','=','informationsystem_groups.id', array(
                    array('AND' => array('multiregion_informationsystem_groups.multiregion_id','=', Core_Page::instance()->multiregion->id))
                ))
                ->open()
                    ->where('multiregion_informationsystem_groups.active', '=', 1)
                    ->setOr()
                    ->where('multiregion_informationsystem_groups.id', 'IS', NULL)
                ->close();
                
    $Informationsystem_Controller_Show
        ->informationsystemItems()
            ->queryBuilder()
                ->leftJoin('multiregion_informationsystem_items','multiregion_informationsystem_items.entity_id','=','informationsystem_items.id', array(
                    array('AND' => array('multiregion_informationsystem_items.multiregion_id','=', Core_Page::instance()->multiregion->id))
                ))
                ->open()
                    ->where('multiregion_informationsystem_items.active', '=', 1)
                    ->setOr()
                    ->where('multiregion_informationsystem_items.id', 'IS', NULL)
                ->close();
}
```

{% endcode %}
{% endtab %}

{% tab title="любой др. код" %}
{% code lineNumbers="true" %}

```php
// для групп ИМ перед $Shop_Controller_Show->show() вставьте
Core::moduleIsActive('multiregion') && $Shop_Controller_Show
    ->shopGroups()
        ->queryBuilder()
            ->leftJoin('multiregion_shop_groups','multiregion_shop_groups.entity_id','=','shop_groups.id', array(
                array('AND' => array('multiregion_shop_groups.multiregion_id','=', Core_Page::instance()->multiregion->id))
            ))
            ->open()
                ->where('multiregion_shop_groups.active', '=', 1)
                ->setOr()
                ->where('multiregion_shop_groups.id', 'IS', NULL)
            ->close();

// для товаров ИМ перед $Shop_Controller_Show->show() вставьте
Core::moduleIsActive('multiregion') && $Shop_Controller_Show
    ->shopItems()
        ->queryBuilder()
            ->leftJoin('multiregion_shop_items','multiregion_shop_items.entity_id','=','shop_items.id', array(
                array('AND' => array('multiregion_shop_items.multiregion_id','=', Core_Page::instance()->multiregion->id))
            ))
            ->open()
                ->where('multiregion_shop_items.active', '=', 1)
                ->setOr()
                ->where('multiregion_shop_items.id', 'IS', NULL)
            ->close();

// для элементов ИС перед $Informationsystem_Controller_Show->show() вставьте
Core::moduleIsActive('multiregion') && $Informationsystem_Controller_Show
    ->informationsystemItems()
        ->queryBuilder()
            ->leftJoin('multiregion_informationsystem_items','multiregion_informationsystem_items.entity_id','=','informationsystem_items.id', array(
                array('AND' => array('multiregion_informationsystem_items.multiregion_id','=', Core_Page::instance()->multiregion->id))
            ))
            ->open()
                ->where('multiregion_informationsystem_items.active', '=', 1)
                ->setOr()
                ->where('multiregion_informationsystem_items.id', 'IS', NULL)
            ->close();
            
// для структуры сайта перед $Structure_Controller_Show->show() вставьте
Core::moduleIsActive('multiregion') && $Structure_Controller_Show
    ->structure()
        ->queryBuilder()
            ->leftJoin('multiregion_structures','multiregion_structures.entity_id','=','structures.id', array(
                array('AND' => array('multiregion_structures.multiregion_id','=', Core_Page::instance()->multiregion->id))
            ))
            ->open()
                ->where('multiregion_structures.active', '=', 1)
                ->setOr()
                ->where('multiregion_structures.id', 'IS', NULL)
            ->close();
```

{% endcode %}
{% endtab %}
{% endtabs %}

## Любая другая логика работы с версиями элементов

{% code lineNumbers="true" fullWidth="true" %}

```php
// Получние версий элемента по региону
$oMultiRegion = Core_Entity::factory('MultiRegion', 123);
$oShop_Item = Core_Entity::factory('Shop_Item', 456);

$aMultiRegion_Shop_Items = $oMultiRegion->MultiRegion_Shop_Items->getByentity_id($oShop_Item->id, FALSE); // возвращает object или NULL

// Получние всех версий элемента
$oDocument = Core_Entity::factory('Document', 123);

$oMultiRegion_Documents = Core_Entity::factory('MultiRegion_Document');
$oMultiRegion_Documents
    ->queryBuilder()
        ->where('entity_id','=',$oDocument->id);
        
$aMultiRegion_Documents= $oMultiRegion_Documents->findAll(); // возвращает массив
```

{% endcode %}
