Порой бывает необходимость вставить какой-либо код внутрь представления. Это может быть код от РСЯ, Адсенса или же просто нужно внутри отрендерить ноду, блок, вьюс и так далее. Самый элементарный способ сделать подобное, это вывести нужный код внутри шаблона представления.
Итак допустим, что вьюс выводится в неформатированном стиле и имя вьюса 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>
- 1 просмотр