Як приховати параметри формату введення та довідковий текст під текстовою областю?


32

Як приховати параметри формату введення та допомогти текст під текстовою областю при додаванні | редагування вузла?

Знімок екрана - частина, щоб приховати вибране червоним прямокутником


Я думаю, що ви можете це зробити, якщо ви отримаєте доступ до форми через, hook_form_alterпроте я не впевнений у деталях, тому я не буду публікувати це як відповідь ...
acm

Відповіді:


26

Для Drupal 7 можна використовувати модуль спрощення . Він дозволяє приховати параметри текстового формату textarea, а також інші елементи на формах вузлів.


3
Якщо ви подивитесь на його джерело ( cgit.drupalcode.org/simplify/tree/simplify.module?id=7681b0e ), модуль використовує jQuery, щоб приховати параметри формату тексту. Прикро, тому що 1: ви хочете лише приховати текстовий формат і не потрібен весь модуль, а 2: javascript стає вимогою. Чому б просто не приховати це за допомогою CSS, як підказує відповідь Іонута Адріана Лучіана? Це, безумовно, доречно і чисто.
B2F

спростити, не працювало послідовно для мене. в деяких випадках це працювало, в інших - ні.
снігопад

Не працювало для мене. Я використовував тему завантаження, тому, можливо, через це.
sobi3ch

Спростити не працювало і для мене.
Артем Ільін

25

Для цього можна скористатись_у_контактом у спеціальному модулі.

Наприклад, в drupal 7:

// hook_form_alter function
function CUSTOM_MODULE_form_alter(&$form, &$form_state, $form_id) {
    // We want this on a specific node type
    if ($form_id == 'NODE_TYPE_node_form') {
        $form['#after_build'][] = 'CUSTOM_MODULE_NODE_TYPE_node_form_after_build';
    }
}

// afterbuild function
function CUSTOM_MODULE_NODE_TYPE_node_form_after_build($form) {
    // We want this on a specific field
    $form['YOUR_FIELD']['und']['0']['format']['#access'] = FALSE;
    return $form;
}

2
це працює, але має побічний ефект: він видаляє редактор wysiwyg з області тексту
Castaway

Це зробило для мене трюк. Я в основному просто хотів очистити введення тексту.
RevNoah

1
краще згадати LANGUAGE_NONE замість 'und', а також функція after_build повинна мати перевірку на основі ролей, якщо інші вищі ролі можуть переглядати поле Формат тексту.
Aneek Mukhopadhyay

12

У drupal 6 є модуль Better Formats, який робить саме те, що ви хочете, є версія 7 розробників, але вона поставляється з попередженням про те, що вона знаходиться у важкій розробці. Якщо ваш сайт ще розробляється, можливо, варто сфотографувати його.


Здавалося б, добре працює для користувачів, які не були адміністратором, навіть якщо ви видалите дозволи для групи адміністратора, користувач 1 все одно побачить параметри в D7
joelpittet

Кращі формати добре працюють для D7, стабільний без серйозних проблем та випуску Beta 2 у січні 2016 року.
Duncanmoo

9

Ви можете просто вбити елемент формату формату.

function MY_THEME_form_comment_form_alter(&$form, &$form_state, &$form_id) {
  $form['comment_body']['#after_build'][] = 'MY_THEME_configure_comment_form';
}

function MY_THEME_configure_comment_form(&$form) {
  unset($form[LANGUAGE_NONE][0]['format']);
  return $form;
}

+1, найкраще рішення. Для майбутніх відвідувачів замініть CUSTOM на ім’я своєї активної теми. Цей фрагмент коду повинен міститись у вашому скрипті template.php у папці активної теми. А якщо на вашому сайті ввімкнено багатомовність, замініть LANGUAGE_NONE своїм мовним кодом.
Janaka R Rajapaksha

2
CUSTOMпризначена як ваша власна назва теми. НІКОЛИ не слід твердо кодувати мову, якщо вам потрібна активна мова, global $language;щоб використовувати її.
doublejosh

Примітка: LANGUAGE_NONEконстанта зі значенням und... не використовувати und.
doublejosh

Це вбиває і wysiwyg
цифровогогофера

7

Я думаю, що найкращим рішенням є заборона доступу до елемента вибору формату тексту. Якщо ви повністю скасуєте його, ви зіткнетесь з небажаними побічними ефектами як зникаючий редактор WYSIWYG. Тому пропоную наступний код.

function MY_MODULE_form_comment_form_alter(&$form, &$form_state, &$form_id) {
  $form['comment_body']['#after_build'][] = 'MY_MODULE_hide_text_format';
}


function MY_MODULE_hide_text_format(&$form) {
  $form[LANGUAGE_NONE][0]['format']['#access'] = false;
  return $form;
}

Це відмінне рішення, якщо ви хочете сховати його лише на одному конкретному полі. І WYSIWYG залишається функціональним.
Далін

6

Використовуйте CSS, найпростіший спосіб. Firebug

#body-add-more-wrapper #edit-body-und-0-format {display: none;}

Потужність CSS та Firebug

Удачі.


3
Я б не рекомендував "хоча це працює" CSS ховається.
saadlulu

не відповідь, утік
Пан Хроно

5
Чому? Це чудова відповідь, оскільки питання - це приховати, а не прибирати. Це не так, як приховувати, що це може загрожувати безпеці або бути поганим для SEO ... Ви вже визначаєте дозволи в конфігурації текстового формату, тож де проблема?
B2F

1
Я вважаю за краще ховати його. +1 голос за вас.
Alyssa Gono

модуль інжектора css творить чудеса. дивіться: prntscr.com/cieuvs
Patoshi パ ト シ

5

ДЛЯ Drupal 7

function MODULENAME_element_info_alter(&$type) {
  if (isset($type['text_format']['#process'])) {
    foreach ($type['text_format']['#process'] as &$callback) {

      if ($callback === 'filter_process_format') {
        $callback = 'MODULENAME_filter_process_format';
      }
    }
  }
}


function MODULENAME_filter_process_format($element) {
  $element = filter_process_format($element);

  // Change input format to "Filtered HTML" for body fields of NODETYPE_NAME

  if ($element['#bundle'] == 'NODETYPE_NAME' && $element['#field_name'] == 'body') {

    $element['format']['format']['#default_value'] = 'filtered_html';
    $element['format']['format']['#format'] = 'filtered_html';  
    $element['format']['format']['#value']  = 'filtered_html';
    $element['#format'] = 'filtered_html';

  }
  return $element;
}

Це чудова техніка, якщо ви хочете сховати її на багатьох / усіх полях.
Далін

2

Ще один простий спосіб приховати параметр формату введення - це видалення всіх інших форматів вводу з профілів користувачів, які ви хочете приховати. Для цього перейдіть у формати введення адміністратора-> конфігурація-> та видаліть усі ролі користувача з усіх інших форматів вводу, крім одного, який ви хочете надати за замовчуванням.


6
Працює лише в тому випадку, якщо ви хочете ввімкнути лише звичайний текст. Тому що ви не можете вимкнути його.
Флетч

точно. Ви не можете мати лише "Фільтрований текст". Вибачте, але ця відповідь вводить в оману.
nerdoc

2

Я зробив це:

Зніміть прапорець "Використовувати відфільтрований текстовий формат HTML" та "Адміністратор текстових форматів та фільтрів" від людей> дозволи для анонімних та авторизованих користувачів, щоб вони не могли використовувати CKeditor.

Звичайно, ви можете відключити його від CSS за допомогою "display: none;" для конкретного класу div (це .filter-обгортка) і приховати всю область, яку ви вказали вгорі, але в цьому випадку область прихована для всіх, включаючи суперпользователь.


1

Встановіть модуль CSS Injector (наразі існує лише робоча версія для Drupal 8).

Потім перейдіть на сторінку адміністрування CSS Injector (/ admin / config / development / css-injector). Створіть нове правило CSS за допомогою цього коду (або будь-якого коду, який стосується класу тексту форми області):

.filter-guidelines {
    display: none;
}

Виберіть, щоб застосувати його до семи теми (або будь-якої теми адміністратора, що використовується). Збережіть і насолоджуйтесь!


Встановіть інжектор css 1.x у версії 2.0. Ось попередній перегляд того, як це виглядає: prntscr.com/cieuvs - Цей модуль творить чудеса для введення css порівняно з іншими модулями, такими як CPN (код на вузол)
Patoshi パ ト シ

0

Ви не можете видалити формат введення "Звичайний текст". І RTE не відображається при використанні формату введення "Звичайний текст".

Я буду використовувати опцію CSS.


Селектор формату введення не відображається, коли користувач, який зараз увійшов у систему, може використовувати лише формат введення; цей формат єдиного вводу може бути іншим, і селектор не буде таким самим.
kiamlaluno

0

Я використовую як "видалення всіх інших форматів вводу з профілів користувачів", так і css.


0

Спробуйте спростити модуль.

Спрощення дозволяє приховати окремі поля від користувальницького інтерфейсу. Це допомагає знімати форми та надавати редакторам вмісту більш зручний досвід роботи.


спростити роботи для інших полів, але я не міг змусити його працювати для вхідних форматів.
Друвіювання

0

Якщо ви хочете приховати формати, але все ж зберігати їх доступними, спробуйте модуль " Спрощені формати ": https://www.drupal.org/project/simplified_formats

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


0

Ви також можете використовувати модуль Сховати формати .

Приховати формати дозволяє згортати випадаючі "текстовий формат" або "формат введення" для очищення інтерфейсу користувача.


Це чудовий модуль, але він робить поле форматів згорнутим, а не тоалістично прихованим.
Druvision

0

Для Drupal 8. Це видаляє область формату для двох полів.

/**
 * Implements hook_form_FORM_ID_alter().
 */
function CUSTOM_MODULE_form_FORM_ID_alter(&$form, \Drupal\Core\Form\FormStateInterface $form_state, $form_id) {
  $form['#after_build'][] = 'CUSTOM_MODULE_eform_application_after_build';
}

function CUSTOM_MODULE_eform_application_after_build ($form) {
  unset($form['field_experience']['widget'][0]['format']);
  unset($form['field_miscellaneous']['widget'][0]['format']);
  return ($form);
}

ОР вказав D7 у запитанні
Джефф

1
Домовились. Однак, для D8 на даний момент в Інтернеті дуже мало. Я думаю, я міг би поставити власне запитання, а потім відповісти на нього. Ніколи цього не пробував.
Андре Ангелантоні

це був би кращий підхід, лише тому, що ОП в цьому випадку дуже специфічна щодо версії
Джефф

Скажіть, будь ласка, як це здійснити? Як я можу знайти form_id?
Джон

0

Для Drupal 7 ви можете:

1) Використовуйте hook_theme_registry_alter(&$theme_registry) всередині модуля зміну реєстру тем, екв. визначення процесорів теми.

2) Потім змінити три тематичні функції, theme_filter_tips, theme_filter_tips_more_infoіtheme_filter_guidelines , і змусити їх не повертати нічого. Так:

Це цільова функція. Усі вищевказані функції теми будуть перенаправлені на це.

function _mymodule_filter_tips($tips, $long = FALSE, $extra = ''){
  return '';
}

/**
 * Implements hook_theme_registry_alter
 */
function mymodule_theme_registry_alter(&$theme_registry) {
  $theme_registry['filter_tips']['theme path'] = drupal_get_path( 'module', 'mymodule' );
  $theme_registry['filter_tips']['function'] = '_mymodule_filter_tips';
  $theme_registry['filter_guidelines']['theme path'] = drupal_get_path( 'module', 'mymodule' );
  $theme_registry['filter_guidelines']['function'] = '_mymodule_filter_tips';
  $theme_registry['filter_tips_more_info']['theme path'] = drupal_get_path( 'module', 'mymodule' );
  $theme_registry['filter_tips_more_info']['function'] = '_mymodule_filter_tips';
}

Коли ви очистите кеш, Drupal буде шукати такі визначення фільтрів на шляху обраного вами модуля (див. drupal_get_path), І не поверне нічого для кожного фільтра. Отже, описів формату тексту більше немає.


0
/ hook_form_alter function
function CUSTOM_MODULE_form_alter(&$form, &$form_state, $form_id) {
    // We want this on a specific node type
    if ($form_id == 'NODE_TYPE_node_form') {
        $form['#after_build'][] = 'CUSTOM_MODULE_NODE_TYPE_node_form_after_build';
    }
}

// afterbuild function
function CUSTOM_MODULE_NODE_TYPE_node_form_after_build($form) {

    // We want to hide input formats and we can do it like following
    $form['body']['und']['0']['format']= '<div style="display:none;">';
    $form['body']['und']['0']['format']= '</div>';   

    return $form;
}

Переважно працювали для мене з цими невеликими змінами.

$form['body'][LANGUAGE_NONE][0]['format']['#prefix']<br>
$form['body'][LANGUAGE_NONE][0]['format']['#suffix']
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.