Наверх

Темизация шаблона views

Модуль Views-очень мощный инструмент разработчика Drupal. Он позволяет выводить различные поля материалов,связать их с автором, статистикой и многим другим. Можно также принимать аргументы прямо из адресной строки.

В готовом варианте результат работы вьюса не устраивает(чисто визуально) в 90% случаев.
Темизировать вьюc  можно. И вариантов для этого предостаточно,например используя шаблоны.
Темизация через шаблоны одинакова и для шестой, и для седьмой версии Друпала.
Рассмотрим по подробнее.
Создаем вьюс, тут ничего сложного нет, вы справитесь с этим сами.
Допустим вьюс подтягивает несколько полей материалов-пусть это будет заголовок, картинка, дата, превью содержимого и ссылка на саму ноду.
 
 
Сразу смотрим превью нашего представления. Как видим-все поля испешно вывелись. Содержимое обрезалось(задал 100 символов), изображение обработалось стилем вывода.(см. также программное создание стиля изображения)
 
 
Для нас это конечно неприемлимо.Обращаемся к темизации.
Жмем на Дополнительно(чтоб раскрылось меню). Далее жмем на Информация.
 
 
В открывшемся окне нас интересует файл с названием Стиль вывода колонок. Этот файл отвечает за...вывод колонок,в общем. На досуге можете посмотреть все эти файлы и понять для себя что и как через них темизируется.
 
 
Что бы скормить вьюсу свой шаблон - создайте файл с именем, указанным последним в области Стиль вывода колонок. В нашем случае это имя views-view-fields--test-views--page.tpl.php
Далее кликайте прям по фразе Стиль вывода колонок-увидите php код. Копируйте его и всталяйте в только что созданный файл шаблона.
Я намеренно убрал всё лишнее,оно нам не пригодится.
 
 
Шаблон будет выглядеть вот так. Теперь скидываем этот файл в папку текущей темы.
 
 
 
Далее в окне со списком шаблонов нажимаем кнопку Пересканировать файлы шаблонов.
 
 
Если вы всё сделали верно-файл темизации будет подсвечен.Если этого не произошло-ищите где вы ошиблись.Ошибка чаще всего бывает,когда файл шаблона имеет неправильное имя,или же он помещен не в ту папку на сервере. 
Если у вас всё корректно подсветилось-жмем ок.
 
 
Путь у вьюса указан(если это страница). Если не указали-обязательно указываем. Сохраняемся.
 
 
В итоге видим наш вьюс, как и должно было быть.
 
 
Теперь самое интересное. Открываем наш шаблон.
Затираем в нем всё ненужное и выводим переменную $id.В этой переменной хранится имя ключа элемента массива $row.

<?php foreach ($fields as $id => $field): ?>
<?php echo  $id.'<br />';?>
<?php print $field->content; ?>
<?php endforeach; ?>

Кэш очищать не обязательно. Смотрим на вьюху.Видим имена переменных.В ваших вьюсах они будут другими. Мы специально их вывели, чтобы узнать эти имена.
 
 
Теперь можем создать свои новые переменные(в них будет выдача вьюса) и вывести их там где угодно(в пределах данного файла шаблона, конечно).

<?php foreach ($fields as $id => $field): ?>
<?php 
if($id=='title'){$zagolovok=$field->content;}
if($id=='field_image'){$img=$field->content;}
if($id=='body'){$text=$field->content;}
if($id=='created'){$time=$field->content;}
if($id=='view_node'){$link=$field->content;}
?>
<?php endforeach; ?>

 
Теперь мы создали переменные и поместили в них выдаваемые значения. Далее верстаем что хотим и как хотим.
Например простенькая таблица:

<?php foreach ($fields as $id => $field): ?>
<?php 
if($id=='title'){$zagolovok=$field->content;}
if($id=='field_image'){$img=$field->content;}
if($id=='body'){$text=$field->content;}
if($id=='created'){$time=$field->content;}
if($id=='view_node'){$link=$field->content;}
?>
<?php endforeach; ?>
 
<table>
<tr>
<td rowspan="2">
<?=$img?>
</td>
<td>
<?php echo '<h2>'.$zagolovok.'</h2> Создано:'.$time; ?>
</td>
</tr>
<tr>
<td>
<?php echo $text.'<br />'.$link; ?>
</td>
</tr>
</table>

 
Проверяем
 
 
Вот и всё. Вьюс темизирован. Как расположить все элементы красивым и правильным образом- это уже вопрос к html и css. Сдесь показан лишь порядок действий при темизации представления Drupal.
 
 
 
 

 Читайте также:


7 комментарии

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".
By Гость
3 недели 2 дня назад

Я до сих пор жду ваш ответ .

Я до сих пор жду ваш ответ .

By Гость
3 недели 4 дня назад

Удалось найти более быстрый

Удалось найти более быстрый способ .

Формат: Сетка
Показать: Поля

Исключаю из вывода все поля кроме одного.

Далее
Перезаписать результаты
Заменить выводимое полем значение

И обертываю подстановочные шаблоны как хочу.

Как можете это прокомментировать?

Какие плюсы и минусы у обоих вариантов?

By admin
3 недели 2 дня назад

Можно делать и так.Тогда всё

Можно делать и так.Тогда всё верстка будет тянуться с БД. Чем больше информации тянется оттуда-тем больше нагрузка на неё-это минус.
А плюс в том, что не придётся править файлы по FTP.

Ну и думаю можно найти/придумать ещё несколько способов темизации views))

Мне лично удобнее смотреть верстку в фалах, чем в админке.

By Гость
3 недели 5 дней назад

Эт че за косяк

Эт че за косяк ? <?=$img?> исправьте
By admin
3 недели 5 дней назад

А вы проверяли такой код?Это

А вы проверяли такой код?Это не косяк,а сокращенная форма записи.Работает аналогично коду:

<?php echo $img; ?>
//одно и тоже
<?=$img?>

Для этого обязательно должна быть включена директива short_open_tag в php.ini

By admin
5 недель 2 дня назад
By Гость
5 недель 2 дня назад

Спасибо! Очень помогла

Спасибо! Очень помогла статья!

Отправить комментарий

Войти используя Loginza Vkontakte Facebook livejournal Google Account Yandex Mail.ru API Rambler Last.fm Twitter WebMoney
  • Строки и параграфы переносятся автоматически.
  • Доступные HTML теги: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>

Подробнее о форматировании

два * = десять
Решите этот математический пример.Решение введите цифрой.Например для "один * четыре=?" введите "4"