Как сохранить пользовательские типы узлов в Drupal 7 - PullRequest
3 голосов
/ 08 августа 2010

Я создал собственный тип узла в Drupal 7, используя метод hook_node_info в файле установки:

// declare the new node type
function foo_node_info ( ) {
  return array(
    'foo' => array(
      'name' => t('Foo entry'),
      'base' => 'node_content',
      'description' => t('For use to store foo entries.'),
  ));
} // END function foo_node_info

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

// INSERT the stuff
node_save(node_submit((object)array(
  'type'    => 'foo',
    'is_new'  => true,
    'uid'     => 1,
    'title'   => 'Title, blah blah blah',
    'url'     => 'url here, just pretend',
    'body'    => '<p>test</p>',
)));

Моя проблема в том, что поля url и body не сохраняются. Есть идеи, что я делаю не так?

1 Ответ

2 голосов
/ 08 августа 2010

Итак, после тонны копания выясняется, что способ ввода пользовательских полей в node_save был неправильным. Параметр node_save должен выглядеть следующим образом:

node_save(node_submit((object)array(
  'type'    => 'foo',
  'is_new'  => true,
  'uid'     => 1,
  'title'   => 'the title',
    'url'     => array(
      'und' => array(array(
        'summary' => '',
        'value'   => 'url value',
        'format'  => 2,
    ))),
    'body'    => array(
      'und' => array(array(
        'summary' => '',
        'value'   => 'the body goes here',
        'format'  => 2,
    ))),
)));

Обратите внимание, что для пользовательских полей структура массива должна соответствовать тому, что ранее происходило с CCK (в значительной степени точно). Первый ключ в массиве, описывающий значение поля, - это язык для содержимого.

Я использовал здесь 'und' только потому, что это то, что я видел, входя в базу данных при вводе данных через форму.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...