পৃষ্ঠার পথ / গভীরতার উপর ভিত্তি করে গতিশীলভাবে BODY ট্যাগে ক্লাস কীভাবে যুক্ত করবেন?


22

কীভাবে গতিশীলভাবে বডি ট্যাগে ক্লাস যুক্ত করবেন যেমন নীচের এই উদাহরণটি?

-হোম-
সিটিস -      
মেলবোর্ন       <body class="melbourne">
--- থিম পার্ক       <body class="melbourne theme_parks">
--- রেস্তোঁরা       <body class="melbourne restaurants">
- নিউ ইয়র্ক       <body class="new_york">
--- থিম পার্কস       <body class="new_york theme_parks">
--- রেস্তোঁরাগুলি       <body class="new_york restaurants">
- আমাদের সাথে যোগাযোগ করুন       <body class="contact_us">

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

উত্তর:


37

নিখিল মোহন এর উত্তরটি ব্যাখ্যা করতে, আপনি template_preprocess_html()আপনার থিমের টেম্পলেট.এফপি ফাইলের মধ্যে প্রয়োগ করতে পারেন । এখানে কী চলছে তার বুনিয়াদি বুঝতে ওভাররাইডিং থেমেবল আউটপুট সম্পর্কিত ডকুমেন্টেশন পড়ুন ।

এই ফাংশনটির মধ্যে আপনার ভেরিয়েবলটিতে অ্যাক্সেস $vars['classes_array']রয়েছে যা ক্লাসগুলির একটি তালিকা রাখে যা <body>পৃষ্ঠায় এইচটিএমএল ট্যাগে প্রয়োগ করা হবে ।

দুর্ভাগ্যক্রমে, মেনুতে বর্তমান পৃষ্ঠার অবস্থান সম্পর্কে তথ্য অবিলম্বে পাওয়া যায় না। আপনি এই তথ্যটি পেতে menu_get_item()এবং তারপরে ব্যবহার করতে পারেন menu_get_ancestors()তবে এটি এমন একটির জন্য প্রচুর পরিমাণে প্রক্রিয়াকরণ শক্তি যা আমরা সম্ভবত একটি সহজতর পদ্ধতির সাথে পেতে পারি।

ধরে নেওয়া যাক আপনি মেনু পাথের উপর ভিত্তি করে আপনার সামগ্রীর পৃষ্ঠাগুলির জন্য স্বয়ংক্রিয়ভাবে সিনটিক পাথ তৈরি করতে পাঠাটো মডিউলটি ব্যবহার করছেন (যেমন, আপনার মেলবোর্ন থিম পার্ক পৃষ্ঠায় 'মেলবোর্ন / থিম_পার্কস' পাথ থাকবে) আপনি ক্লাসগুলি তৈরি করতে পৃষ্ঠার পথটি ব্যবহার করতে পারেন কি খোঁজচ্ছেন:

function THEMENAME_preprocess_html(&$vars) {
  $path = drupal_get_path_alias();
  $aliases = explode('/', $path);

  foreach($aliases as $alias) {
    $vars['classes_array'][] = drupal_clean_css_identifier($alias);
  } 
}

এটাই. দ্রুপাল এখন বর্তমান পৃষ্ঠার পাথের উপন্যাসের দিকে নজর দেবে এবং পথের ওরফে <body>প্রতিটি অংশের জন্য ট্যাগটিতে একটি ক্লাস যুক্ত করবে ।


1
যদি পথগুলি কাজ না করে তবে মেনু_জেট_একটিভ_ব্রেডক্র্যাম্বকে পার্সিং করাও একটি বিকল্প হতে পারে। এটি সম্ভবত staticএই সময়ে ক্যাশে রয়েছে, তাই প্রায় কোনও ওভারহেড নেই।
এমপিডোনাদিও

3
আপনাকে সবাইকে ধন্যবাদ, বিশেষত @ শেনা_ডি কোডটির পাশাপাশি ব্যাখ্যাটির জন্য! ওমেগা $vars['attributes_array']['class'][] = drupal_clean_css_identifier($alias);
থিমটিতে এটি কীভাবে

1

আপনি template_preprocess_htmlhtml.tpl.php এর জন্য প্রিপ্রসেস ভেরিয়েবল ব্যবহার করতে পারেন

Html.tpl.php দেখুন

একটি একক দ্রুপাল পৃষ্ঠার প্রাথমিক HTML কাঠামো প্রদর্শন করতে ডিফল্ট থিম প্রয়োগ



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