Первородный хук

Главные вкладки

Аватар пользователя Кришпер Кришпер 27 апреля 2018 в 15:12

Мне нужен хук, который друпал исполняет первым, а уже потом все остальные.

Пишу код, который пересоздаёт корзину уберкарты(товары) в зависимости от поддомена. Оно работает, но замена видна не сразу после перехода на поддомен, а после перезагрузки.

<?phpfunction cube3_process_html(&$variables) {
    ubc_rebuild_cart_by_curr_region($variables);
};?>
<?php    if ( gsp_user_role_check('test') )  {
            
$nn ;
            
            
/*
                $cityNode =gsp_get_model_city( $pr );
                $citySite =  gsp_get_poddomen();    
        
        */
            //( 11 );
        
            
            
if (!isset($_SESSION)) {
                
session_start();
            };
            
            
$_SESSION['poddomenNew'] = gsp_get_poddomen();
            
            
//print_r( $_SESSION['poddomenNew'] );
            //echo '  ';
            //print_r( $_SESSION['poddomenOld'] );
            
            
if ( $_SESSION['poddomenOld'] != $_SESSION['poddomenNew'] ) {
                
$itemsCart uc_cart_get_contents();
        
                if ( empty( 
$itemsCart ) == false ) foreach( $itemsCart as $itemCart ) {
                    
//
                    //if ( $itemCart ) 
                    
                
                    
                    
$newModel $_SESSION['poddomenNew'].gsp_get_model_type_tov($itemCart); 
                    
                    
$newNid db_select('uc_products''n')
                      ->
fields('n', array('nid'))
                      ->
condition('n.model'$newModel )
                      ->
execute()
                      ->
fetchField();
                    
                    
print_r$newModel );
                    
                    
                    
uc_cart_remove_item$itemCart->nid$itemCart->cart_id,  $itemCart->data );
                    
                    
uc_cart_add_item$newNid$itemCart->qty$itemCart->data$itemCart->cart_idFALSEFALSE );
                    
                    
uc_cart_get_contents$itemCart->cart_id'rebuild');
                    
                    
//print_r( $itemCart );
                    
                    /*
                    $item_entity = entity_create('uc_cart_item', array(
                      'cart_id' => $itemCart->cart_id,
                      'nid' => $itemCart->nid,
                      'qty' => $itemCart->qty,
                      'data' => $itemCart->data,
                    ));
                    entity_save('uc_cart_item', $item_entity);
                    */
                    
                
}
            };                    
            
            
$_SESSION['poddomenOld'] = gsp_get_poddomen();
            
            
            
            
            
    };
?>

Перестройка товаров работает сразу, что видно по print_r, но чисто визуально видно только потом. Рискну предположить, что проблема в том, что html хук всё-таки происходит раньше хука уберккарты, который тащит данные из бд. Подскажите, пожалуйста, какой из хуков друпала 7 является самым первейшим.

Лучший ответ

Аватар пользователя Semantics Semantics 27 апреля 2018 в 15:14
2

hook_boot()
hook_init()
и понеслась.

Вообще, по вашим вопросам, становится страшно от того как вы решаете проблему

Комментарии

Аватар пользователя Semantics Semantics 27 апреля 2018 в 15:14
2

hook_boot()
hook_init()
и понеслась.

Вообще, по вашим вопросам, становится страшно от того как вы решаете проблему

Аватар пользователя Кришпер Кришпер 27 апреля 2018 в 16:02

Спасибо, ребят. И, поверьте, там просто сам сайт такая дичь, что иначе не решить - там каждый товар имеет 80 клонов под каждый регион, а надо чтоб в корзине при смене региона были именно вариации товара на этот регион. И бахнул бы я вообще свою корзину без уберкарты, но сроки нуль.

Аватар пользователя Кришпер Кришпер 28 апреля 2018 в 9:41

Phantom63rus, да если бы контент-менеджера... программистов-бедолаг заставили. Gun_dose, ну все ведь хуки в опред порядке исполняются(не асинхронно ведь.. вродее...). Под первородным хуком я и имел в виду тот, который самый первый, чтоб в нём корзину уберкарты менять, а уже в других ихних хуках чтоб из бд обновлённые записи бд тащило.

Аватар пользователя Semantics Semantics 28 апреля 2018 в 10:55

Вам всё же идти нужно не снизу, а наоборот сверху.
Врапперить функции уберкарта, что-то подменить своими через implements_alter()