Drupal 7 - как программно поменять порядок блоков на странице

Категория: Drupal
Дата публикации: 18 июня, 2020 - 07:15
Последнее изменение: 18 июня, 2020 - 07:16

При разработки сайта на начальном этапе, такие вещи целесообразно продумывать заранее и сразу использовать такие модули, как Context или Panels для управления расположением блоков контента. Но если сайт действующий, на котором эти модули не использованы, то порядок блоков можно заменить программно. В примере ниже блоки меняются для ноды 147, вес (порядок) указывается в #weight:

function MODULE_page_alter(&$page){
  if( menu_get_object() && menu_get_object()->nid == 147 ){
    $page['content']['#sorted'] = false;
    $page['content']['block_23']['#weight'] = 1;
    $page['content']['block_11']['#weight'] = 2;
  }
}

Для точного позиционирования вес придется записать для всех блоков, чтобы вес не дублировался.

Добавить комментарий