Вставка рекламы в середину 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>

 

No votes yet