Вимкнення вертикальних вкладок за типом вмісту чи роллю користувача


10

Деякі користувачі можуть мати можливість редагувати лише один із наборів полів, який відображається у вертикальних вкладках у формі редагування вузла. У такому випадку виглядає досить нерозумно використовувати вертикальні вкладки, оскільки є лише одна вертикальна вкладка. Дивіться знімок екрана:

скріншот

Отже, чи можна відключити вертикальні вкладки за роллю користувача? Або, заборонивши це, взагалі вимкнути їх для певних типів вмісту? Для мого використання я просто хочу, щоб розташування не відображалося у вертикальних вкладках.

Я спробував Renderable Fields та Field Group разом, але вони керували формою неправильно (я думаю, що баггі). Впорядкувати поля не можуть відокремити вертикальні вкладки.


Ви коли-небудь це виправляли? Намагайтеся зробити те ж саме на вкладці продукту ubercart.
Ді

Відповіді:


7

Є кілька способів зробити це:

  1. Ви можете скористатися модулем « Передатні елементи» (як ви згадували вище). Це дозволяє вам зареєструвати будь-який фрагмент збірки на вашій установці та керувати дисплеєм через Field UI. Це зробить (додаткові) елементи доступними для існуючих об'єктів на керуючих формах / екранах дисплеїв, або ви можете, наприклад, зареєструвати контактну форму та переставити поля через інтерфейс поля. Зараз працює чудово на формах, підтримка інших приходить в другу ітерацію.

  2. Або додайте наступне у свій спеціальний модуль:

    $config['yourcontenttype_node_form'] = FALSE;
    variable_set('vertical_tabs_forms', $config);
  3. Модуль пісочниці , який відключає вертикальні вкладки

Ось це основне питання, яке стосується цього.


Як я вже говорив у запитанні, Елементи перегляду не працюють для мене. Він все ще знаходиться в стадії альфа, і є відома помилка з Location. Так що це не працює для моєї ситуації. Інакше так, я думаю, що це спрацювало б. Якщо в майбутньому ця помилка виправляється, Renderable Elements - це, мабуть, найкращий спосіб вирішити цю проблему.
Джей

вибачте, що я просто перекинув ваше запитання і повністю пропустив вашу посилання на модуль елементів, що передаються. Як сказано, версія Dev працює як шарм. Дайте, щоб піти.

Хм, гаразд. Спробую скористатися версією dev, якщо немає інших альтернатив. Залишаючи це відкритим на даний момент.
Джей

Я змінив свою відповідь вище, використовуючи більше варіантів.

1
Ти правий. Я просто спробував це, і це не працює в D7, як це було в D6. На жаль, якщо елементи, що передаються, не спрацьовують і вам не зручно з власним модулем або використанням модуля пісочниці, я не впевнений, що ще.

6

Ви також можете скористатися чеком #access, щоб люди не бачили вертикальні вкладки.

$form['additional_settings']['#access'] = FALSE;

Просто додайте, що форма гачка змінюється або між завантаженням і наданням форми. Після цього ви можете зателефонувати на рендер ($ форму), щоб отримати розмітку.


2

Я написав просте можливе рішення у вже згаданій нитці: https://drupal.org/node/1048644#comment-7822687 . Для зручності я вставлю його сюди.

Там простий спосіб відключити вертикальні вкладки на формі, просто змінивши $form['additional_settings']['#type']значення змінної до 'fieldset'в реалізації hook_form_alter () або hook_form_FORM_ID_alter () , якщо він дорівнює 'vertical_tabs'.
Вам не потрібно змінювати налаштування доступу або ходити весь $formмасив рекурсивно, останній витрачає зайве занадто багато ресурсів.
(Випробувано в Drupal 7.23 .)

/**
 * Disable Vertical tabs on a form with simply changing the value of $form['additional_settings']['#type']
 * @see https://drupal.org/node/1048644
 */
function form_disable_vertical_tabs(&$form){
  // originally $form['additional_settings']['#type'] equals to 'vertical_tabs'
  if(isset($form['additional_settings']['#type']) && ($form['additional_settings']['#type'] === 'vertical_tabs')){
    $form['additional_settings']['#type'] = 'fieldset';
  }
}

/**
 * Implements hook_form_alter().
 */
function MYMODULEORTHEMENAME_form_alter(&$form, &$form_state, $form_id) {

  if($form_id == 'my_form_id'){
    // disable vertical tabs for this form
    form_disable_vertical_tabs($form);
  }
}

Це, звичайно, підміняйтеMYMODULEORTHEMENAME назви власного модуля чи теми (остання у template.phpфайлі) таmy_form_id ідентифікатор вашої форми.


Ви також можете відключити вертикальні поля лише для користувачів, які НЕ виконують ролі адміністратора :

/**
 * Implements hook_form_alter().
 */
function MYMODULEORTHEMENAME_form_alter(&$form, &$form_state, $form_id) {

  global $user;
  $is_administrator = in_array('administrator', array_values($user->roles));

  if($form_id == 'my_form_id'){
    // if $user does NOT have the administrator role.
    if (!$is_administrator) {
      // disable vertical tabs for this form
      form_disable_vertical_tabs($form);
    }
  }
}

У разі , якщо хто - то зацікавлений, я прикріпив патч (який робить те ж саме, що і вище) для Dripman пісочниці модуля «s: # 2080739: Спрощує метод відключення вкладки Вертикально тільки з змінюючи $form['additional_settings']['#type']до'fieldset' .


Відмінне рішення, @ Sk8erPeter. Мені цікаво, чи можливо приховати додаткові параметри без встановлення "#access" = FALSE, оскільки це втрачає значення, які були б встановлені за замовчуванням, наприклад, псевдонім URL та опублікований статус.
Яв

0

Наразі елементи візуалізації наразі не підтримуються, і на сторінці проекту підтверджується, що він стикається з деякими іншими модулями, що надаються, тому я б не покладався на нього для виробничих сайтів.

Питання, як повністю відключити вертикальні вкладки, вирішується в цій темі .

Dripman створив простий модуль пісочниці, щоб повністю відключити вертикальні вкладки.

Залежно від бажаного рівня взаємодії з кодуванням, модуль Dripman повинен легко налаштовуватися, щоб бути вибірковим на основі полів / ролей.

Вибачення за перекриття лаконічною відповіддю від @nicoz


0

Ви можете використовувати модуль Visibility Tabs Visibility .

Цей модуль допомагає керувати видимістю вертикальних вкладок у формах додавання / редагування типу вмісту.

Для управління видимістю вертикальних вкладок у форматі типу додавання / редагування. просто перейдіть на /admin/config/user-interface/vertical-tabs-visibility сторінку та виберіть типи вмісту. Вертикальні вкладки у формі додавання / редагування вузла будуть відключені для перевірених типів вмісту.

В даний час модуль знаходиться в пісочниці


0

У моєму випадку я намагався відключити застосування вертикальних вкладок у розділі Параметри публікації у формі редагування вузла (оскільки це був єдиний набір полів, до якого певний набір користувачів має доступ):

// Place somewhere in MYMODULE_form_alter()...
$form['additional_settings']['#type'] = 'fieldset';
$form['additional_settings']['#collapsible'] = FALSE;
$form['options']['#collapsible'] = FALSE;

Для уточнення, не тільки вам потрібно встановити additional_settings #collapsibleFALSE, будь-які елементи всередині також повинні мати елемент #collapsible set toFALSE , in my case that was theoptions `.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.