Вы здесь

После оборачивания блоков в fieldset сбивается сортировка

0

Задача, на странице есть блоки(фасеты), хочу обернуть их в fieldset:
в preprocess_page создаю сам филдсет:

    $facet_wrapper['facet_wrapper'] = array(
        '#type' => 'fieldset',
        '#title' => t('Расширенный поиск'),
        '#collapsible' => TRUE,
        '#collapsed' => TRUE,
        '#attributes' => array('id' => array( 'facet_wrapper')),
    );

потом перегоняю содержимое массива с контентом и все, что относится к блокам фасетов перемещаю в вновь созданный филдсет:

    foreach ($variables['page']['content'] as $key => $value) {

        if(substr($key, 0, 8) == "facetapi"){

            $variables['page']['content']['facet_wrapper'][$key] = $value;
            unset($variables['page']['content'][$key]);

        }
    }

после данной махинации если смотреть dsm($variables), все отображается в нужной последовательности, по факту все блоки выводятся вперемежку.

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

например:

содержимое массива (1,2,3,4,5,6,7,8,9), а выводится : 6,7,8,9,1,2,3,4,5

В чем может быть косяк?

Версия Drupal: 
7.x
Связанные проекты: 
Facet API
Вопрос задан 16.11.2015 - 15:16
Аватар пользователя im
im
32

Ответы

0

Попробуйте для каждого элемента задать вес с помощью параметра #weight:

foreach ($variables['page']['content'] as $key => $value) {

    if(substr($key, 0, 8) == "facetapi"){

        $variables['page']['content']['facet_wrapper'][$key] = $value;
        $variables['page']['content']['facet_wrapper'][$key]['#weight'] = $i;
        unset($variables['page']['content'][$key]);

    }
}
Ответ дан 16.11.2015 - 15:33
Аватар пользователя shu
shu
172

а ларчик то просто открывался =) заработало, спасибо вам огромное за совет!!! вот финальный код:

    $i = 0;
    foreach ($variables['page']['content'] as $key => $value) {

        if(substr($key, 0, 8) == "facetapi"){
            $i = $i + 1;
            $variables['page']['content']['facet_wrapper'][$key] = $value;
            $variables['page']['content']['facet_wrapper'][$key]['#weight'] = $i;
            unset($variables['page']['content'][$key]);

        }
    }
Комментарий оставлен 16.11.2015 - 15:38