Extra Block Types (EBT) - New Layout Builder experience❗

Extra Block Types (EBT) - styled, customizable block types: Slideshows, Tabs, Cards, Accordions and many others. Built-in settings for background, DOM Box, javascript plugins. Experience the future of layout building today.

Demo EBT modules Download EBT modules

❗Extra Paragraph Types (EPT) - New Paragraphs experience

Extra Paragraph Types (EPT) - analogical paragraph based set of modules.

Demo EPT modules Download EPT modules

Scroll

Создаем модуль на Drupal, быстрый старт

02/12/2019, by Ivan

Начнем с api.drupal.org, откройте страницу хука hook_node_presave(), который срабатывает перед добавлением ноды.

http://api.drupal.org/api/drupal/modules!node!node.api.php/function/hook_node_validate/7

Хуки позволяют нам встроить наш код в обычный ход вещей в друпале, добавлять проверки, поля данных, элементы форм и т.д.

Добавляем наш модуль в папку sites/all/modules:

sites/all/modules/custom/

sites/all/modules/custom/custom.info

sites/all/modules/custom/custom.module

В файле custom.info напишите:

name = Custom
description = Custom
core = 7.x

В файле custom.module сделаем проверку того, что в поле содержимого есть хоть что-то, если поле пустое, то выведем ошибку (хотя с тем же успехом мы могли бы в админке друпала поставить обязательность заполнения, но...):

custom.module

<?php

function custom_node_validate($node){
  if(empty($node->body['und'][0]['value'])){
    form_set_error('node-body', 'Body is empty');  //Выводим ошибку и не сохраняем тем самым ноду
  }
}

В нашем случае когда язык на сайте только один, да и тот und (undefined, неопределен), то мы проверяем первый textarea поля body (ведь можно поставить неограниченное количество textarea для полей).

Используйте модуль devel и его функцию dsm(), чтобы вывести на экран сообщение с распечаткой нужного объекта или массива:

<?php

function custom_node_view($node){
  dsm($node);
}