Как ограничить доступ к кастомным полям Display Suite?

Аватар пользователя Nick Fedchik Nick Fedchik 5 апреля 2012 в 11:33

Создал кастомное поле Code field, добавил в отображение ноды.
Надо ограничить к этому полю доступ только для выделенных ролей, поскольку поле содержит ссылку на добавление нового материала.
Установил Field Permissions, но он работает только с стандартными полями и не признает полей Display Suite.
Какие варианты есть еще?

Комментарии

Аватар пользователя Nick Fedchik Nick Fedchik 5 апреля 2012 в 11:59

There's two options:

- either implement hook_entity_view_alter in a custom module and change the access yourself
- wait for the 7.x-2.x branch which has a feature request for this, see #1463838: Implement hook_field_access() for DS fields

Аватар пользователя Максак Максак 5 апреля 2012 в 12:07

DS только формирует вывод полей и никаких "полей Display Suite" не может быть. Если права в Field Permissions выставлены правильно - Ваше поле не будет выводиться для тех кому видеть его нельзя.
Зайдите, как Аноним и проверьте.
p.s. Только сейчас проверил у себя - все так, как я и сказал.

Аватар пользователя Nick Fedchik Nick Fedchik 5 апреля 2012 в 12:27

/admin/structure/ds/fields
Add a code field

Я про эти поля. Они могут быть, и они есть.
И вот их то как раз и надо.
Но выше мне ответили, что такая фича в разработке, появится в версии 2 модуля Display Suite для семерки.

Буду думать над другим вариантом реализации - нужно добавить поле, содержащее html и обрабатывающее токены.

Аватар пользователя Sun-fire Sun-fire 5 апреля 2012 в 12:35

"Максак" wrote:
DS только формирует вывод полей и никаких "полей Display Suite" не может быть.

Да шо вы такое говорите? Таки в Display Suite есть например такая вещь как Display Suite code field.

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

Аватар пользователя Nick Fedchik Nick Fedchik 5 апреля 2012 в 13:10

Пробовал вложить html в обычное текстовое поле, задал значение по умолчанию. Не помогло. Надо вводить значения.
Включил модуль Link (7.x-1.0 Определяет простые типы полей для ссылок.) - тоже не помогло. Надо вводить.

А в моей задаче в поле вводить не надо значение, нужно его просто вывести с подменой токенов.
Вот пример:
<ul class="action-links"><li><a href="/node/add/competition-stage/[node:nid]?destination=[node:url:path]">Добавить этап соревнования</a></li></ul>

Такое поле надо просто выводить, его не надо редактировать или вписывать каждый раз при создании новой ноды.

Какие еще известны варианты?

Фиксить темплейт ноды - не предлагать. Поле выводится в табе, который формируется Display Suite + Fieldgroup.

UPDATE: Все же пока остановился на модуле Link с введенным значением по умолчанию для каждого типа ноды.