ertttert
Один из первых вопросов, которые задают новички в разработке на Drupal — что такое нода? Нода представляет собой фрагмент контента. Drupal присваивает каждому такому фрагменту контента идентификационный номер, который называется идентификатором ноды (node ID
, а в коде — $nid
). Обычно у нод имеется название (заголовок), которое позволяет администратору просмотреть список нод по их названиям.
Существует множество различных разновидностей нод, или типов нод. Обычно используемыми типами нод являются “запись блога”, “опрос” и “форум”. Часто в качестве синонима для типа ноды применяется термин тип контента (content type
), хотя тип ноды является более абстрактной концепцией, и его можно считать порожденным от базовой ноды, как показано на рис. 7.1.
Тот факт, что все типы контента являются нодами, удобен тем, что они основаны на одной и той же базовой структуре данных. Для разработчиков это означает, что для многих операций весь контент можно считать однотипным с программистской точки зрения. С нодами легко выполнять пакетные операции, и для собственноручно разработанных типов контента сразу же доступно много готовых функций. Поиск, создание, редактирование и управление контентом — эти действия поддерживаются самой средой Drupal на основе базовой структуры данных нод и ее поведения. Это однообразие видно и конечным пользователям. Формы для создания, редактирования и удаления нод выглядят и ведут себя одинаково, что приводит к однотипным и поэтому легко осваиваемым интерфейсам.
Типы нод расширяют базовую ноду, обычно за счет добавления собственных атрибутов данных. Нода типа poll
(опрос) хранит параметры голосования — продолжительность опроса, активен ли опрос в данный момент и могут ли голосовать отдельные пользователи. Нода типа forum
загружает для каждой ноды таксонометрический термин, чтобы знать, где она находится среди всех форумов, определенных администратором. А ноды типа blog
(блог) не добавляют никаких дополнительных данных. Вместо этого они просто добавляют различные представления данных, создавая блоги для каждого пользователя и агрегаторы RSS для каждого блога. У всех нод имеются следующие атрибуты, хранимые в таблицах node
и node_revisions
базы данных.
blog
, story
, article
, image
и т.д.has_title
таблицы node_type
необходимо указать значение 0
.0
означает, что нода не опубликована, т.е. контент скрыт от тех, у кого нет права “администрирование нод”. Значение 1
означает, что нода опубликована, и ее контент видим для пользователей с правами “доступ к контенту”. Отображение опубликованной ноды может быть заблокировано системой управления доступом Drupal уровня нод (см. разделы “Ограничение доступа к типу ноды с помощью hook_access()” и “Ограничение доступа к нодам” далее в главе). Опубликованная нода индексируется модулем поиска, если он активирован.timestamp
таблицы node_revisions
.Disabled
(Отключено).Read only
(Только чтение).Read/Write
(Чтение/запись).http://example.com/?q=node/3
. Следует отметить, что поскольку на странице → (Настройка→Информация о сайте) можно изменять переднюю страницу сайта, сам термин “передняя страница” может ввести в заблуждение. Точнее будет сказать, что страница http://example.com/?q=node
будет содержать все ноды со значением promote
. По умолчанию URL-адрес http://example.com/?q=node
считается передней страницей.http://example.com/?q=node
.sticky
(“приклеенные”), а затем остальные “не приклеенные” ноды в порядке времени создания. Другими словами, ноды sticky “приклеены” к началу списка нод. Значение sticky
, а sticky
.nid
ноды на исходном языке. Например, если нода 3 написана на английском языке, а нода 5 содержит тот же контент, но на русском, то поле tnid
ноды 5 содержит значение 3.При использовании системы ревизий нод Drupal создает ревизии контента, а также отслеживает, кто выполнил последнее изменение.
Пользователи, блоки и комментарии не являются нодами. Каждая из этих специализированных структур данных имеет собственную систему хуков в соответствии с ее назначением. Ноды (обычно) имеют заголовок и тело контента, а в структуре данных,представляющей пользователя, это не требуется. Зато пользователям нужен адрес электронной почты, пользовательское имя и надежный способ хранения паролей. Блоки — это облегченное решение для хранения небольших объемов контента, таких как меню навигации, поле поиска, список последних комментариев и т.д. Комментарии тоже не являются нодами, и поэтому они также относятся к облегченной категории. Вполне возможно, что на нескольких страницах может находиться по 100 и более комментариев, и если каждый из этих комментариев будет проходить при загрузке через систему хуков ноды, это просто катастрофически снизит производительность.
В прошлом было немало споров, должны ли быть пользователи или комментарии нодами, и в некоторых разработанных модулях они действительно представлены как ноды. Учтите, что возврат к этому спору аналогичен крикам “Emacs лучше!” в ответ на требование следовать программистскому соглашению.
Всего комментариев: 0 | |