Каков правильный способ программного задания параметров типа узла?

Вчера я узнал, что правильный способ создания типа узла - это реализовать hook_node_info внутри файла .module. До того, как я программно создавал типы узлов в файле .install через node_type_save, например:

// Create node type
$type = array(
  'type' => 'fruits',
  'name' => st('Fruits'),
  'base' => 'node_content',
  'description' => 'Contains information about fruits.',
  'custom' => 1,
  'modified' => 1,
  'locked' => 0,
);
$type = node_type_set_defaults($type);
node_type_save($type);

Я также задавал параметры типа узла в файле .install, например:

// Set 'fruit' options.
variable_set('node_preview_fruit', 0);                     // Set 'Preview before submitting' to 'Disabled'.
variable_set('node_options_fruit', array('status'));       // Set 'Default options' to 'Published'.
variable_set('node_submitted_fruit', 0);                   // Unset 'Display author and date information'.
variable_set('comment_fruit', COMMENT_NODE_CLOSED);        // Set 'Default comment setting for new content' to 'Closed'.
variable_set('menu_options_fruit', array('navigation'));   // Set 'Available menus' to 'Navigation'.
variable_set('menu_parent_fruit', 'navigation:0');         // Set 'Default parent item' to '<Navigation>'.

Это правильный способ программно установить параметры типа узла: например, внутри файла .install, даже если сам тип узла создается внутри файла .module?

6 голосов | спросил 24ma13wg 14 J000000Sunday13 2013, 03:28:13

2 ответа


2

Глядя на код node_type_form_submit вы можете видеть, что переменные устанавливаются перед node_type_save() функция называется. Подумав об этом немного, это не имеет большого значения, поскольку информация типа узла сохраняется в другой таблице, чем переменные. Поэтому, пока переменные устанавливаются синхронно с созданием типа узла, это не имеет значения. Даже в этом случае в худшем случае вы будете иметь избыточные переменные в таблице variables. Это не большая проблема.

Итак, чтобы ответить на вопрос, да, это правильный путь. Однако я бы сделал это в том же вызове функции в файле .install, возможно, реализовал его в hook_install или hook_enable в зависимости от того, что вам нужно.

ответил Beebee 16 J000000Tuesday13 2013, 17:38:19
0

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

  1. создать функцию, содержащую тип контента, который вы хотите создать при включении модуля

  2. проверить код, который он генерирует

    - > hook_field_info определяется в отдельном файле inc и включает его в .module, требуя один раз

как функция следует всем лучшим методам drupal для кода, поэтому я думаю, что это лучший способ

ответил Anup singh 19 J000000Friday13 2013, 13:52:56

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132