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

страницы и документы, групп магазина, товары магазина

Шаг 1

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

Шаг 2

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

Шаг 3

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

  • Название — название документа для региона

  • Содержимое документа — текст для региона

  • Мультирегион – регион которому принадлежит версия документа

  • Активность - активность элемента (только для ИМ и ИС) 1^{1}

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

// для ИМ после ->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();
}

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

// Получние версий элемента по региону
$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(); // возвращает массив

Last updated