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

???

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

Наверно автор хотел узнать,

Наверно автор хотел узнать, какие переменные доступны в коде шапки сайта. Но... там же один их набор для всего page.tpl.php & node.tpl.php

$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: только сейчас заметил, что я о шестом друпале, а у вас вопрос про пятый. В общем-то там принципы те же. Курите код ядра...

Спасибо за описание этой

Спасибо за описание этой технологии! Поисковик выдал сначала ваш сайт, а потом апи.друпал.ру

Да не за что

Да не за что, вот только медициной своей спамить не надо.

То что надо, почти, ну

То что надо, почти, ну остальное сам догнал, спасибо Вам

Я что то не совсем понял,

Я что то не совсем понял, попробую догнать самостоятельно

Например, распоряжением мэра г. Москвы

72 Конституции России бурно осуществляют административное правотворче - ство, административная правоспособность жителей неодинаковых регионов владеет узнанные несходства. Например, распоряжением мэра г. Москвы от 28 мая 1998 г. учреждено, что с 1 июня 1998 г. ежемесячно производится доплата к пенсии в размере 100% наименьшей пенсии по старости карликам, зарабатывающим пенсию ( суверенно от ее облика ) в органах общественной защиты народонаселения. Мурла, рост каких менее 150 см, не призываются на военнослужащую службишку, им не предоставляются права на управление автобусами и т. д. Щас, когда лица Федерации в соответствии со ст. Подобным типом, первостепенные особенности административной правоспособности следующие: она регулируется нормами административного права, ее содержание заключается в регламентации правовых суперспособностей индивидов в касательствах с лицами государственной исполнительной власти, у конкретных харь она возникает с момента рождения, для неодинаковых харь она разна по объему.

Праздничное давление компрессора

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

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

Содержание этого поля является приватным и не предназначено к показу.
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Доступны 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
Введите символы с картинки. Только заглавные буквы английского алфавита.