Сохранение ноды неопубликованной





Задача: при добавлении материала анонимным пользователем создавать ноду со статусом "не опубликовано".
Дополнительная плюшка: редирект после создания ноды на нужную вам страницу (по умолчанию анонимные пользователи не видят не опубликованные материалы).

Собственно сам маленький модуль:

function hook_node_presave($node){
  global $user;
  if($node->type=='your_node_type' && !$user->uid){
    $node->status=0;
    drupal_set_message(t('Ваша статья отправлена на премодерацию.'));	
  }	
}

Что касается плюшки, то редирект можно устроить 3 способами (то, что пришло на ум пока писал пост):

  • используя rules
  • назначая $form['redirect'] при альтеринге формы добавления материала
  • добавляя ?destination=my/custom/node/hahaha для страницы добаления материала. Пример: site.com/node/add/page?destination=my/custom/node/hahaha. При создании материала, пользователя перенаправит на страницу site.com/my/custom/node/hahaha

Что касается использования модуля rules, то вот сниппет импорта правила:

{ "rules_redirect" : {
    "LABEL" : "redirect to view",
    "PLUGIN" : "reaction rule",
    "REQUIRES" : [ "rules" ],
    "ON" : [ "node_insert" ],
    "IF" : [
      { "node_is_of_type" : { "node" : [ "node" ], "type" : { "value" : { "page" : "page" } } } }
    ],
    "DO" : [ { "redirect" : { "url" : "path/to/your/view" } } ]
  }
}




Комментарии

Привет! Сделать ноду неопубликованной - просто, а как не выводить дефолтное сообщение о добавлении ноды?

Не сталкивался, но решение можно покопать тут

Добавить комментарий

Plain text

  • HTML-теги не обрабатываются и показываются как обычный текст
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Строки и параграфы переносятся автоматически.
Drupal
03
02 '13 — 23:19:21