> 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="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mj-gwbYdQWRhuB0jULI%2Fuploads%2Fyq720jPBllp02rIUiKoc%2Fimage.png?alt=media&amp;token=0ad29bd2-b322-48e8-8bb3-d2863e5e570b" alt="Страницы и документы"></div>

<div data-full-width="true"><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mj-gwbYdQWRhuB0jULI%2Fuploads%2FADaWfUoetpG57aaksw1k%2Fimage.png?alt=media&amp;token=9fec8cc3-eba0-4ff2-95ae-c474b1586f91" alt="Интернет-магазины"></div>

#### Шаг 2

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

<div data-full-width="true"><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mj-gwbYdQWRhuB0jULI%2Fuploads%2Fxu9MEoVP0qdTunEm6cSF%2Fimage.png?alt=media&amp;token=bd3d3a47-8fb2-4158-be09-9e1f8f8bc47f" alt="Мультирегиональные версии (Страницы и документы)"></div>

<div data-full-width="true"><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mj-gwbYdQWRhuB0jULI%2Fuploads%2FHb5T2pQ5FjUYSSQ0y9uF%2Fimage.png?alt=media&amp;token=c00e85de-eb00-4d31-ba2a-9c407f391f4d" alt="Мультирегиональные версии (Интернет-магазины)"></div>

#### Шаг 3

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

<div data-full-width="true"><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mj-gwbYdQWRhuB0jULI%2Fuploads%2FtevOFn8LLWtXpAZig7fz%2Fimage.png?alt=media&amp;token=6b3ed5b9-6f43-4ee1-9f4a-e29d3c720f1d" alt="Редактирование версии (Страницы и документы)"></div>

<div data-full-width="true"><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mj-gwbYdQWRhuB0jULI%2Fuploads%2FLihXCRfLl5i7RvOn9Qr6%2Fscreenshot-xn--80aff1anfpi.xn--p1ai-2022.02.18-14_18_58.png?alt=media&amp;token=5a294928-cdec-40e0-9b57-9ef58ef78495" 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 %}
