Вы здесь

Как разрешить пользователям писать статьи в конкретных разделах сайта

0

Добрый день.

Как разрешить обычным пользователям писать статьи только в конкретных разделах сайта?

Например, пользователь регистрируется, и ему разрешено писать статьи (создавать новые ) только в определенных разделах сайта. (Разделы сайта для всех пользователей одни).

Помогите пожалуйста, как настроить?

PS
Сайт строю на drupal 7

Версия Drupal: 
7.x
Категория: 
User API
Вопрос задан 12.11.2015 - 20:26

Ответы

1

Вам надо в Правах доступа (/admin/people/permissions) разрешить Авторизованым пользователям или определенной группе (которую вы создадите сами) добавлять материал нужного вам типа.
Например для типа материала Article:
Article: Создание новых материалов
Article: Редактирование собственных материалов


У меня на скриншоте пользователи которые входят в группу Редактор могут создавать новый материал, а также его редактировать, но удалить его не смогут, сделать это могут только Администраторы

P.S. Посоветую так же посмотреть данное видео http://podrupalim.com/osnovy-drupal-7/upravlenie-polzovatelyami
а лучше просмотреть весь видеокурс http://podrupalim.com/kursy

Ответ дан 13.11.2015 - 07:44
Аватар пользователя pr0g
pr0g
36

Спасибо. Как дать права пользователям я понял.
Как создать блок тоже.
Но что мне написать в блоке, чтобы сама статья располагалась именно в выбранной категории, т.е. в том же ноде (например /node/18)(чтобы нельзя было выбрать, где размещать статью)?
Иначе статья создается уже в новом ноде.

Комментарий оставлен 13.11.2015 - 09:40

Но что мне написать в блоке, чтобы сама статья располагалась именно в выбранной категории, т.е. в том же ноде (например /node/18)(чтобы нельзя было выбрать, где размещать статью)?
Иначе статья создается уже в новом ноде.

Я не понял что вы хотите. Можно поподробнее?

Комментарий оставлен 13.11.2015 - 10:40

Конечно.
Пользователь заходит на страницу (например, node/4) нажимает ссылку и пишет статью (Article). Всё нормально.
Но drupal создает для этой статьи новый нод (новую страницу, например node/17) и статья нигде не видна, кроме как в материалах администратора.
Как сделать так, чтобы статья размещалась на той же странице (node/4)?

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

Комментарий оставлен 13.11.2015 - 10:48

Если пользователю надо что-то добавить в ноду с id 14 то ее надо редактировать (node/14/edit). В вашем случае пользователь создает новую статью и id у нее будет другой. Чтобы собрать все ноды вместе по какому-то условию придется использовать модуль Views

P.S. Советую Вам посмотреть видео-курсы по друпал, многие вопросы отпадут сами собой.

Комментарий оставлен 13.11.2015 - 13:20

Спасибо.
Хочу еще попробовать реализовать свою идею через Guestbook

Комментарий оставлен 13.11.2015 - 14:03
-1

я знаю как это сделать. http://tlito.ru/node/11/ отсюда можно исправить код (для поля field_firm в данном случае)

/* BASE_FORM_ID : node_form */
/* Displays only terms that have Entity Reference field with current user reference */
//$form['field_firm']['und'][1551]= array('#access' => FALSE); //hides taxonomy term 1551

function user_referenced_taxonomy_terms_form_node_form_alter(&$form, &$form_state, $form_id) {

  global $user;
  //if current user has roles administrator or editor return
  foreach ($user->roles as $role) {
      if (($role == 'administrator') || ($role == 'editor')) return;
  }
  if (isset($form['field_firm'])) {
      $form['field_firm']['und'][100]= array('#access' => FALSE); //hides taxonomy term 100
      $form['field_firm']['und'][101]= array('#access' => FALSE); //hides taxonomy term 101
  }
  }

так вручную можно отключить каждый.
но если вам надо наоборот, включить конкретные, а отключить все остальные, то сделайте цикл, в котором отключите доступ для всех терминов.

for ($i=0; $i < count($form['field_firm']['und']); $i++) $form['field_firm']['und'][$i]= array('#access' => FALSE);

а потом включите для нужных:

$form['field_firm']['und'][102]= array('#access' => TRUE);

чтобы выводить переменные используйте Devel модуль и его функцию dpm($var);
также на будущее для разграничения просмотра контента по терминам - вам надо освоить TAC
но начните с TAC Lite

Ответ дан 12.11.2015 - 20:59

Простите, ноя тут немного чайник....
Т.е., чтобы авторизовавшийся пользователь мог писать статьи в 4 разделах меню (у меня так), надо подкорректировать файл вручную. А какой?
2. Нужно установить модули TAC и Devel?

Комментарий оставлен 12.11.2015 - 23:00

Есть ли просто такой модуль "Написать статью", который можно было бы повесить в нужных разделах?

Комментарий оставлен 12.11.2015 - 23:23

нет вам надо дать права людям писать в Пользователи - Разрешения ролей отметьте галкой для зарегистрированных Создавать и редактировать.
http://tlito.ru/node/138/ вот это защити ваш сайт от спамеров когда вы дадите право писать все зарегистрированным.
я думаю что больше вам пока рано. вопрос не сформулирован
ну и еще сделайте блок с кнопками добавления нужных материалов например Добавить статью - ссылкой на /node/add/article
и настройте блок видным по ролям - для зарегистрированных

Комментарий оставлен 12.11.2015 - 23:27

Сначала хорошо бы определиться с тем, что подразумевается под "разделом сайта".
Есть типы материалов, а можно сделать так, чтобы у одного и того же типа были разные категории.

Комментарий оставлен 13.11.2015 - 08:47

Спасибо. Как дать права пользователям я понял.
Как создать блок тоже.
Но что мне написать в блоке, чтобы сама статья располагалась именно в выбранной категории, т.е. в том же ноде (например /node/18)(чтобы нельзя было выбрать, где размещать статью)?
Иначе статья создается уже в новом ноде.

Комментарий оставлен 13.11.2015 - 09:41

каждый новый материал - это нода.
для разделов в друпале используется Таксономия. создайте словарь таксономии и в не несколько рубрик сайта. затем в типе материала который будут использовать люди, создайте поле типа Ссылка на термин, и выберите для этого поля ваш новый словарь таксономии.
если вы хотите чтобы статьи попадали только в раздел сайта (таксономии) но не хотите на главной их видеть, тогда в настройках ипа материала в графе "параметры публикации" снимите галку помещать на главную.

Комментарий оставлен 13.11.2015 - 15:18

Спасибо.
Остались небольшие вопросы:
1. В меню теперь вместо ноды, будет открываться некий материал из Таксономии?
2. Для 4-х стен надо создавать 4 словаря Таксономии или достаточно одного?
3. Посл этого статья, написанная пользователем, будет автоматически создаваться в определенном разделе?

Комментарий оставлен 13.11.2015 - 18:26

открываться так как вы настроите. словаря достаточно одного и в нем 4 Термина.
вам надо разделить понятие создание статьи и отображение. статья будет создаваться а выводить её можно в любом месте. стандартно если в статье отмечен термин таксономии, она будет выводиться на странице термина

Комментарий оставлен 13.11.2015 - 20:03

Спасибо.
Т.е. меню может выводит не толкьо страницу Ноды, но и страницу Термина?

Комментарий оставлен 14.11.2015 - 09:50

Страницы