Как программно изменить порядок вывода блоков
Собственно изменить порядок блоков очень просто, делается это на странице 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
Комментарии:
Нету комментариев для вывода...