Іноді буває потреба вставити будь-який код усередину списку матеріалів що виводяться через 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>
- 38 переглядів