Разрешить анонимным пользователям создавать неопубликованные узлы в Drupal?
Я создаю сайт для клиента на основе drupal, и клиент хочет, чтобы анонимный пользователь (не вошедший в систему) мог создать новый узел, но только неопубликованный. Затем администратор может просмотреть узел и изменить его перед публикацией.
Я посмотрел на использование триггеров и действий, но написание пользовательского модуля триггера кажется немного сложным, поскольку в настоящее время я не очень хорошо разбираюсь в API Drupal. Любые идеи приветствуются.

Ответы - Разрешить анонимным пользователям создавать неопубликованные узлы в Drupal? / Allow anonymous users to create unpublished nodes in Drupal?






23.01.2011 01:44:15
Вы можете установить статус публикации по умолчанию на неопубликованный - и скрыть это поле от анонимных пользователей.
Затем вы можете создать представление-или просто использовать ссылку на контент в разделе администратора для просмотра страниц, которые анонимны для автора и не опубликованы, - затем вы можете просмотреть узлы оттуда.

23.01.2011 03:04:33
Спасибо идет к @mirzu. Для тех, кто заинтересован, я использовал следующий код:
function hook_nodeapi($node, $op, $a3 = NULL, $a4 = NULL)
{
global $user;
if( $op == 'presave' && !$user->uid)
{
db_query('UPDATE node SET status="0" WHERE nid="' . $node->nid . '"');
}
}

23.01.2011 04:38:07
Вы можете сделать это без пользовательского кодирования или триггеров / действий.
Вы можете использовать 2 разных типа узлов, по одному для каждой группы, а затем обрабатывать их одинаково при отображении. В качестве альтернативы вы должны быть в состоянии, в" presave " op nodeapi публиковать или не публиковать в зависимости от роли.
Просто установите для типа контента анонимные пользователи значение "статус" по умолчанию "неопубликовано" и задайте разрешения для типа контента, чтобы разрешить анонимным пользователям создавать этот тип контента.


01.05.2013 05:24:03
Для Drupal 7 Вы можете применить @решение Mirzu таким образом :
function <your-module-name>_node_presave($node) {
if (user_is_anonymous())
$node->status = FALSE; // means unpublished
}
Конечно, вы можете сделать это наоборот :
Определение типа контента, который должен быть неопубликован,а затем настройка его публикации для проверенных пользователей в крючке.