В 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 (и весь мой код снова начинает работать).
У меня такой вопрос: как мы можем однозначно идентифицировать блок, если его «уникальный» идентификатор изменяется при его перемещении из одного региона в другой?