Здравствуйте.
Проблема при автоматическом создании ноды после регистрации.
Написал совсем мини-модуль который после регистрации должен создавать ноду.
Вот код:
$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);
}
}
После регистрации вылетает ошибка
Выяснил только, что косяк в node_save(); но вот как его исправить я не знаю.
У кого-нибудь была такая проблема?
Может сделать как то по другому, например триггеры использовать?
Решение: использовать Rules
Комментарии
Не дублируйте node_save. node_submit
По поводу ошибки это всё ? Если есть возможность узнайте на что ругается mysql.
Возможно у вас установлено какое то значение невозможное для node_schema.
Shok211
node_save != node_submit и не дублирует одно, другое.
dmitrymenshikov
Попробуйте сохранять с минимальными настройками полей. Сначала просто $node->title = 'Title'; Возможно проблема в каком-то свойстве, которое не хочет сохраняться.
При помощи модуля Rules это вполне просто реализовать.
Эвент: после регистрации пользователя.
Экшен: Создать сущность: материал.
Вот и все..
Спасибо, попробую.
Вопрос снят, Rules помог, еще раз спасибо.
То есть материал создается АВТОМАТОМ сразу после регистрации пользователя? А каким образом заполняются поля ноды?
Стоит задача: при регистрации пользователя нужно создать страницу компании (с названием, описанием и логотипом), где этот пользователь работает.
Возникает также вопрос, что делать если такая фирма уже существует, как предоставить пользователю выбрать регистрацию фирмы или выбор ее из выпадающего списка?
Например, можно в форму регистрации добавить поле с автозаполнением "Ссылка на термин", где термином будет название фирмы. При его заполнении новые термины будут добавляться в словарь, а существующие подсвечиваться по мере ввода. Далее в рулезах надо будет настроить, что бы название ноды бралось из этого термина.
Что Вы все усложняете то...Нода программно создается ТАК
Хорошо, а где этот код прописать? В тех же рулезах в ПХП или есть другие варианты?
кто в коде не силен, тому, как раз, сложнее будет программно ее создать, чем настроить рулес.
Ну вот dmitrymenshikov реализовал в своем модуле hook_user_insert, вот в нем и прописать. Прописать нужно там где нужно в зависимости от того какое событие Вам нужно обработать...Вот у Дмитрия это регистрация нового пользователя например...
Прокачивайте свой скилл кодирования...В серьезных проектах без этого никак...