কীভাবে ইনপুট ফর্ম্যাট অপশনগুলি লুকানো যায় এবং পাঠ্যের ক্ষেত্রে পাঠ্য সহায়তা করা যায়?


32

| নোড সম্পাদনা করার সময় কীভাবে ইনপুট ফর্ম্যাট বিকল্পগুলি এবং পাঠ্যক্রমের অধীনে পাঠ্যকে সহায়তা করবেন?

স্ক্রিনশট - লাল আয়তক্ষেত্রের সাহায্যে নির্বাচিত আড়াল করার অংশ


আমার মনে হয় আপনি যদি ফর্মটি অ্যাক্সেস করেন তবে আপনি এটি করতে পারবেন hook_form_alterতবে আমি বিশদ সম্পর্কে নিশ্চিত নই, সুতরাং আমি উত্তর হিসাবে এটি পোস্ট করব না ...
acm

উত্তর:


26

ড্রুপাল 7 এর জন্য, আপনি সরলীকরণ মডিউলটি ব্যবহার করতে পারেন । এটি আপনাকে পাঠ্য বিন্যাসের বিকল্পগুলি টেক্সারিয়া, পাশাপাশি নোড ফর্মগুলির অন্যান্য উপাদানগুলি আড়াল করতে দেয়।


3
যদি আপনি এর উত্সটি দেখুন ( cgit.drupalcode.org/simplify/tree/simplify.module?id=7681b0e ), মডিউলটি পাঠ্য বিন্যাসের বিকল্পগুলি আড়াল করতে jQuery ব্যবহার করে। এটি লজ্জাজনক কারণ 1: আপনি কেবলমাত্র পাঠ্য বিন্যাসটি আড়াল করতে চান এবং পুরো মডিউলটির প্রয়োজন হয় না এবং 2: জাভাস্ক্রিপ্ট একটি প্রয়োজনীয় হয়ে ওঠে। আইওনট অ্যাড্রিয়ান লুচিয়ানের উত্তর অনুসারে এটি কেবল সিএসএস দিয়ে লুকিয়ে রাখছেন না কেন? এটি নির্ধারিতভাবে উপযুক্ত এবং পরিষ্কার।
বি

সরলকরণ আমার জন্য ধারাবাহিকভাবে কাজ করে না। কিছু ক্ষেত্রে এটি অন্যদের ক্ষেত্রে কাজ করেনি।
স্নিগুয়ে

আমার পক্ষে কাজ করেনি। আমি সম্ভবত বুটস্ট্র্যাপ থিম ব্যবহার করেছি।
sobi3ch

সরলকরণ আমার পক্ষেও কার্যকর হয়নি।
17 Ильин

25

এটি করতে আপনি কাস্টম মডিউলে হুক_ফর্ম_ল্টার ব্যবহার করতে পারেন।

উদাহরণস্বরূপ, ড্রুপাল 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
এটি কাজ করে তবে এর একটি পার্শ্ব প্রতিক্রিয়া রয়েছে: এটি পাঠ্য অঞ্চল থেকে উইসইভিগ সম্পাদককে সরিয়ে দেয়
cast

এটা আমার জন্য কৌতুক করেছে। আমি মূলত কেবল পাঠ্য ইনপুটটি পরিষ্কার করতে চেয়েছিলাম।
রেভনোহাহ

1
'আনড' এর পরিবর্তে LANGUAGE_NONE উল্লেখ করা আরও ভাল এবং অন্য উচ্চতর ভূমিকা যদি পাঠ্য ফর্ম্যাট বাক্সটি দেখতে পারে তবে ক্ষেত্রে_উবিল্ড ফাংশনের একটি ভূমিকা ভিত্তিক চেকিং থাকা উচিত।
আনিক মুখোপাধ্যায়

12

ড্রুপাল In-তে মডিউল বেটার ফর্ম্যাটস রয়েছে যা আপনি যা চান ঠিক তেমন করে, এখানে dev টি দেব সংস্করণ রয়েছে তবে এটি একটি সতর্কতা নিয়ে আসে যে এটি ভারী বিকাশের মধ্যে রয়েছে। যদি আপনার সাইটটি এখনও বিকাশে থাকে তবে এটির শট দেওয়ার জন্য এটি উপযুক্ত।


প্রশাসক নয় এমন ব্যবহারকারীদের পক্ষে ভাল কাজ করার জন্য মনে হয়েছিল, এমনকি আপনি প্রশাসক গোষ্ঠীর অনুমতিগুলি সরিয়ে দিলেও, ব্যবহারকারী 1 এখনও ডি 7

আরও ভাল ফর্ম্যাটগুলি ডি 7 এর জন্য ভাল কাজ করে, কোনও গুরুতর সমস্যা
নিয়েই

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, সেরা সমাধান। ভবিষ্যতের দর্শনার্থীদের জন্য, আপনার সক্রিয় থিমের নাম দিয়ে কাস্টম প্রতিস্থাপন করুন। এই কোড স্নিপেটটি সক্রিয় থিমের ফোল্ডারে আপনার টেম্পলেট.ফ্প স্ক্রিপ্টে যেতে হবে go এবং যদি আপনার সাইটটি বহুভাষার জন্য সক্ষম করেছে, আপনার ভাষা কোডের সাথে LANGUAGE_NONE প্রতিস্থাপন করুন।
জনক আর রাজাপক্ষ

2
CUSTOMআপনার কাস্টম থিমের নাম হিসাবে চিহ্নিত করা হয়। আপনি উচিত কখনও আপনি সক্রিয় ভাষা ব্যবহার প্রয়োজন হলে একটি ভাষা হার্ড কোড, global $language;এটি দখল করতে।
ডাবলজোশ

দ্রষ্টব্য: LANGUAGE_NONEমান সহ ধ্রুবক und... ব্যবহার করবেন না und
ডাবলজোশ


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;
}

আপনি কেবলমাত্র একটি নির্দিষ্ট ক্ষেত্রে এটি আড়াল করতে চাইলে এটি একটি দুর্দান্ত সমাধান। এবং ডাব্লুওয়াইএসআইডাব্লুওয়াই জি কার্যকর থাকে।
ডালিন

6

সবচেয়ে সহজ উপায় সিএসএস ব্যবহার করুন। ফায়ারবাগকে

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

সিএসএস এবং ফায়ারব্যাগের শক্তি

শুভকামনা।


3
আমি "যদিও এটি কাজ করে" সিএসএস লুকিয়ে রাখার প্রস্তাব দিই না।
saadlulu

একটি উত্তর নয়, একটি পলাতক নয়
প্যান ক্রোনো

5
কেন? এটি দুর্দান্ত উত্তর কারণ প্রশ্নটি এটি আড়াল করার জন্য, এটি মুছে ফেলার জন্য নয়। এটি লুকানোর মতো নয় যে এটি কোনও সুরক্ষার হুমকির কারণ হয়ে দাঁড়ায় বা এসইও এর পক্ষে খারাপ হতে পারে ... আপনি ইতিমধ্যে পাঠ্য বিন্যাসের কনফিগারেশনে অনুমতিগুলি সংজ্ঞায়িত করেছেন তাই সমস্যা কোথায়?
বি

1
আমি এটি লুকিয়ে রাখতে পছন্দ করব আপনার জন্য +1 ভোট।
অ্যালিসা গোনো

সিএসএস ইনজেক্টর মডিউল বিস্ময়ের কাজ করে। দেখুন: prntscr.com/cieuvs
পটোশি パ ト シ

5

ড্রুপাল 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
আপনি কেবলমাত্র সরল পাঠ্য সক্ষম করতে চাইলে কেবল কাজ করে। কারণ আপনি সেটিকে অক্ষম করতে পারবেন না।
ফ্লেচ

ঠিক। আপনার কাছে কেবল "ফিল্টারযুক্ত পাঠ্য" থাকতে পারে না। দুঃখিত, তবে এই উত্তরটি বিভ্রান্তিকর।
নারডোক

2

আমি এটা করেছি:

বেনামে ও অনুমোদিত ব্যবহারকারীদের অনুমতি> লোকের কাছ থেকে "ফিল্টার করা এইচটিএমএল পাঠ্য ফর্ম্যাট ব্যবহার করুন" এবং "টেক্সট ফর্ম্যাট এবং ফিল্টার পরিচালনা করুন" যাতে তারা সি কেডিটার ব্যবহার করতে না পারে।

অবশ্যই আপনি এটি "প্রদর্শন: কিছুই নয়" দ্বারা সিএসএস থেকে অক্ষম করতে পারেন; নির্দিষ্ট ডিভ ক্লাসের জন্য (এটি ফিল্টার-মোড়ক) এবং আপনার উপরের দিকে চিহ্নিত সমস্ত অঞ্চল লুকিয়ে রাখুন তবে এক্ষেত্রে অঞ্চলটি সুপারভাইজার সহ প্রত্যেকের জন্যই গোপন।


1

সিএসএস ইনজেক্টর মডিউল ইনস্টল করুন (বর্তমানে কেবলমাত্র ড্রুপাল 8 এর জন্য একটি কার্যক্ষম বিকাশ সংস্করণ রয়েছে)।

তারপরে সিএসএস ইনজেক্টর (/ অ্যাডমিন / কনফিগারেশন / ডেভেলপমেন্ট / সিএসএস-ইনজেক্টর) প্রশাসনের পৃষ্ঠায় যান। এই কোডটি দিয়ে (বা ফর্ম্যাটিং এরিয়া পাঠ্যের কোনও শ্রেণীর ক্ষেত্রে প্রযোজ্য কোনও কোড) দিয়ে নতুন সিএসএস বিধি তৈরি করুন:

.filter-guidelines {
    display: none;
}

সেভেন থিম (বা ব্যবহারের কোনও অ্যাডমিন থিম) এ প্রয়োগ করা চয়ন করুন । সংরক্ষণ করুন এবং উপভোগ করুন!


2.0 পুরানো হিসাবে সিএসএস ইনজেক্টর 1.x ইনস্টল করুন। এটি কেমন দেখাচ্ছে তার প্রাকদর্শন এখানে রয়েছে: prntscr.com/cieuvs - এই মডিউলটি সিএসএন (নোড প্রতি কোড) এর মতো অন্যান্য মডিউল বনাম সিএসএস ইনজেকশনের জন্য বিস্ময়কর কাজ করে
পটোশি シ シ シ

0

আপনি "সরল পাঠ্য" ইনপুট ফর্ম্যাটটি সরাতে পারবেন না। আরটিই প্রদর্শিত হচ্ছে না যখন আপনি "সাধারণ পাঠ্য" ইনপুট ফর্ম্যাটটি ব্যবহার করবেন।

আমি সিএসএস বিকল্পটি ব্যবহার করব।


বর্তমানে লগ ইন থাকা ব্যবহারকারী যখন কেবল একটি ইনপুট ফর্ম্যাট ব্যবহার করতে পারেন তখন ইনপুট ফর্ম্যাট নির্বাচনকারী উপস্থিত হয় না; সেই একমাত্র ইনপুট ফর্ম্যাটটি অন্যরকম হতে পারে এবং নির্বাচকটি সে রকম দেখাবে না।
কিমলালুনো

0

আমি উভয়ই "ব্যবহারকারীর প্রোফাইলগুলি থেকে অন্য সমস্ত ইনপুট ফর্ম্যাট অপসারণ" এবং সিএসএস উপায় ব্যবহার করি।


0

মডিউলটিকে সহজ করার চেষ্টা করুন ।

সরলিফাই ব্যবহারকারীর ইন্টারফেস থেকে নির্দিষ্ট ক্ষেত্রগুলিকে গোপন রাখতে দেয়। এটি ফর্মগুলি ডি-ক্লিটর করতে এবং সামগ্রী সম্পাদকদের কাছে আরও বেশি ব্যবহারকারী-বান্ধব অভিজ্ঞতা উপস্থাপনে সহায়তা করে।


অন্যান্য ক্ষেত্রগুলির জন্য কাজগুলি সরল করুন, তবে আমি এটি ইনপুট ফর্ম্যাটগুলির জন্য কাজ করতে পারি না।
ড্রুভিশন

0

আপনি যদি ফর্ম্যাটগুলি আড়াল করতে চান তবে সেগুলি এখনও উপলভ্য রাখতে চান তবে " সরলিকৃত ফর্ম্যাটগুলি " মডিউলটি চেষ্টা করুন : https://www.drupal.org/project/simplified_formats

এটি ফর্ম্যাট বিশদটি ফর্ম্যাট নির্বাচন ড্রপডাউন এর পাশের সামান্য প্রশ্ন চিহ্ন আইকনে লুকায়। অনেকগুলি পাঠ্য বিন্যাসের ফিল্টারগুলির জন্য নির্দেশাবলী সম্পূর্ণরূপে আড়াল করা ভাল নয় যা সেগুলি কীভাবে ব্যবহার করতে হয় সে সম্পর্কে বলা হয়। অন্যান্য ফিল্টারগুলি আরও স্বয়ংক্রিয়। আমি মনে করি আমাদের এমন একটি মডিউল দরকার যা আমাদের শেষ ব্যবহারকারীকে কী দেখায় এবং কী না তা চয়ন করতে দেয়।


0

আপনি হাইড ফর্ম্যাট মডিউলটিও ব্যবহার করতে পারেন ।

ফর্ম্যাটগুলি লুকান আপনাকে ইউআই পরিষ্কার করার জন্য "পাঠ্য বিন্যাস" বা "ইনপুট ফর্ম্যাট" ড্রপডাউনগুলি ভেঙে ফেলার অনুমতি দেয়।


এটি একটি দুর্দান্ত মডিউল তবে এটি ফর্ম্যাট বাক্সটিকে ধসে পড়েছে, টোালি লুকানো নয়।
ড্রুভিশন

0

ড্রুপাল ৮ এর জন্য এটি দুটি ক্ষেত্রের বিন্যাস অঞ্চলটি সরিয়ে দেয়।

/**
 * 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);
}

ওপি প্রশ্নে ডি 7 নির্দিষ্ট করেছে
জিওফ

1
একমত। তবে এই মুহুর্তে ডি 8 এর জন্য খুব কম অনলাইন আছে। আমি মনে করি আমি নিজের প্রশ্ন তৈরি করতে পারি এবং তারপরে এর উত্তর দিতে পারি। কখনই চেষ্টা করিনি।
আন্দ্রে অ্যাঞ্জেলটোনি

এটি আরও ভাল পন্থা হবে, কেবলমাত্র এই ক্ষেত্রে ওপি সংস্করণ সম্পর্কে খুব নির্দিষ্ট
জিওফ

আপনি কীভাবে এটি বাস্তবায়ন করতে পারেন দয়া করে? আমি কীভাবে ফর্ম_আইডি খুঁজে পাব?
জন

0

ড্রুপাল 7 এর জন্য, আপনি:

1) hook_theme_registry_alter(&$theme_registry)থিম রেজিস্ট্রি পরিবর্তন করতে একটি মডিউল মধ্যে থেকে ব্যবহার করুন , eq। থিম প্রসেসর সংজ্ঞা।

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_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']
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.