Drupal node, объект публикаций в друпал

Drupal — это прежде всего CMS, т.е. система управления контентом. Поэтому все в drupal так или иначе связано с главным объектом системы — с нодами (nodes). Опросы, статьи, разделы сайта, голосования и публикации в форуме — это все экземпляры объекта node, разные типы публикаций.

Модуль node

Управлять публикациями позволяет модуль ядра — Node. Он формирует базовые зацепки для программирования, реализует редактор публикаций, организует интерфейс для создания новых типов публикаций и т.д — все базовые возможности работы с публикациями.

Одной из базовых концепций drupal является проектирование типов публикаций. Когда вы приступаете к новому сайту на Drupal, вы думаете о том, какие типы публикаций вам понадобятся, какие дополнительные свойства, поля им будут нужны. Далее можно планировать внешний вид, шаблоны типов публикаций, создание доп. кода на PHP.

Управление типами публикаций (типами node) выполняется администратором сайта:

Administration > Structure > Content types
http://example.com/admin/structure/types.

А настройка каждого из типов:

Administration > Structure > Content types > [Specific content type]
http://example.com/admin/structure/types/[system-type-name].

В Drupal 6, почти всегда базовый функционал расширяется подборкой модулей CCK, а в Drupal 7 — конструирование полей берут на себя модули ядра.

Управление содержимым

Для управления содержимым модуль Node предоставляет в админке раздел
Administration > Content
http://example.com/admin/content
где вы найдете список всех публикаций, сортированный по дате их последней правки.

Node реализует также концепцию версий или ревизий содержимого. В проектах, где над содержимым сайта работает 1-2 человека — это не очень актуально. Но в сложных проектах, где трудятся десятки редакторов — создание версий содержимого бывает очень востребовано.

Каждая публикация имеет собственный node ID. К примеру, добавив к адресу сайта /node/[nodeID], вы увидите публикацию с соответствующим ID (при условии, что у вас есть соответствующие на это права). А набрав адрес /node/[nodeID]/edit или /node/[nodeID]/delete — вызвать соответственно форму редактирования или удаления материала.

Права доступа

Модуль node, позволяет сформировать права доступа, редактирования и удаления для каждого типа контента. Соответствующие флажки появляются в секции управления правами — /admin/people/permissions.

Элементы Drupal Node API

Управление публикациями в back-end только верхушка айсбера из всего того что, даёт модуль Node и Drupal как CMS. Для работы с публикациями программист получает полноценный API функций на PHP.

Вот некоторые из них:

function node_load(nodeID);
function node_load_multiple(nodeIDs);

Эти две функции предназначены для загрузки данных публикаций. Первая вернет вам объект ноды с указанным ID, а вторая вернет целый массив объектов публикаций, соответствующий переданному массиву идентификаторов.

Полученный таким образом объект, можно модифицировать и сохранить:

function node_save($node);

Функции загрузки и сохранения активируют соответствующие зацепки, связанные с публикацией. В итоге вы получаете весь набор полей публикации при загрузке, включая дополнительные поля, созданные в конструкторе, и вызов необходимых обработчиков при сохранении.

Если в коде вам необходимо сверстать ноду, воспользуйтесь функцией node_view():

drupal_render(node_view($node, $view_mode = ‘full’, $lang_code = NULL));

Здесь:

  • $node — объект ноды,
  • $view_mode — тип отображения ‘full’ — полный, ‘teaser’ — сокращенный (используется, например, в лентах),
  • $lang_code — код языка, по умолчанию используется текущий глобальный код. Нужен для сайтов, содержащих многоязычный контент.

function node_delete($nid);
function node_delete_multiple($nids);

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

Объект Node в drupal 7

Объект, загруженный функцией node_load(), представляет экземпляр класса stdClass. Большинство свойств взяты из таблицы {node}. Я немного рассортировал свойства объекта, и кое что убрал, заменив (…).

Мало букафф? Читайте есчо !

Как зацепиться за редактор формы параграфа (paragraph)

Январь 25, 2022 г.

В Drupal 8 есть хорошая зацепка ко всей форме параграфа - hook_field_widget_WIDGET_TYPE_form_alter , а в семерке можно зацепляться за отдельные поля формы - hook_field_widget_form_alter. Рассмотрим примеры реализации этих зацепок. Drupal 7 ...

Читать

Миграция картинки по URL в Media поле (Drupal)

Март 3, 2024 г.

Мне нужен был обработчик для migration API, который создаёт media entity по URL и возвращает его ID. Обработчики представляют из себя расширения ProcessPluginBase, которые нужно размещать в папке /src/Plugin/migrate/process вашего модуля. Файл ...

Читать

Вывод сообщений валидации формы рядом с формой

Март 20, 2019 г.

При возникновении ошибок, во время проверки формы друпал выполняет две вещи, которые отражаются на фронт-энд - добавляет сообщение об ошибке в стек сообщений и маркирует классом error поле, содержащее ошибку. Если форма находится далеко от места вывода ...

Читать

Проверить роль пользователя в twig

Август 16, 2023 г.

Многие стандартные шаблоны в Drupal содержат вывод переменной пользователя (user), что делает возможным реализацию различной логики, в том числе и проверку роли пользователя. Например, вы желаете показывать какой-то элемент шаблона, только для ...

Читать
 

Комментарии к «Drupal node, объект публикаций в друпал»

Понравилась статья? Есть вопросы? - пишите в комментариях.



Комментарий: