Собственно изменить порядок блоков очень просто, делается это на странице admin/build/block/list
. Сложнее когда нужно изменить порядок только на определённых страницах или при определённых условиях. Например, чтобы для администратора блок с последними комментариями был в самом верху, нужно в template.php
добавить:
/**
* Переопределённая ф-я theme_blocks
*/
function phptemplate_blocks($region) {
global $user;
$output = '';
if ($list = block_list($region)) {
// dsm($list);
if ($user->uid == 1) {
$list['commentsblock_0']->weight = -100;
uasort($list, '_user_sort');
}
foreach ($list as $key => $block) {
$output .= theme('block', $block);
}
}
$output .= drupal_get_content($region);
return $output;
}
В примере, у блока с идентификатором commentsblock_0
, изменяется значение свойства weight
на -100
, что делает его первым в списке.
Если раскомментировать строчку dsm($list);
и установить модуль Devel, то можно будет узнать идентификаторы всех блоков и значения свойств weight
.
P.S: не забываем, что при добавлении функций темизации, нужно сбрасывать кэш друпала.
Написанное актуально для
Drupal 6.x
Комментарии
Привет.
Пытаюсь поэтому принципу изменить регион у блока, но ни как не соображу почему не срабатывает.
Подскажи пожалуйста.
а как для 7 ?
Добавить комментарий