[РЕШЕНО] Автоматическое создание ноды

Аватар пользователя dmitrymenshikov dmitrymenshikov 30 июля 2012 в 15:08

Здравствуйте.
Проблема при автоматическом создании ноды после регистрации.

Написал совсем мини-модуль который после регистрации должен создавать ноду.
Вот код:

function user_autonode_user_insert(&$edit, $account, $category) {
  $node = new stdClass();
  $node->type = "comment";
  node_object_prepare($node);

  $node->title    = 'Title';
  $node->language = LANGUAGE_NONE;

  $node->uid = $account->uid;

  $path = 'alias_'.$account->uid;
  $node->path = array('alias' => $path);
 
  $node->status  = 1;
  $node->promote = 0;
  $node->sticky  = 0;
  $node->comment = 2;

  if($node = node_submit($node)) {
    node_save($node);
  }
}

После регистрации вылетает ошибка

PDOException: в функции drupal_write_record() (строка 7013 в файле C:\openserver\domains\192.168.1.2\allstoy\includes\common.inc).

Выяснил только, что косяк в node_save(); но вот как его исправить я не знаю.
У кого-нибудь была такая проблема?
Может сделать как то по другому, например триггеры использовать?

Решение: использовать Rules

Комментарии

Аватар пользователя Shok211 Shok211 30 июля 2012 в 16:00

Не дублируйте node_save. node_submit

По поводу ошибки это всё ? Если есть возможность узнайте на что ругается mysql.
Возможно у вас установлено какое то значение невозможное для node_schema.

Аватар пользователя emzzy emzzy 30 июля 2012 в 16:24

Shok211
node_save != node_submit и не дублирует одно, другое.

dmitrymenshikov
Попробуйте сохранять с минимальными настройками полей. Сначала просто $node->title = 'Title'; Возможно проблема в каком-то свойстве, которое не хочет сохраняться.

Аватар пользователя aa2007 aa2007 30 июля 2012 в 18:10

При помощи модуля Rules это вполне просто реализовать.
Эвент: после регистрации пользователя.
Экшен: Создать сущность: материал.

Вот и все..

Аватар пользователя buldozer_kpi buldozer_kpi 7 августа 2012 в 17:16

То есть материал создается АВТОМАТОМ сразу после регистрации пользователя? А каким образом заполняются поля ноды?

Стоит задача: при регистрации пользователя нужно создать страницу компании (с названием, описанием и логотипом), где этот пользователь работает.

Возникает также вопрос, что делать если такая фирма уже существует, как предоставить пользователю выбрать регистрацию фирмы или выбор ее из выпадающего списка?

Аватар пользователя aa2007 aa2007 7 августа 2012 в 23:24

Например, можно в форму регистрации добавить поле с автозаполнением "Ссылка на термин", где термином будет название фирмы. При его заполнении новые термины будут добавляться в словарь, а существующие подсвечиваться по мере ввода. Далее в рулезах надо будет настроить, что бы название ноды бралось из этого термина.

Аватар пользователя buldozer_kpi buldozer_kpi 8 августа 2012 в 12:21

kopernik21187 wrote:
Что Вы все усложняете то...Нода программно создается ТАК

Хорошо, а где этот код прописать? В тех же рулезах в ПХП или есть другие варианты?

Аватар пользователя aa2007 aa2007 8 августа 2012 в 12:00

кто в коде не силен, тому, как раз, сложнее будет программно ее создать, чем настроить рулес.

Аватар пользователя kopernik21187 kopernik21187 8 августа 2012 в 13:46

Ну вот dmitrymenshikov реализовал в своем модуле hook_user_insert, вот в нем и прописать. Прописать нужно там где нужно Smile в зависимости от того какое событие Вам нужно обработать...Вот у Дмитрия это регистрация нового пользователя например...

Аватар пользователя kopernik21187 kopernik21187 8 августа 2012 в 13:48

"aa2007" wrote:
кто в коде не силен, тому, как раз, сложнее будет программно ее создать, чем настроить рулес.

Прокачивайте свой скилл кодирования...В серьезных проектах без этого никак...