УрокКак перекрывать вывод полей модуля CCK

Модуль, который используется на 95% сайтах друпала - это CCK (content constructor kit). Без него друпал не достиг бы такой мощи, которой он смог достичь. К списку таких модулей также относится Views. Можно перечислить ещё несколько модулей, но на мой взгляд - именно эти составляют основу друпала.

А раз ССК такой популярный, то было бы совсем неплохо научиться работать с ним не только через админку сайта, но и через свою тему.

Первым делом в корень папки с темой надо закинуть файл content-field.tpl.php из модуля ССК (cck\theme\content-field.tpl.php). Потом скопировать его в эту же папку, но назвать по принципу content-field-имя_сск_поля. Имя этого поля в друпале вы задаёте при создании его в своём типе материала.

Таким образом, в корне вашей темы должен лежать файл content-field.tpl.php и content-field-имя_сск_поля.tpl.php.
ВНИМАНИЕ: БЕЗ ПЕРВОГО ФАЙЛА ШАБЛОН ССК ПОЛЯ НЕ ПЕРЕКРОЕТСЯ!

Теперь немного о его содержимом. Так шаблон вывода сск полей выглядит изначально:

<?php if (!$field_empty) : ?>
<div class="field field-type-<?php print $field_type_css ?> field-<?php print $field_name_css ?> 
<?php print $field_type ?> <?php print $field_name ?>">
  <?php if ($label_display == 'above') : ?>
    <div class="field-label"><?php print t($label) ?>: </div>
  <?php endif;?>
  <div class="field-items">
    <?php $count = 1;
    foreach ($items as $delta => $item) :
      if (!$item['empty']) : ?>
        <div class="field-item <?php print ($count % 2 ? 'odd' : 'even') ?>">
          <?php if ($label_display == 'inline') { ?>
            <div class="field-label-inline<?php print($delta ? '' : '-first')?>">
              <?php print t($label) ?>: </div>
          <?php } ?>
          <?php print $item['view'] ?>
        </div>
      <?php $count++;
      endif;
    endforeach;?>
  </div>
</div>
<?php endif; ?>

Естественно, этот шаблон должен работать абсолютно для всех типов полей, поэтому тут так много кода - вывод меток, выводы всех классов, проверка на display: inline и прочее. Это может быть абсолютно не нужно, а в некоторых случаях вообще мешает вывести поля "как надо". Поэтому в следущем уроке я расскажу какой-нибудь пример, показывающий как можно работать с этим шаблоном.

Комментарии

Аватар пользователя indnad
indnad написал:

skajite pojaluysta (a rollover) budet rabotat v drupal ili nado podkluchat (jquery)? zaranee spasibo

12.10.2013 14:23

Комментировать