Для каждой группы и ее подгрупп свой шаблон

#
Для каждой группы и ее подгрупп свой шаблон
Здравствуйте!
В инет магазине, для групп магазина нужно указывать уникальный шаблон и что бы он наследовался и для подгрупп.

Создал доп свойство в группах, в настройки типовой страницы прописал:


$shop_groups_id = $GLOBALS['shop_item_path']['group'];
// Укажите код созданного свойства
$shop_properties_group_id = 1;
$property_row = $shop->GetPropertiesGroupValue($shop_groups_id, $shop_properties_group_id);
print_r($property_row);
// Значения свойства задано
if ($property_row && !empty($property_row['shop_properties_group_value']))
{
$template_id = $property_row['shop_properties_group_value'];
$kernel->set_current_page_data_template($template_id);
}


разместил код перед:

if (!empty($new_title))
{


но почему то не работает, помогите пожалуйста доработать код.
Делаю сайты на HostCMS! Подробнее по почте anton.yurzanov@gmail.com
#
Re: Для каждой группы и ее подгрупп свой шаблон

$param['shop_groups_id'] = $GLOBALS['shop_item_path']['group'];
$param['shop_properties_group_id'] = 1;
$property_row = $shop->GetPropertiesGroupValue($param);
// Значения свойства задано
if ($property_row && !empty($property_row['shop_properties_group_value_value']))
{
$data_template_id = $property_row['shop_properties_group_value_value'];
$kernel->set_current_page_data_template($data_template_id);
}


на на подгруппы не наследуется шаблон (надо в доп свойства прописывать) - как сделать, что бы наследовалось?
Делаю сайты на HostCMS! Подробнее по почте anton.yurzanov@gmail.com
#
Re: Для каждой группы и ее подгрупп свой шаблон
Для ИС работает отлично вот такой код:


...
/* получаем для пути ассоциативный массив с id группы и id/url элемента для данной инфосистемы */
$GLOBALS['INFSYS_result'] = $InformationSystem->GetInformationFromPath($InformationSystem_id,
    '', $break_if_path_not_found);

/* Если путь существует */
if ($GLOBALS['INFSYS_result']) {

    // начало кода для переопределения шаблона
    
    $data_template_id = 0;

    // id доп.свойства группы, хранящего идентификатор шаблона
    $data_template_property_id = 12345; // - впишите свой id

    // если у вас все сделано по-уму (для указания id доп.свойства группы добавлен параметр ТДС,
    // с названием data_template_property_id, то закомментируйте предыдущую строчку,
    // и раскомментируйте следующую
    //$data_template_property_id = to_int($GLOBALS['LA']['data_template_property_id']);

    if ($data_template_property_id) {

        $group_id = $GLOBALS['INFSYS_result']['group'];

        while (!$data_template_id) {

            $row = $InformationSystem->GetPropertysGroup($group_id, $InformationSystem_id);

            if (sizeof($row))
                foreach ($row as $key => $property_row)
                    if ($property_row['information_propertys_groups_id'] == $data_template_property_id) {
                        $data_template_id = $property_row['information_propertys_groups_value_value'];
                        break;
                    }

            if ($data_template_id)
                break;
            else {

                $row2 = $InformationSystem->GetInformationGroup($group_id);
                if ($row2)
                    $group_id = $row2['information_groups_parent_id'];
                else
                    break;
            }
        }


        if ($data_template_id)
            $kernel->set_current_page_data_template($data_template_id);
    }
    
    // конец кода для переопределения шаблона    
    
    /* получаем массив с деревом от текущей группы до корня */
    $InformationSystem->GetInformationGroupsForXml($GLOBALS['INFSYS_result']['group'],
        $InformationSystem_id);

    $group_path = '';

    $mas_information_groups_for_xml = $InformationSystem->
        get_mas_information_groups_for_xml();

    /* получаем данные о группе */
    $group_result = $InformationSystem->SelectInformationGroups($GLOBALS['INFSYS_result']['group'],
        $InformationSystem_id);
...

Для групп создается доп.свойство, хранящее id шаблона. При нахождении в какой-либо группе ИС, код пытается получить значение этого доп.свойства для текущей группы. Если оно не задано - то у группы-родителя, если и у нее не задано, то у группы-родителя родителя... и так далее, до самого корня ИС, или пока не не встретится группа, у которой это свойство задано. Если такая группа нашлась, то устанавливается ее шаблон, если до самого корня ни для одной из групп шаблон не задан, то используется тот, который указан в настройках текущего узла структуры (то есть как обычно).

Не смотря на то, что этот пример - для ИС, его очень легко переписать для магазина, фактически только заменить имена методов и некоторые их параметры.
Заказов не беру. Консультирую редко.
Авторизация