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 | |