Можете ли вы предоставить немного больше информации (какие модули?). Как правило, я бы предложил вызывать функции модулей для создания типа контента, а не пытаться передавать его через форму программно. Таким образом, вам не нужно беспокоиться о реализации, и вы можете поверить, что если модуль работает, он будет работать и для вашего скрипта:)
Конечно, это привязывает ваш модуль к их, поэтому любые изменения в их функциях могут повлиять на ваш. (но опять же, вы рискуете, если они тоже обновят свою структуру базы данных)
отл.
// your file.php
function mymodule_do_stuff() {
cck_create_field('something'); // as an example, i doubt this
// is a real CCK function :)
}
edit : vid
и nid
- это идентификаторы узла, vid
- это идентификатор редакции, а nid
- это первичный ключ определенного узла. поскольку это фактический узел, вам может потребоваться выполнить две операции.
программно создать узел
вам нужно будет ссылаться на базу данных для всех точных полей (таблицы node
и node_revisions
), но это должно дать вам базовый рабочий узел:
$node = (object) array(
'nid' => '', // empty nid will force a new node to be created
'vid' => '',
'type' => 'simplefeed'. // or whatever this node is actually called
'title' => 'title of node',
'uid' => 1, // your user id
'status' => 1, // make it active
'body' => 'actual content',
'format' => 1,
// these next 3 fields are the simplefeed ones
'url' => 'simplefeed url',
'expires' => 'whatever value',
'refresh' => 'ditto',
);
node_save($node);
теперь я думаю он должен автоматически вызвать hook_insert()
simplefeed на этом этапе. если нет, то перейдите к 2. но я бы проверил, сработало ли это уже.
называйте это сами!
simplefeed_insert($node);
edit2 : drupal_execute()
тоже неплохая идея, так как вы можете получить некоторую проверку, но таким образом вам не придется иметь дело с API форм, если вам неудобно с этим. я почти уверен, что node_save()
все равно вызывает все хуки, так что вам действительно нужно сделать только шаг 1 под этим методом.