মেনু আইটেমগুলিতে ক্ষেত্রগুলি কীভাবে যুক্ত করা যায়


11

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

আমি এই দ্রুপাল 7 সমাধান হিসাবে একই ধরণের সমাধান খুঁজছি কিন্তু দ্রুপাল 8 এর জন্য।

আমি আশা করছিলাম যে 'প্রসারিত' পাশে টেবিলের মেনু_লিঙ্ক_ কনটেন্ট_ডেটাতে একটি কলাম যুক্ত করতে সক্ষম হব। আমি আশা করছিলাম যে এই তথ্যটি ডি 7 সমাধানের মতো দেখানো অন্য টেবিলে রেকর্ড করতে হবে না।

আমি তৈরি করি এমন কাস্টম মডিউলে আমি লিঙ্ক ফর্মটিতে একটি ক্ষেত্র যুক্ত করতে সক্ষম হয়েছিলাম, পরীক্ষার উদ্দেশ্যে কেবলমাত্র আমি এখানে দিয়ে একটি পাঠ্য ক্ষেত্র যুক্ত করেছি:

custom_menu.module:

function custom_menu_form_alter(&$form, FormStateInterface $form_state, $form_id) {
  if($form_id == 'menu_link_content_menu_link_content_form') {
    $form['promoteToMainMenu'] = array(
      '#type' => 'textfield',
      '#title' => t('Promote to main menu'),
      '#description' => t('Promote link menu to main menu.'),
      '#default_value' => '',
      '#weight' => -9
    );
  }
}

ক্ষেত্রটি অবশ্যই লিঙ্ক ফর্মটিতে দেখানো হয়েছে তবে এটি কখনও রেকর্ড করা হয় না।

কেউ আমাকে এই সাহায্য করতে পারেন?


যতটা শোনা যায় ততই অসম্ভব, কাস্টম মেনু লিঙ্ক আইটেমগুলি সামগ্রী সত্ত্বা ( api.drupal.org/api/drupal/… )। তার অর্থ ক্ষেত্রটি যুক্ত করতে আপনাকে একটি হুক ব্যবহার করতে হবে (সম্ভবত api.drupal.org/api/drupal/… ) এবং তারপরে স্কিমা আপডেট করার জন্য একটি আপডেট ফাংশন চালানো উচিত।
এয়াল

উত্তর:


14

মেনু আইটেম অতিরিক্ত মডিউল পরীক্ষা করে দেখুন ।


2
এই মডিউলটির v2.0 হিসাবে মেনু লিঙ্কগুলিকে সম্পূর্ণ ফিল্ডেবল এনটাইটে রূপান্তরিত করে এটি অবশ্যই যাওয়ার উপায়। কলসাল মেনুর চেয়ে ভাল সমাধান কারণ এটি মেনু সিস্টেমটি প্রতিস্থাপনের পরিবর্তে উন্নত করে।
হুদ্রি

1
মেনু বারে আজকের তারিখ অন্তর্ভুক্ত করার জন্য +1 দুর্দান্ত, উদাহরণস্বরূপ
থেরোবিউইন


11

আপনি নিম্নলিখিত কোড সহ সত্তায় hook_entity_base_field_infoএকটি অতিরিক্ত ক্ষেত্র যুক্ত করতে ব্যবহার করতে পারেন menu_link_content:

/**
 * Implements hook_entity_base_field_info().
 */
function HOOK_entity_base_field_info(EntityTypeInterface $entity_type) {
  $fields = [];

  if ($entity_type->id() == 'menu_link_content') {
    $fields['FIELD_NAME'] = BaseFieldDefinition::create('FIELD_TYPE')
      ->setLabel(t('FIELD_LABEL'))
      ->setDescription(t('FIELD_DESCRIPTION '))
      ->setDisplayOptions('form',array('type' => 'FIELD_TYPE', 'weight' => 0));
  }

  return $fields;
}

আরও তথ্যের জন্য https://www.drupal.org/docs/8/api/entity-api/defining-and- using- content- entity- field-definitions দেখুন BaseFieldDefinition

যার পরে, আপনাকে hook_form_menu_link_content_menu_link_content_form_alter()ফর্মটিতে একটি ক্ষেত্র যুক্ত করতে হবে।


5
ফর্ম অলটারের মাধ্যমে আপনাকে ক্ষেত্রগুলি যুক্ত করতে হবে না। আপনি কেবল ব্যবহার করতে পারেন BaseFieldDefinition->setDisplayOptions()পদ্ধতি: ...->setDisplayOptions('form', [ ... ])
দুধভস্কি

1
আমি কীভাবে চিত্রের ক্ষেত্র তৈরি করতে পারি? আমি এই ক্ষেত্রের প্রকারের সাথে উদাহরণ খুঁজে পাচ্ছি না এবং এটি আমার প্রয়োজন। আমি এটি ব্যবহার করার সময় চিত্র আপলোড ক্ষেত্রটি দেখতে পাব কিন্তু আমি যখন মেনু আইটেমটি সংরক্ষণ করার চেষ্টা করব তখন: ড্রুপাল \ কোর \ সত্তা \ সত্তা স্টোরেজএক্সপেশন: এসকিউএলস্টেট [42 এস 22]: কলাম পাওয়া যায় নি: 1054 অজানা কলাম 'ফিল্ড_মেনু_আইমেজ_তারেক_আইডি' এছাড়াও যখন আমি যুক্ত করার জন্য পৃষ্ঠা রিফ্রেশ করি মেনু আইটেম ফর্ম আমি লগগুলিতে দেখতে পাই: বিজ্ঞপ্তি: অপরিজ্ঞাত সূচক: ক্ষেত্র_মেনু_আইমেজ__ উচ্চতা নোটিশ: অপরিজ্ঞাত সূচি: ক্ষেত্রের_মেনু_আইমেজ__ প্রস্থ এবং আরও ... চিত্র ক্ষেত্রের ধরণের জন্য কোনও উদাহরণ? ধন্যবাদ
ব্লাস্টোয়েস

5
আমি এই সমস্যা সমাধান করেছি। /update.php কাজ করছে না তাই কলাম কখনই ক্রেট হয় না। আমি ডিবি আপডেট করতে ড্রশ ব্যবহার করেছি: ড্রশ আপডেটবি - ইনটিটিটিস-আপডেটস
ব্লাস্টোইজ

1
ক্ষেত্রটি যুক্ত করতে আপনি কি হুক_ফর্ম_মেনু_লিঙ্ক_কন্টেন্ট_মেনু_লিঙ্ক_কন্টেন্ট_ফর্ম_াল্টার () রেখেছেন?
ম্যাট

3

দুর্ভাগ্যক্রমে ড্রপাল ৮-এ মেনু লিঙ্কগুলির জন্য প্রকৃতপক্ষে কোনও ক্ষেত্রের ইউআই নেই @ তবে menu_link_contentদ্রুপাল 8 এ একটি সামগ্রী সত্তা, সুতরাং এতে ক্ষেত্র যুক্ত করা সম্ভব।

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

বিকল্প # 2 তবে মেনু লিঙ্কগুলির জন্য অস্থায়ী ক্ষেত্রগুলি UI সক্ষম করার জন্য আরও একটি উপায় রয়েছে:

  1. খোলা Drupal\menu_link_content\Entity\MenuLinkContent
  2. যোগ field_ui_base_route = "entity.menu.add_link_form"টীকা থেকে
  3. ক্যাশে পুনর্নির্মাণ
  4. পরিদর্শন /admin/structure/menu/manage/main/add/fields
  5. আপনার সমস্ত ক্ষেত্র, প্রদর্শন পরিচালনা করুন
  6. আপনার সাইটের কনফিগারেশন রফতানি করুন ( drush cex -y)।
  7. field_ui_base_route = "entity.menu.add_link_form"এ টিকা থেকে সরানDrupal\menu_link_content\Entity\MenuLinkContent
  8. ক্যাশে পুনর্নির্মাণ।

আমি এই পদ্ধতির চেষ্টা করেছি। প্রথমে এটি দেখতে ভাল লাগছে, তবে আমি যখন নতুন ক্ষেত্র তৈরি করার চেষ্টা করেছি তখন ত্রুটি হয়ে উঠছি: ফিল্ড তৈরি করতে সমস্যা হয়েছিল মেনু চিত্র: একটি বান্ডিল ছাড়াই একটি ক্ষেত্র 'ফিল্ড_মেনু_আইমেজ' তৈরি করার চেষ্টা। আমি এখন এই প্রোগ্রামটিমেটিকালি অর্জনের চেষ্টা করছি, তবে এটি যদি কাজ করে তবে ভাল হত।
ব্লাস্টোয়েজ


0

@ মাইখাইলো গুরেই পরামর্শ হিসাবে "মেনু আইটেম অতিরিক্ত" এটি অর্জনের এক উপায়।

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

সুতরাং "ওয়ে মেগা মেনু" এর সাথে কাজ করে এমন অন্যান্য বিকল্প হ'ল "মেনু আইটেমের সামগ্রী ক্ষেত্র":

https://www.drupal.org/project/menu_item_fields

একই কার্যকারিতা রয়েছে এবং আমরা মেগা মেনু মডিউলটির সাথে বিরোধ নেই।


-2

দুর্ভাগ্যক্রমে, ড্রুপাল 8 কোর বিকাশকারীরা মেনু লিঙ্কগুলিকে ক্ষেত্রযোগ্য করতে পারেনি। সুতরাং আপাতত মেনু লিঙ্কগুলিতে ক্ষেত্রগুলি যুক্ত করা সম্ভব নয়।

সাইট বিল্ডার "চারপাশের কাজ" হ'ল একটি কাস্টম শব্দভাণ্ডার তৈরি করা যাতে কাস্টম ক্ষেত্র থাকতে পারে।


4
ভুল। মেনুলিঙ্ক কনটেন্ট একটি ক্ষেত্রযোগ্য সামগ্রী সত্তা।
দুধভস্কি

1
আপনি মেনুলিংকন্টনে নতুন ক্ষেত্র যুক্ত করতে কী করবেন?
ম্যাথিউউস্কারসেট

1
উপরের উত্তর দেখুন। তারা উভয়ই মেনুলিংকন্টনে নতুন ক্ষেত্র যুক্ত করার পদ্ধতি ব্যাখ্যা করে।
দুধভস্কি

2
মেনু আইটেম অতিরিক্ত যে কি drupal.org/project/menu_item_extras
Mykhailo Gurei

1
সুতরাং পরিষ্কার @ মিলকভস্কি সত্য। মেনুলিঙ্ক কনটেন্ট কোনও ক্ষেত্রযুক্ত সামগ্রী নয়।
ম্যাথিউউসকার্সেট
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.