Проблема с тематическим блоком опроса в Drupal 6


Я хотел иметь возможность контролировать макет и контейнеры для всех элементов (выбор, название, голосование и т.д.) Внутри моего блока опроса и решил добавить свой собственный шаблон для того же самого.

Как и любой нуб, я проверил блок с помощью devel и получил файл шаблона блока, используемые методы предварительной обработки (в моем случае poll-vote.tpl внутри модуля опроса ядра drupal и template_preprocess_poll_vote внутри poll.module) и имя файла-кандидата для шаблона как poll-vote-block.tpl.php внутри каталога моих тем (сайты/все/темы/my_theme) и в соответствующей теме template.php использовал функцию предварительной обработки следующим образом:

function my_theme_preprocess_poll_vote(&$variables) {
  echo 'Im in';
  $form = $variables['form'];
  $variables['choice'] = drupal_render($form['choice']);
  $variables['title'] = check_plain($form['#node']->title);
  $variables['vote'] = drupal_render($form['vote']);
  $variables['rest'] = drupal_render($form);
  $variables['block'] = $form['#block'];
  // If this is a block, allow a different tpl.php to be used.
  if ($variables['block']) {
    $variables['template_files'][] = 'poll-vote-block-custom';
  }
  print_r($variables['template_files']);
}

Первоначально я установил значение template_files как "опрос-голосование-блок", и это, похоже, не повлияло на блок, что я снова подтвердил с помощью devel.

Я распечатал эхо-сообщение, чтобы убедиться, что предварительный процесс был вызван, и он его распечатал. Я переименовал template_files (и файл шаблона) и распечатал его, чтобы получить следующее:

Массив ([0] => опрос-голосование-блок [1] => опрос-голосование-блок-пользовательский )

Однажды я наткнулся на шаблоны тем в документах drupal, в которых методы предварительной обработки не обязательно переопределяются, но помещаются в очередь... мне кажется, что файл tpl моего метода предварительной обработки имеет более низкий приоритет и, следовательно, не может быть переопределен. Следовательно, я не могу выполнить свое требование по тематизации блока опроса

Было бы неплохо узнать, не ошибаюсь ли я в этой концепции, и надеяться кто-нибудь мог бы дать мне некоторое представление об этом, чтобы решить мою проблему.

Заранее спасибо!!

Редактировать

Проблема была окончательно решена. Я создал block-poll.tpl.php файл и затем смог переопределить значение по умолчанию poll-vote.tpl.php с помощью моего метода предварительной обработки и poll-vote-block-custom.tpl.php .

По-видимому, точно так же, как в случае, когда нужно block.tpl.php для его block-module-delta.tpl.php чтобы переопределить функциональность по умолчанию, это возможно, это было мое дело.

Помечая ответ джимаджаммы как решение, поскольку он оказывается хорошей документацией и справочным материалом, достойным того, чтобы быть вики-страницей для тематизации Drupal для начинающих разработчиков.

Ура!!

Author: optimusprime619, 2011-12-14

1 answers

Если все, что вы просто пытаетесь изменить, - это макет формы, а не содержащиеся в ней данные, все, что вам нужно сделать, это изменить CSS для различных оболочек.

В этом примере это будет выглядеть как

<div class="poll">
  <div class="vote-form">
    <div class="choices">
      <?php if ($block): ?>
        <div class="title"><?php print $title; ?>:</div>
      <?php endif; ?>
      <?php print $choice; ?>
    </div>
    <?php print $vote; ?>
  </div>
  <?php // This is the 'rest' of the form, in case items have been added. ?>
  <?php print $rest ?>
</div>

Итак, если в CSS вашей темы вы добавили

.poll {
  color: red;
  background-color: blue;
}

Теперь этот блок будет окрашен в красный и синий цвета.

И если вы добавили

.vote-form {
  border: 2px solid green;
}

Тогда форма будет иметь зеленую рамку. и т. д. и т. д.

Теперь, если вам нужно что-то изменить больше, добавьте еще несколько дивов или измените их порядок и т. Д. Вы можете просто скопировать стандартный шаблон опроса в каталог тем, обновить свои кэши, и drupal подберет его и переопределит шаблон из самого опроса, не нужно называть его по-другому.

 1
Author: Jimajamma, 2011-12-14 15:08:13