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}. Я немного рассортировал свойства объекта, и кое что убрал, заменив (…).

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

Если не работают ЧПУ для drupal под nginx...

Июль 16, 2014 г.

Арендовал у netangels "облачный VDS" и решил попробовать их образ Debian Wheezy Nginx + PHP (php-fpm). С Nginx дела до тех пор не имел, потому с некоторыми настройками пришлось разбираться с чистого листа. На самом деле, единственный вопрос, с ...

Читать

Сборка мусора сессий в Drupal

Ноябрь 25, 2014 г.

В drupal есть дефолтовы настройки для времени жизни кукисов и рандомной чистки сессий. Хранятся они  в файле settings.php. [crayon-6ad61d17ac29d695098166/] Т.е. время жизни сессии устанавливается равным более 23 дней. Если сборка мусора работает ...

Читать

Получить имя поля ключа entity в Drupal 7

Апрель 6, 2021 г.

У меня эта задача возникла при работе с формами, где формы содержат поля '#entity' и '#entity_type'. Нужно было найти универсальный способ прочитать ID объекта, т.к. для каждого объекта имя этого поля может отличаться (для node - nid, для file - fid и ...

Читать

Ошибка в Drupal Adding non-existent permissions to a role is not allowed. The incorrect permissions are "..."

Июль 25, 2023 г.

Такое иногда вылазит как следствие удаления кастомных классов/модулей, создающих собственные права или инициализирующие права через родительский модуль. Как это пофиксить? Права из роли не были удалены штатно, потому придется сделать следующее: ...

Читать
 

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

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



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