Skip to main content
Темплейты для Drupal

Хитрый jcarousel в две строки

Модуль jcarousel - отличная штука. Но мне тут понадобилось сделать из этой штуки нечто еще более чудесное, а именно - листать содержимое, которое выводится в 2 строки. Я уже было отчаялась найти подходящую альтернативу, как решение нашлось.

Итак, создаем шаблон для view, которая выводит карусель. В зависимости от требуемых масштабов преобразования можно сделать для конкретной view, для конкретного вывода в рамках одной view или глобально для всех представлений формата jcarousel. Какой файл вам нужен смотрите в Theme information (блок Advanced на странице редактирования view). Например, это может быть файл jcarousel-view--myviewname.tpl.php

Вместо стандартного:

<ul class="<?php print $jcarousel_classes; ?>">
  <?php foreach ($rows as $id => $row): ?>
    <li class="<?php print $row_classes[$id]; ?>"><?php print $row; ?></li>
  <?php endforeach; ?>
</ul>

вставляем новый код:

?php
/**
* @file jcarousel-view.tpl.php
* View template to display a list as a carousel.
*/
?>
<ul class="<?php print $jcarousel_classes; ?>">
  <?php $i=0; $rows_number=2; //здесь мы можем задать количество нужных строк ?>
  <?php foreach ($rows as $id => $row): ?>
    <?php if($i%$rows_number==0) : ?>
      <li class="<?php print $row-classes[$id]; ?>">
    <?php endif; ?>
    <?php print $row; ?>// если необходимо, можно добавить обертку для строки, например div
    <?php if($i%$rows_number==($rows_number-1)) : ?>
      </li>
    <?php endif; ?>
    <?php $i++; ?>
    <?php endforeach; ?>
    <?php if($i%$rows_number!=0) : ?>
      </li>
    <?php endif; ?>
</ul>

Сохраняем, не забываем сбросить кеш.

Что происходит? После этих манипуляций? Два или более элементов (в зависимости от того, какое количество строк вы указали) объединяются в один элемент <li>. Именно поэтому может понадобиться обертка для <?php print $row; ?>

0

Comments

Add new comment