node

УрокКорректная работа с полями в седьмом Друпале. Entity metadata wrappers.

В седьмой версии Друпала вывод полей был несколько изменён в связи с усовершенствованием многоязычной системы. Если раньше для вывода содержимого поля достаточно было написать так:

print $node->field_name[0]['value'];

то в семёрке добавился к полю ещё и язык (для одноязычных сайтов по умолчанию 'und' - undefined, константа LANGUAGE_NONE):

print $node->field_name[LANGUAGE_NONE][0]['value'];

Вывод значение поля стал чуть длиннее. Но если бы это было единственной проблемой - тогда и проблем бы не было :) Но здесь в игру вступают мультиязычные сайты. И получается, что если сайт наш англоязычный например, а мы пользовались кодом выше, то значение поля теперь получить не удастся, т.к. теперь надо его получать иначе:

УрокКак программно изменять информацию в ноде

Содержимое ноды можно менять программно при реализации в своём модуле хука hook_nodeapi (для Drupal 6) или хуков nodeapi (для Drupal 7). Для этого сначала надо создать info-файл модуля (mymodule.info) и поместить его в папку sites/all/modules/mymodule.

Для Drupal 6:

УрокНемного о выводе любых cck-полей программно через node.tpl.php

Сегодня я решил рассказать как выводить cck поля через шаблон node.tpl. Часто бывают такие ситуации, что, например, требуется, чтобы данные из cck полей автоматически закидывать в html-таблицу, или формировать её особым образом, требующим обёртки в дополнительные div'ы (или в любые другие тэги). Поэтому надо обязательно знать, каким образом вывести эти поля в своём шаблоне.

Алгоритм вывода не сложен:

УрокОтдельный css для последней ноды

Задача такая: есть страница с выводом всех нод. Надо повесить на последнюю ноду дополнительные классы, чтобы можно было повесить только на неё свой css.

Теперь о решении

Вариант номер раз

Говорю сразу - не самый лучший вариант. Зато явно самый простой. Заключается в следующем - просто последнюю ноду отмечать галочкой "Закреплять вверху списков" (Sticky at top of list). Далее в шаблоне ноды node.tpl.php в первой строчке написать: