node.tpl.php, список доступных переменных (Drupal 5)

Вольный перевод от начинающего друпаллурга.

Для версий Drupal 5 и ранее.

Этот шаблон используется для отображения материалов сайта, как в полном режиме, так и в режиме списка. Он может влиять только на вывод переменной $content.

Доступные переменные

$content

Полное содержимое материала, анонс в режиме списка.

$date

Отформатированная дата создания материала

$directory

Полный путь к каталогу текущей темы, например themes/garland или themes/garland/minelli.

$id

Идентификатор ID материала.

$is_front

ИСТИНА, если текущая страница является заглавной.

$links

Список ссылок данного материала.

$main (4.6)

ИСТИНА, если материал появляется в контексте списка подобном заглавной странице, где показываются только анонсы. Переменная недолго употребляется в версиях 4.7 и выше.

$name

Отформатированное имя автора со ссылкой.

$node (Объект)

Объект материала. Чтобы просмотреть все свойства текущего объекта $node вставьте в ваш файл node.tpl.php строчку кода

 <pre><?php print_r($node); ?></pre>

$node_url

Путь на страницу данного материала.

$page

ИСТИНА, если данный материал показывается на своей странице.

$picture

HTML-код аватара пользователя, если данная возможность включена.

$sticky

ИСТИНА, если статус материала «Закрепить вверху списков».

$submitted

HTML-код Автор и дата создания, если показ этой информации включен для этого типа материала.

$taxonomy (Массив)

Массив HTML-кода ссылок на термины таксономии данного материала.

$teaser

ИСТИНА, если материал отображается в виде анонса

$terms

HTML-код всех ссылок на термины таксономии данного материала.

$title

Заголовок материала.

$zebra

Значение, показывающее четный (even) или нечетный (odd) номер материала в списке.

Примечания:

Как распечатать список всех доступных переменных?

Вывод массива переменных

<?php
print '<pre>';
print_r(get_defined_vars());
print '</pre>';
?>

Вывод массива переменных с HTML-разметкой.

<?php
print '<pre>';
print htmlspecialchars(print_r(get_defined_vars(), TRUE), ENT_QUOTES);
print '</pre>';
?>

Шаблон по умолчанию для версии 5.x

<div id="node-<?php print $node->nid; ?>" class="node<?php if ($sticky) { print ' sticky'; } ?><?php if (!$status) { print ' node-unpublished'; } ?> clear-block">

<?php print $picture ?>

<?php if ($page == 0): ?>
  <h2><a href="<?php print $node_url ?>" title="<?php print $title ?>"><?php print $title ?></a></h2>
<?php endif; ?>

  <div class="meta">
  <?php if ($submitted): ?>
    <span class="submitted"><?php print $submitted ?></span>
  <?php endif; ?>

  <?php if ($terms): ?>
    <span class="terms"><?php print $terms ?></span>
  <?php endif;?>
  </div>

  <div class="content">
    <?php print $content ?>
  </div>

<?php
  if ($links) {
    print $links;
  }
?>

</div>

Шаблон по умолчанию для версии 4.7

<div class="node<?php if ($sticky) { print " sticky"; } ?><?php if (!$status) { print " node-unpublished"; } ?>">
  <?php if ($page == 0): ?>
    <h2><a href="<?php print $node_url ?>" title="<?php print $title ?>"><?php print $title ?></a></h2>
  <?php endif; ?>
  <?php print $picture ?>

  <div class="info"><?php print $submitted ?><span class="terms"><?php print $terms ?></span></div>
  <div class="content">
    <?php print $content ?>
  </div>
<?php if ($links): ?>

    <?php if ($picture): ?>
      <br class='clear' />
    <?php endif; ?>
    <div class="links"><?php print $links ?></div>
<?php endif; ?>
</div>

Источники:

Node.tpl.php, Drupal theme developer's guide (v5 and earlier)

Дополню с Вашего позволения ))

Есть классный модуль "devel" используя его мы всегда сможем посмотреть все доступные переменные на любой странице сайта.
а так же если необходимо "продебажить" написанное или узнать значение переменной в какой-то определенной строчке кода, то там есть классная функция dpr() которая форматированно выведем Вам не только строковое значение но и массив в развернутом виде.

спасибо много

спасибо много нового узнал о переменных

А о Drupal 6 можете

А о Drupal 6 можете что ли бо сказать?

Drupal 6

Текущая страница

Как получить адрес текущей страницы?

$node_url

$node_url

Спасибо. Мне тоже

Спасибо. Мне тоже пригодилось.

Ух. спасибо еле

Ух. спасибо еле нашел это. уже наверное неделю искал.

Очень просто: 10 сек

Всего лишь Гугль: node.tpl.php переменные

:)

Огромнейшее

Огромнейшее вам спасибо за этот материал.

А нет ли переменной для закрепленного сверху контента

Типа переменной content_sticky

???

Это как? Т.е. что в ней должно быть?

$content

Вот есть переменная $content, а есть ли переменная которая выводит только полный текст??? Просто есть необходимость выводить анонсы в одном месте, а на странице термина нужны только полные тексты.

Пропарси $node

Навскидку непомню. Что-то типа $node->body...

Спасибо. а я то

Спасибо. а я то бился над этим давно искал подобный список переменных.

Тоже

Тоже присоединяюсь к вопросу о переменной $content

Парсите $node

Спасибо

Спасибо за ссылку. Пригодилась

Спасибо

Действительно отличная ссылка. Нашел для себя новую инфу.

Интересно знать

А как вставить значок статуса ICQ автора поста в каждом посте.

А где?

Ваш вопрос риторический, безотносительно фукционала используемого сайта (форума, блога). Задача превратить номер аськи в вышеприведенный код решается на каждом движке по своему.

P.S. И вот уже запостив ответ заметил, что ваш коммент не в статье про асю, а в статье про друпал...

Я не смотрел код модулей расширенного профиля для D, но уверен, что для вывода полей профиля применяются функции темизации, перехватив которые можно изменить вывод той же аси.

Ответ

Просто есть идея создания блога - сообщества авторов на Drupal. Функция подобная есть в движках IPBoard, но держать такой форум тяжеловато. Вот. Идея в том что читатель сможет быстрее достучаться до автора по аське, а не ждать пока он ответит на его призывы в коментах поста, т.к. Автор не всегда может наблюдать картину происходящего на блоге, а в аське за частую все сидят целыми днями.

Нормальные

Нормальные люди, пишущие нормальные посты обычно отслеживают ситуацию. Для этого есть треккеры, извещения по почте и RSS-ленты.
Но добавить ссылку на быстрый вызов ICQ буде такая есть в профиле тоже возможно. Как я уже говорил выше, надо просто темизировать вывод этого поля профиля пользователя.

И кстати, чем

И кстати, чем плох drupal.ru в качестве «блога - сообщества авторов на Drupal»

Ответ

Я не знаю чем плох drupal.ru . Я просто спросил о возможностях Drupal. Буду пробывать и ошибаться и учиться...

Похвальное желание

Про темизацию полей CCK я уже как-то писал заметку http://shaman.asiadata.ru/node/122

По полям профилей еще не разбирался, но думаю там функционал мало чем отличается, так что принципы работы должны подойти.

Drupal

Как успехи в изучение? Drupal - не простой движок, но есть в нем одно несомненное достоинство: если не ставить слишком сложных задач, то на первичное изучение достаточно недели. А дальше можно наращивать функционал, подключая всё новые и новые модули. Подсев на друпал мне, например, другие движки уже не интересны. А возможности у него практически безграничны.

Согласен

Но для меня его мощь заключается в легкости интеграции своего кода. Я как минимум две своих функционально сложных разработки перевел на Drupal... И разрабатываю дальше.

Немного не

Немного не понял, а нужно ли знать такие тонкости? Потихоньку осваиваю друпал уже год, есть несколько сайтов на этом движке, но так глубоко еще не нырял.

Глубоко?

Список переменных доступных в шаблоне должен знать даже верстальщик делающий темы для движка. Не надо для этого быть программистом. Это не тонкости...

Благодарю

Спасибо. Узнал много полезно. Если никто не возражает - буду заглядывать)

И друзей приводите...

:)

Отлично! Всё в

Отлично! Всё в одном месте :)
Вы не представляете как мне помогли! Спасибо!

респект автору

Спасибо за перевод о переменных, ясно и понятно.

Как вовремя я

Как вовремя я натолкнулся на этот материал. Спасибо, Вы очень помогли мне!

---
санаторий предгорный

Всё понятно изложено.

Кое-что сам знаю, но почерпнул довольно-таки много нового.

Неплохой материальчик, даже я

Неплохой материальчик, даже я б сказал нужный, уже второй раз ищу и нахожу именно здесь

Оно уже давно на api.drupal.ru

Выложил это уже давно в переводы на api.drupal.ru

Спасибо за информацию, давно

Спасибо за информацию, давно искала и очень пригодилась

Вопрос

Простите за ламовский вопрос и если он не в тему, но как реализовать подключение определенного шаблона с помощью модуля?

Напишите реализацию

Напишите реализацию hook_theme (формат данных смотрите в документации). Там укажите имя файла. Потом просто используйте описаную функцию темизации

Использовать потом какую функцию темизации?

Функцию theme()?

Посмотрите реализацию в ядре.

Посмотрите реализацию в ядре. Например модуль comment.

Строка 160 в comment.module, функция comment_theme():

    'comment' => array(
      'template' => 'comment',
      'arguments' => array('comment' => NULL, 'node' => NULL, 'links' => array()),
    ),

Это объявление шаблона comment.tpl.php

Теперь вызов theme('comment', ....) будет использовать шаблон автоматически. А в строке 1683 есть функция template_preprocess_comment, которая обрабатывает переменные для этого шаблона.

Просто сделайте в своём модуле по такому же образцу.

Update: только сейчас заметил, что я о шестом друпале, а у вас вопрос про пятый. В общем-то там принципы те же. Курите код ядра...

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

Содержание этого поля является приватным и не предназначено к показу.
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Доступны HTML теги: <a> <em> <strong> <cite> <code> <s> <u> <ul> <ol> <li> <dl> <dt> <dd>
  • Строки и параграфы переносятся автоматически.
  • You can enable syntax highlighting of source code with the following tags: <code>, <blockcode>. Beside the tag style "<foo>" it is also possible to use "[foo]".
  • Images can be added to this post.

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

CAPTCHA
Защита от спама: ответьте на вопрос.
Image CAPTCHA
Введите символы с картинки. Только заглавные буквы английского алфавита.