Ромка!eu

  • Отдых
  • Работа
  • Штуки-дрюки
Главная — Блоги — Ромка's blog

Темизация Drupal. Часть 4. Темизация Views

  • Просмотреть
  • Голоса

Ромка — Вс, 01/03/2010 - 23:09

59
points

Views — один из самых востребованных модулей для Drupal — позволяет создавать списки документов (представления, view), отфильтрованные по любому сложному алгоритму. На выходе модуль возвращает массив данных, который выводится в шаблоне, соответствующем выбранному администратором типу отображения (display) данных. Каждое представление может быть отображено в виде таблицы, маркированного списка, решетки (grid) и т. п. Чтобы переопределить используемый для отображения представления шаблон, нужно в свойствах представления в блоке Basic settings найти параметр Theme information и посмотреть в нем имена шаблонов, которые могут быть использованы модулем для отображения текущего представления. Затем нужно в подпапке theme модуля Views найти шаблон, соответствующий выбранному типу отображения (например, views-view-table.tpl.php для табличного варианта отображения или views-view-list.tpl.php для списка), скопировать его в папку с текущей темой оформления и присвоить ему одно из имен, перечисленных в Theme information. Теперь созданный шаблон можно настроить для своих нужд.

Например, вот так выглядит шаблон views-view-table.tpl.php:

  1. <table class="<?php print $class; ?>">
  2.   <?php if (!empty($title)) : ?>
  3.     <caption><?php print $title; ?></caption>
  4.   <?php endif; ?>
  5.   <thead>
  6.     <tr>
  7.       <?php foreach ($header as $field => $label): ?>
  8.         <th class="views-field views-field-<?php print $fields[$field]; ?>">
  9.           <?php print $label; ?>
  10.         </th>
  11.       <?php endforeach; ?>
  12.     </tr>
  13.   </thead>
  14.   <tbody>
  15.     <?php foreach ($rows as $count => $row): ?>
  16.       <tr class="<?php print implode(' ', $row_classes[$count]); ?>">
  17.         <?php foreach ($row as $field => $content): ?>
  18.           <td class="views-field views-field-<?php print $fields[$field]; ?>">
  19.             <?php print $content; ?>
  20.           </td>
  21.         <?php endforeach; ?>
  22.       </tr>
  23.     <?php endforeach; ?>
  24.   </tbody>
  25. </table>

Первые 14 строк этого шаблона выводят заголовок страницы и таблицы с данными, а самая интересная и важная часть шаблона сосредоточена в строках с 15 по 23 — здесь в цикле выводятся данные, выбранные запросом, заданным в настройках представления. Данные возвращаются в виде рекордсета, то есть структуры данных, которую можно представить как таблицу, строками которой являются выбранные объекты (например ноды), а ячейками — значения полей объекта (например поля "заголовок" или "автор" ноды).

Вот этот же кусок шаблона с комментариями:

  1. // Цикл по объекту $rows, содержащему все возвращенные данные
  2. // $row — одна строка
  3. <?php foreach ($rows as $count => $row): ?>
  4.   <tr class="<?php print implode(' ', $row_classes[$count]); ?>">
  5.     // Цикл по всем ячейкам внутри строки
  6.     // $field — имя поля, например nid, title и т.д.
  7.     // $content — значение поля
  8.     <?php foreach ($row as $field => $content): ?>
  9.       <td class="views-field views-field-<?php print $fields[$field]; ?>">
  10.         <?php print $content; ?>
  11.       </td>
  12.     <?php endforeach; ?>
  13.   </tr>
  14. <?php endforeach; ?>

Это достаточно универсальный и не очень удобный шаблон, так как он оборачивает одним и тем же html-кодом каждый элемент данных, в частном случае, когда вы заранее знаете имена всех полей, которые будете выводить, этот шаблон можно сильно упростить:


<?php
    
foreach ($rows as $count => $row) {
        print 
$row['field_name_1'] . "; " . $row['field_name_2'];
    }
?>

Здесь нужно учитывать, что в качестве ключей массива $row нужно использовать имена соответствующих колонок с данными в БД, в случае с дефолтными полями это будут ключи типа nid, title, created, а в случае с данными, выбранными из CCK-полей нужно не забывать добавлять к именам приставку field_.

Список всех доступных в шаблоне полей можно вывести на экран вот так:

<?php
    
foreach ($rows as $count => $row) {
     
$fields = array();
     foreach (
$row as $field => $content) {
        
$fields[] = $field;
     }
    }
    print 
implode(", ", $fields);
?>

Ссылки на другие части этой статьи:

  • Часть 1. Введение
  • Часть 2. Анатомия темы оформления
  • Часть 3. Forms API и темизация
  • Часть 4. Темизация Views

Содержание всех статей: http://romka.eu/blog/my-drupal-articles

  • Drupal
  • Views
  • статья
  • темизация
  • Ромка's blog
  • Quote

с удовольствием, и вашей

Anonymous (не проверено) → Пнд, 02/01/2010 - 16:13

с удовольствием, и вашей помощью постигаю друпал, вопрос такой как настоить "хлебные крошки" на сайте, если используется модуль вьюз.

  • ответить
  • quote
  • -2 points

Спасибо за хорошую серию статей

Logicsun (не проверено) → Втр, 02/09/2010 - 00:22

Прияно читай хороший материал о Друпал. Прродолжай в том же духе
Добавил к себе в закладки на сайте
Спасибо !

  • ответить
  • quote
  • -1 points

в последнем блоке кода нужно

Сергей Клочко → Втр, 02/09/2010 - 01:05

в последнем блоке кода нужно что-то исправить, иначе напечатается только последний $row. Надо делать так:


<?php
    
foreach ($rows as $count => $row) {
     
$fields = array();
     foreach (
$row as $field => $content) {
        
$fields[] = $field;
     }
     print 
implode(", ", $fields);
    }
?>

а в остальном - понравилось содержание подборки статей.

  • ответить
  • quote
  • -4 points

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

Содержание этого поля является приватным и не предназначено к показу.
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Доступны HTML теги: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Строки и параграфы переносятся автоматически.
  • Вы можете использовать тэг <code></code> для подсветки синтаксиса программного кода. Действие тэга "<foo>" аналогично тэгу "[foo]".
  • You may quote other posts using [quote] tags.

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

CAPTCHA
Если вы человек, а не робот, то введите текст с картинки. Если вы робот, то велкам ту майкрософт.ком.
Image CAPTCHA
Enter the characters (without spaces) shown in the image.

Обо мне

Всем привет!
Меня зовут
Роман Архаров, я профессиональный веб-разработчик, программирую на языках PHP, Python и Action-Script, в работе использую фреймворки Drupal и Django. В этом блоге я размещаю заметки и статьи, связанные с моей работой, отдыхом и другими интересными мне темами.

Похожие заметки

  • Несколько статей о Друпале
  • Темизация Drupal. Часть 2. Анатомия темы оформления Drupal
  • Темизация Drupal. Часть 1
  • Пример разработки плагина для модуля CCK
  • Разработка модуля для Drupal. Часть2

Популярные заметки

  • Разработка сайта на Drupal. Часть 4. Пример разработки корпоративного интранет-сайта на Drupal
  • Темизация Drupal. Часть 1
  • Перетаскивание строк таблицы. Table drag and drop — плагин для jQuery
  • Cinnamon Chasers - Luv Deluxe (Music Video)
  • Разработка сайта на Drupal. Часть 2. Архитектура Drupal.
  • Разработка сайта на Drupal. Часть 3. Модули Drupal.
  • Разработка сайта на Drupal. Часть 5. Социальная сеть на Друпале
  • Разработка сайта на Drupal. Часть 6. Оптимизация Друпал
  • Разработка модуля для Drupal. Часть1. Введение
  • Разработка модуля для Drupal. Часть2

Подписка


Последние комментарии

  • Гость → Знак → Явное плоскостопие
  • Anonymous → Swftools и модуль Pdf2SWfField для Друпала → Здравствуйте, Рома! Все
  • Всеволод → Разработка сайта на Drupal. Часть 4. Пример разработки корпоративного интранет-сайта на Drupal → Panels
  • vsevolod → Несколько статей о Друпале → Статьи
  • Looker → Swftools и модуль Pdf2SWfField для Друпала → Привет! Все вроде делаю
  • Feniksss89 → Динамическое добавление элементов к форме → Не получается.
  • Anonymous → Разработка сайта на Drupal. Часть 6. Оптимизация Друпал → У меня на одном из сайтов
  • Anonymous → Модуль "Курсы валют" для Drupal 6 → Модуль
  • Smith → Разработка сайта на Drupal. Часть 4. Пример разработки корпоративного интранет-сайта на Drupal → Thanks for giving out
  • Anonymous → Получение заголовков (headers) страницы при помощи Java-script → индия курсовые по физике

Новые заметки

  • Зима 2010. Поездка в Тайланд, Индонезию и Сингапур. Часть 3 — Бали, Сингапур, Пхукет
  • Зима 2010. Поездка в Тайланд, Индонезию и Сингапур. Часть 2 — Джокьякарта
  • Зима 2010. Поездка в Тайланд, Индонезию и Сингапур. Часть 1 — Пхукет и Джакарта
  • Шпаргалка по командам и хоткеям Unix
  • Семинар по хапкидо в Днепропетровске
  • О планах
  • Несколько статей о Друпале
  • Темизация Drupal. Часть 4. Темизация Views
  • Темизация Drupal. Часть 3. Основы Drupal Forms API и темизация форм
  • Темизация Drupal. Часть 2. Анатомия темы оформления Drupal

Тэги

Индонезия Отдых Работа Штуки-дрюки зима зима 2010 модуль статья темизация dckyiev09 Drupal jquery
еще тэги

Вход для пользователей

Что такое OpenID?
  • Войти по OpenID
  • Скрыть вход по OpenID
  • Зарегистрироваться
  • Запросить новый пароль

Навигация

  • Exchange rate
  • Vote up/down
  • Переход по внешней ссылке
  • Последние сообщения
  • Фотогалереи

Курсы валют

  • 100 Казахских тенге — 20,2044 (-0.06)
  • 10 Украинских гривен — 37,0715 (-0.11)
  • 10 Китайских юаней — 43,5819 (-0.12)
  • 100 Японских иен — 33,0298 (-0.39)
  • 1 Доллар США — 29,7499 (-0.09)
  • 1 Евро — 40,4866 (-0.03)
  • 1000 Белорусских рублей — 10,0984 (-0.05)
  • 1 Турецкая лира — 19,3760 (+0.12)

10 случайных заметок

  • Швабрашвабр2
  • Понедельник начинается в субботу
  • Статья в PC Magazine/RE. Drupal: разработка модуля
  • Темизация Drupal. Часть 3. Основы Drupal Forms API и темизация форм
  • Куба. Лето 2008. Часть 2
  • Разработка модуля для Drupal. Часть1. Введение
  • Перетаскивание строк таблицы. Table drag and drop — плагин для jQuery
  • Статья в журнале PC Magazine
  • Разработка сайта на Drupal. Часть 2. Архитектура Drupal.
  • Рассуждение на тему «Сколько стоит сайт?»

Случайные фото

Дерево в Прамбанане
Парашютист в Варадеро
Я с каким-то дядькой читаю газету
В Сингапурском зоопарке. Леопардовая (бенгальская) кошка.
Эль Ничо. На фоне я.
Желтый арбуз! Ммм, юмми!
Море
Сочи ночью
Копенгаген, Кристиания, Граффити 3
Я, какой-то дед и местные детишки
Закат в Гаване
Тринидад. Лошадка держит домик
Типичная местная женщина
Замок Акерхус вечером
Копенгаген, Кристиания, Граффити 4
Бронзовое море
  • Отдых
  • Работа
  • Штуки-дрюки

При использовании материалов с сайта, пожалуйста, ставьте ссылку на источник. E-mail для связи: mne@romka.eu.