Extra Block Types (EBT) - New Layout Builder experience❗

Extra Block Types (EBT) - styled, customizable block types: Slideshows, Tabs, Cards, Accordions and many others. Built-in settings for background, DOM Box, javascript plugins. Experience the future of layout building today.

Demo EBT modules Download EBT modules

❗Extra Paragraph Types (EPT) - New Paragraphs experience

Extra Paragraph Types (EPT) - analogical paragraph based set of modules.

Demo EPT modules Download EPT modules

Scroll

Права для нод и зависимые поля.

Права для нод и зависимые поля.
, by

Здравствуйте! При создание проекта, возник один интересный и срочный вопрос. Просто если вопрос не решить на данном этапе, в будущем будет тяжело переделать всю структуру проекта.

Задача:
На сайте зарегистрированные пользователи, могут добавлять заведения (рестораны, кафе, ТОО и т.д.). У них есть право выбора нескольких тарифов – Бесплатный, Стандартный и Расширенный.
3 разных тарифа предусматривают разные права публикации заведения. Допустим в бесплатном можно добавить только до 3 фото. В стандартном до 20. В бесплатном нет возможности добавлять товары или блюда, нет возможности создавать события. В других тарифах это есть.
Как известно мне, права имеют пользователи а не ноды. На данном этапе мы планировали, создать тип материала Заведения. Пользователь мог добавлять несколько заведений и выбирать тарифы посредством Списка (Флажки/переключатели). Затем планировалось создать тип материала Блюда или Товары, События.

ВНИМАНИЕ вопросы!!!
1. Как менять права ноды при выборе разных тарифов, не меняя права пользователя. Или придется каждое заведение делать как пользователя???
2. Как сделать так чтобы тип материала Товары, пренаделжал типу материала Заведения, если оно создается для этого заведения???
3. Как для разных тарифов сделать разное количество фото? Или просто делать зависимые поля + 3 поля Изображения. При выборе нужного тарифа, выводиться поле, с нужным количеством изображений.
4. Какой модуль выбрать для зависимых полей. Есть ли альтернативы conditional_fields, слышал что он не даработан для drupal 7

Заранее спасибо за ответы и за помощь. Просто хочется не упереться в потолок, и изначально сделать все правильно.

1 answer
votes: 1046
Answer

Здравствуйте,

1. Можно продавать роли пользователей через ubercart или commerce.

2. Это можно сделать через связи node reference или entity reference. Я бы entity reference использовал с модулем inline entity form:

https://drupal.org/project/inline_entity_form

3. Нужно для формы создания ноды использовать hook_form_alter() и изменить для поле максимальное количество загружаемых фотографий в зависимости от роли пользователя.

4. Лучше всего писать кастомный модуль через hook_form_alter() навешивать #states для нужных полей:

http://randyfay.com/states


1. Роли пользователей это понятно. Я в том плане. Что пользователь может добавить допустим 2 заведения, 1 будет - бесплатное, другое - платное. И как 1ому заведению права дать бесплатные, а второму платные, пользователь ведь у них один.

 

2. Спасибо, будем делать так.

3. Можно какую либо статью, на примере как это использовать. Такого еще не делал.

 

4. Пока не понял что это)))). В общем модулей нету. Задача такова, в зависимости от выбранной категории на первом шаге добавления заведения, на последнем шаге, были доступны поля этого заведения для заполнения.

 


Form API Drupal создание форм на Друпал


А по поводу 1его вопроса что можете сказать. Самый важный вопрос. Я в том плане. Что пользователь может добавить допустим 2 заведения, 1 будет - бесплатное, другое - платное. И как 1ому заведению права дать бесплатные, а второму платные, пользователь ведь у них один.


И как сделать так чтобы платные заведения, если их не оплатить, мы могли бы скрыть платные функции, оставить только бесплатные. В общем права на ноду. Такое вообще можно реализовать. Или каждый пользователь и будет - заведение. Настроить регистрацию 2ух видов Пользователь - Организация. Профиль организации будет иметь термин таксаномии заведения, и уже иметь права для своего тарифа. Просто пользователю надо будет каждый раз регистрировать аккаунт для каждого заведения. Хотя заведение, как профиль, будет по идеи удобно.


Тогда от сюда вопрос как сделать 2 вида регистрации.


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