При преобразовании темы Drupal 6 в Drupal 7 есть ли обходной путь для theme_blocks ()? - PullRequest
1 голос
/ 25 августа 2011

В настоящее время я использую theme_blocks() в базовой теме для Drupal 6, и мне было трудно конвертировать мою тему в Drupal 7, потому что theme_blocks() не используется в Drupal 7. Приведенный ниже код представляет собой простую реализацию функции и как я сейчас использую это в Drupal 6:

/* Implementation of theme_blocks() */
function theme_blocks($region) {
  var output = '';
  if ($list = block_list($region)) {
    //cycle through all blocks in a region
    foreach ($list as $key => $block) {
      //test each block for a given condition
      if ($block->delta == 1) {
        output = /* make some changes */
      }
      else {
        output = /* theme per usual */
      }
    }
  }

  return $output;
}

Итак, по сути, я просто использовал theme_blocks() для циклического перебора всех блоков в регионе, нацеливания на конкретный блок и изменения нескольких вещей. Проблема в том, что theme_blocks() больше не используется в Drupal 7.

Есть ли способ нацеливаться на конкретный блок / блоки в заданном регионе и динамически вносить изменения в зависимости от настроек темы в Drupal 7?

1 Ответ

1 голос
/ 26 августа 2011

Функция темы theme_blocks () (это не ловушка) больше не используется в Drupal 7. Если вам нужно изменить способ визуализации блока, вам нужно реализовать функцию предварительной обработки для блока файл шаблона (THEMENAME_preprocess_block(); см. документацию для template_preprocess_block () ) или используйте файл шаблона block.tpl.php в своей теме.

Имейте в виду, что логическая часть должна идти в функции предварительной обработки, а код рендеринга - в файле шаблона.

...