কিভাবে একটি মেনু ব্লক থিম?


11

আমি একটি কাস্টম মেনু তৈরি করেছি (এটিকে "মায়নাভ" বলতে পারি) এবং আমার থিমটিতে আমি এটির জন্য বিশেষভাবে একটি টেম্পলেট তৈরি করেছি ( block--menu--menu-mynav.tpl.php) এতে রয়েছে:

<div id="mynav" class="<?php print $classes; ?>"<?php print $attributes; ?>>
  <?php print $content ?>
</div>

এটি কাজ করে।

তবে আমি উত্সাহিত এবং অন্তর্ভুক্ত থাকা আনর্ডারড তালিকার জন্য আইডি প্রয়োগ করতে পছন্দ করব $content। আমার ধারণা আমি MYTHEME_links__system_mynav_menuএই জাতীয় একটি ফাংশন তৈরি করা প্রয়োজন :

function MYTHEME_links__system_mynav_menu($variables) {
  return "TEST"; // Generate HTML here (<ul id="mynav">...)
}

তবে এর কোনও প্রভাব আছে বলে মনে হয় না।

আমি কি ভুল করছি?



1
অন্য প্রশ্নটি একটি অনন্য মেনু আইডি যুক্ত সম্পর্কে, যখন এই প্রশ্নটি আরও জেনেরিক।
kiamlaluno

স্ট্যাকওভারফ্লোতে সঠিক প্রশ্ন: স্ট্যাকওভারফ্লো.
নখ

উত্তর:


25

অর্ডারমুক্ত তালিকাকে থিম করতে আপনার থিম_মেনু_ট্রি () কল করতে হবে। এটিকে কল করতে আপনি নিজের টেম্পলেট.এফপি সম্পাদনা করতে পারেন।

function THEMENAME_menu_tree__MENUNAME($variables){
  return '<ul class="your-custom-class" id="your-custom-id">' . $variables['tree'] . '</ul>';
}

তারপরে, আপনি যদি আপনার লিঙ্কগুলি থিম করতে চান, থিম_মেনু_লিঙ্ক () কল করুন।

function THEMENAME_menu_link__MENUNAME($variables) {
  $element = $variables['element'];
  $sub_menu = '';

  if ($element['#below']) {
    $sub_menu = drupal_render($element['#below']);
  }
  $output = l($element['#title'], $element['#href'], $element['#localized_options']);
  return '<li' . drupal_attributes($element['#attributes']) . '>' . $output . $sub_menu . "</li>\n";
}

এখন, ড্রুপাল 7 এর সমস্যাটি হ'ল কাস্টম মেনুগুলির সক্রিয় ট্রেলটি প্রদর্শন করার ক্ষেত্রে একটি বড় বাগ রয়েছে।

দেখুন ইস্যু
ইস্যু # 520106 - পরিবর্তনশীল সেট সক্রিয় লেজ কোন উপায়
ইস্যু # 942782 - কাস্টম মেনু সক্রিয় লেজ প্রাপ্তও হব না

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


2

আপনার থিমের টেমপ্লেট.এফপি-র ভিতরে, ড্রুপাল 6 এ জিনিসগুলি করার উপায় ছিল

function MYTHEME_links__system_mynav_menu($variables) {
  return "TEST"; // Generate HTML here (<ul id="mynav">...)
}

ড্রুপাল 7 এ আপনাকে কল করতে হবে

  function MYTHME_menu_link(array $variables) {

  }

MYTHEME_menu_linkমনে হয় কেবল ব্যক্তিগত লিঙ্কগুলিই হ্যান্ডেল করে। আমি পৌঁছতে পারি না ul
RoToRa

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