Перейти до основного вмісту
Як вставити рекламний блок між списками в Rows Views Drupal 7

Іноді буває потреба вставити будь-який код усередину списку матеріалів що виводяться через Views. Це може бути код Google Adsence, або просто потрібно всередині відрендерити ноду, блок і так далі. Найпростіший спосіб зробити подібне, це вивести потрібний код усередині шаблону представлення.

Отже припустимо, що в'юс виводиться в неформатованому стилі та ім'я Views news. Відповідно шаблон для такого висновку представлення буде views-view-unformatted-news.tpl.php .

Створюємо файл views-view-unformatted-news.tpl.php у папці з встановленою темою і туди копіюємо вміст файлу views-view-unformatted.tpl.php, який знаходиться всередині модуля views в папці theme.

Далі потрібно файл мінімально підправити для вставки коду всередину списку матеріалів. Якщо потрібно вивести код після 2-го рядка подання, код шаблону буде наступний:

<?php if (!empty($title)): ?>
  <h3><?php print $title; ?></h3>
<?php endif; ?>
<?php foreach ($rows as $id => $row): ?>
  <?php if ($id == 2): ?>
    <!-- Тут виводимо необхідне -->
  <?php endif; ?>
  <div<?php if ($classes_array[$id]) { print ' class="' . $classes_array[$id] .'"';  } ?>>
    <?php print $row; ?>
  </div>
<?php endforeach; ?>

Якщо ж код потрібно вставити посередині списку, то шаблон набуде наступного вигляду:

<?php if (!empty($title)): ?>
  <h3><?php print $title; ?></h3>
<?php endif; ?>
<?php foreach ($rows as $id => $row): ?>
  <?php if ($id == floor(count($rows)/2)): ?>
    <!-- Тут виводимо необхідне -->
  <?php endif; ?>
  <div<?php if ($classes_array[$id]) { print ' class="' . $classes_array[$id] .'"';  } ?>>
    <?php print $row; ?>
  </div>
<?php endforeach; ?>

Якщо у вас Views виводиться у вигляді таблиці, необхідний трохи інший код. У себе використав так: створюємо в папці з вашою темою файл views-view-table-VIEWS-NAME.tpl.php з кодом для виведення views таблиць, які можна взяти з файлу sites/all/modules/views/theme/views-view-table.tpl.php, і після тегу <tbody> вставляємо наступний код:

<?php foreach ($rows as $row_count => $row): ?>	
	<?php if ($row_count == 4): ?>    
 <tr>       
         <td colspan="4">

<--Рекламний код -->

          </td>
      </tr>
  <?php endif; ?>
  	<?php if ($row_count == 28): ?>
    
 <tr>       
         <td colspan="4">

<--Рекламний код -->
          </td>
      </tr>
  <?php endif; ?>	

Повністю код файлу шаблона для таблиць Views буде виглядати так:

<?php

/**
 * @file
 * Template to display a view as a table.
 *
 * - $title : The title of this group of rows.  May be empty.
 * - $header: An array of header labels keyed by field id.
 * - $caption: The caption for this table. May be empty.
 * - $header_classes: An array of header classes keyed by field id.
 * - $fields: An array of CSS IDs to use for each field id.
 * - $classes: A class or classes to apply to the table, based on settings.
 * - $row_classes: An array of classes to apply to each row, indexed by row
 *   number. This matches the index in $rows.
 * - $rows: An array of row items. Each row is an array of content.
 *   $rows are keyed by row number, fields within rows are keyed by field ID.
 * - $field_classes: An array of classes to apply to each field, indexed by
 *   field id, then row number. This matches the index in $rows.
 *
 * @ingroup views_templates
 */
?>
<table <?php if ($classes): ?> class="<?php print $classes; ?>"<?php endif ?><?php print $attributes; ?>>
   <?php if (!empty($title) || !empty($caption)): ?>
     <caption><?php print $caption . $title; ?></caption>
  <?php endif; ?>
  <?php if (!empty($header)) : ?>
    <thead>
      <tr>
        <?php foreach ($header as $field => $label): ?>
          <th <?php if ($header_classes[$field]): ?> class="<?php print $header_classes[$field]; ?>"<?php endif; ?> scope="col">
            <?php print $label; ?>
          </th>
        <?php endforeach; ?>
      </tr>
    </thead>
  <?php endif; ?>
  <tbody>
    <?php foreach ($rows as $row_count => $row): ?>
	
	<?php if ($row_count == 4): ?>
    
 <tr>       
         <td colspan="4">
	<--Рекламний код -->
          </td>
      </tr>

  <?php endif; ?>
  	<?php if ($row_count == 28): ?>
    
 <tr>       
         <td colspan="4">

<--Рекламний код -->
          </td>
      </tr>

  <?php endif; ?>	
	
      <tr <?php if ($row_classes[$row_count]): ?> class="<?php print implode(' ', $row_classes[$row_count]); ?>"<?php endif; ?>>
        <?php foreach ($row as $field => $content): ?>
          <td <?php if ($field_classes[$field][$row_count]): ?> class="<?php print $field_classes[$field][$row_count]; ?>"<?php endif; ?><?php print drupal_attributes($field_attributes[$field][$row_count]); ?>>
            <?php print $content; ?>
          </td>
        <?php endforeach; ?>
      </tr>
    <?php endforeach; ?>
  </tbody>
</table>