В 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
, и волшебным образом этот блок изменил свой идентификатор с 7 на 13! С каменным лицом, не иначе! Возврат этого блока в правую область боковой панели также возвращает блоку ID 7 (и весь мой код снова начинает работать).
Мой вопрос таков: как мы можем однозначно идентифицировать блок, если его «уникальный» идентификатор меняется при перемещении из одного региона в другой?
{JD_MY_BLOCKNAME}
, а затем, используя функцию, аналогичную приведенной выше, обнаруживая это, а не идентификатор блока. Но это кажется таким громоздким. - person Jamie Dexter   schedule 03.10.2011