Блок меняет свой идентификатор при перемещении между регионами? - PullRequest
1 голос
/ 30 сентября 2011

В Drupal 6 у меня есть пользовательский блок, который я назвал и поместил в пользовательскую область правой боковой панели.Идентификатор этого блока (который я обнаружил из block.tpl.php, из вспомогательной переменной $block_id) равен 7.

Я перезаписываю вывод этого блока, так как он отображает представление, и мне нужно изменить разметку;У меня есть функция предварительной обработки в template.php, называемая myTheme_preprocess_block(), которая ищет уникальный идентификатор блока, таким образом:

myTheme_preprocess_block(&$vars) {

    $this_block_id = $vars['id']; /* region-independent ID (for reliability) */
    $vars['template_files'] = array();

    switch ($this_block_id) {

        case 7:
            $vars['template_files'][] = 'block-my-override-template';
            break;
        default:
            /* take no action */
    }
}

Теперь я переместил этот блок из области правой боковой панели (которая являетсяпользовательский регион, а не регион по умолчанию, поставляемый с Garland) в область нижнего колонтитула, которая также имеет собственное имя.И вдруг, на мой перезаписываемый файл шаблона, block-my-override-template.tpl.php, больше нет ссылок.

Я немного копаю и вывожу уникальный идентификатор блока из block.tpl.php, и волшебным образом этот блок изменился его ID от 7 до 13!С невозмутимым лицом, не меньше!Возвращение этого блока в область правой боковой панели также возвращает блок с идентификатором 7 (и весь мой код снова начинает работать).

У меня такой вопрос: как мы можем однозначно идентифицировать блок, если его «уникальный» идентификатор изменяется при его перемещении из одного региона в другой?

1 Ответ

1 голос
/ 11 октября 2011

Если вы используете представление, почему бы вам не переопределить отображение блока представления вместо того, чтобы возиться с реальным блоком?

Вы могли бы просто объявить свой пользовательский блок в модуле? Это должно упростить вам управление темами блока.

...