Группировка характеристик


#1

При группировке характеристик , в групповые характеристики из базы запрашиваются только основные поля, поля добавленные модулем не участвуют в запросе даже если их добавить хуком в массив $fields


#2

Пожалуйста опишите подробнее проблему. Вы точно используете нужный хук, в нужном месте?


#3

В таблицу product_features добавил новое поле, в шаблон редактирования характеристики тоже вывел его, добавил в списки полей (в $fields) для sql запросов, через хуки ‘get_product_features’, ‘get_product_feature_data_before_select’, ‘get_product_features_list_before_select’

но в функции fn_get_product_features при группировке характеристик главные (групповые) характеристики получают, поля хранящиеся в переменной $base_fields которая определенна в начале и хранит стандартные поля , и к которой нет доступа через хуки то есть это новое поле для этих характеристик нельзя получить при запросе, можно только добавить при полном переборе итогового массива через хук ‘get_product_features_post’

 if (empty($params['exclude_group'])) {

    $group_ids = array();
    foreach ($data as $feature_data) {
        if (!empty($feature_data['parent_id'])) {
            $group_ids[$feature_data['parent_id']] = true;
        }
    }

    $groups = db_get_hash_array("SELECT " . implode(', ', $base_fields) . " FROM ?:product_features AS pf LEFT JOIN ?:product_features_descriptions ON ?:product_features_descriptions.feature_id = pf.feature_id AND ?:product_features_descriptions.lang_code = ?s WHERE pf.feature_type = 'G' AND (pf.feature_id IN (?n) OR pf.feature_id NOT IN (SELECT parent_id FROM ?:product_features)) ?p ORDER BY pf.position, ?:product_features_descriptions.description", 'feature_id', $lang_code, array_keys($group_ids), $group_condition);

    // Insert groups before appropriate features
    $new_data = $groups;
    foreach ($data as $feature_id => $feature_data) {
        if (!empty($feature_data['parent_id']) && !empty($groups[$feature_data['parent_id']])) {
            $new_data[$feature_data['parent_id']] = $groups[$feature_data['parent_id']];
            unset($groups[$feature_data['parent_id']]);
        }
        $new_data[$feature_id] = $feature_data;
    }
    $data = $new_data;
}