Создать узел программно при установке модуля

Я хочу, чтобы мой модуль создавал новые узлы (страницу) при установке и удалении этих страниц при удалении.

Я пробовал следующее без успеха в файле mymodule.install:

<?php

function mymodule_install() {

  $node = new stdClass(); // We create a new node object
  $node->type = "page"; // Or any other content type you want
  $node->title = "Your title goes jere";
  $node->language = LANGUAGE_NONE; // Or any language code if Locale module is enabled. More on this below *
  $node->uid = 1; // Or any id you wish
  $node->path = array('alias' => 'your_node_path'); // Setting a node path
  node_object_prepare($node); // Set some default values.

  // Let's add standard body field
  $node->body[$node->language][0]['value'] = 'This is a body text';
  $node->body[$node->language][0]['summary'] = 'Here goes a summary';
  $node->body[$node->language][0]['format'] = 'filtered_html'; // If field has a format, you need to define it. Here we define a default filtered_html format for a body field

  $node = node_submit($node); // Prepare node for a submit
  node_save($node); // After this call we'll get a nid  

}

Этот код вырезано n 'вставить из этой страницы .

При отключении /включении модуля страница не создается (по крайней мере, она не отображается в Контенте и в таблице узлов базы данных).

Как мне это сделать?

6 голосов | спросил Pascal 8 J0000006Europe/Moscow 2012, 20:13:56

1 ответ


3

Проблема в том, что установка /удаление и включение /выключение - это две разные вещи в Drupal.

При включении или отключении модуля hook_enable() и hook_disable() соответственно.

Когда вы устанавливаете или удаляете модуль, hook_install() и hook_uninstall() соответственно.

Если вы хотите сохранить код в hook_install() /hook_uninstall() вам нужно отключить модуль, а затем удалить его на http: //mysite .com /администратор /модули /удалить . После его повторной установки (который также включит его) ваш код будет запущен.

Возможно, стоит подумать, лучше ли этот код в hook_enable() /hook_disable(), но это будет зависеть от вашей конкретной ситуации.

ответил Clive 8 J0000006Europe/Moscow 2012, 21:04:51

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

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

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