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


Мне нужно написать модуль, который предоставляет свой собственный тип контента. В документации drupal для этого есть руководство; тем не менее, мне пришлось бы иметь дело с логикой CRUD внутри моего модуля. Я думал, что смогу использовать CCK для создания своего нового типа контента с его полями внутри hook_install();. Но я не смог найти никаких руководств о том, как это сделать.

Может ли кто-нибудь привести краткий пример или дать ссылку на какое-нибудь приличное руководство? Это было бы потрясающе.

 4
Author: kiamlaluno, 2011-04-20

4 answers

CCK включает модуль под названием "Копия содержимого". При включении этой функции вы получите вкладку "Экспорт" в разделе "Редактирование" для каждого типа контента. Эта вкладка предоставит вам код, который вы можете скопировать в файл в своем модуле. Если вы сохраните этот файл в /cck/[имя типа].cck и установите значения для $имя_типа и $имя_модуля, вы можете использовать этот код в hook_install(), чтобы добавить тип содержимого:

  $path = $_SERVER['DOCUMENT_ROOT'] . base_path() . drupal_get_path('module', $module_name) . '/cck/' . $type_name . '.cck';
  $content_type = file_get_contents($path);

  $form_state = array();
  $form = content_copy_import_form($form_state, $type_name);

  $form_state['values']['type_name'] = '<create>';
  $form_state['values']['macro'] = $content_type;
  $form_state['values']['op'] = t('Import');

  content_copy_import_form_submit($form, $form_state);
 4
Author: Scott Reynen, 2011-04-22 03:23:54

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

CCK фактически не обрабатывает создание новых типов контента, что является частью модуля узла (ядро Drupal). Если вы хотите добавить узел, как если бы это было сделано через интерфейс, и не хотите использовать функции, которые вы должны использовать hook_node_info:

/**
 * Implementation of hook_node_info().
 */
function module_node_info() {
  $items = array(
    'activity' => array(
      'name' => t('Name'),
      'module' => 'node',
      'description' => t('Description.'),
      'has_title' => '1',
      'title_label' => t('Title'),
      'has_body' => '1',
      'body_label' => t('Body'),
      'min_word_count' => '0',
      'help' => '',
    ),
  );
  return $items;
}

Установка узла в качестве владельца типа узла позволяет ему обрабатывать грязь и т. Д.

 5
Author: googletorp, 2011-04-20 14:16:50

Создание пользовательских полей CCK полезно для понимания того, как создавать пользовательские поля CCK, виджеты и форматеры; примера кода должно быть достаточно, чтобы вы могли начать.
Что такое Конструкторский комплект контента? Представление из базы данных представляет собой введение в CCK для Drupal 5, но оно все еще действует для Drupal 6.
Создание настраиваемого составного поля для CCK - еще одна интересная статья, в которой объясняется, как создать поле CCK, в котором используется более одного поля формы за его вклад.
Программное создание поля CCK в Drupal 6 объясняет, как создать поле из кода, например, в коде установки модуля, которому необходимо добавить определенное поле для типа контента.

 4
Author: kiamlaluno, 2011-04-20 14:47:13

Вашей лучшей ссылкой будет взглянуть на модуль Примеры.

 2
Author: markie, 2012-03-07 03:28:17