এটি টেম্পলেটটির প্রথম পৃষ্ঠা কিনা তা পরীক্ষা করুন


14

আমি যখন আমার ড্রুপাল 8 পরীক্ষার ওয়েবসাইটের প্রথম পৃষ্ঠায় থাকি তখন সামগ্রীটি দেখানোর চেষ্টা করি, তবে সামগ্রীটি প্রতিটি পৃষ্ঠায় প্রদর্শিত হয়:

{% if front_page %}
  <header role="banner">
    {% if logo %}
      <a href="{{ front_page }}" title="{{ 'Home'|t }}" rel="home">
        <img src="{{ logo }}" alt="{{ 'Home'|t }}"/>
      </a>
    {% endif %}
    <h1 style="color:black">TESTTESTTESTESTAET</h1>
<h1>test</h1

    {{ page.header }}
  </header>
{% endif %}

কেন এই কাজ হয় না এবং আমি কীভাবে এই কাজটি করতে পারি?

উত্তর:


24

আপনি যে পরিবর্তনশীলটির সন্ধান করছেন তাকে বলা হয় is_front:

{% if is_front %}

টেমপ্লেটের জন্য উপলব্ধ ভেরিয়েবলগুলি .html.twig ফাইলের শীর্ষে নথিভুক্ত করা হয়, তবে সমস্ত টেম্পলেটগুলির জন্য ডিফল্ট ভেরিয়েবলগুলির একটি সেটও রয়েছে (যা প্রতিটি টেমপ্লেটে নথিভুক্ত নয়)। আপনি এগুলিকে _টিম্পলেট_প্রিপ্রোসেস_ডিফোল্ট_ভ্যারিয়েবলগুলি () এ খুঁজে পেতে পারেন ।


ধন্যবাদ এই এক কাজ! এই বিবৃতি পরে একটি {{elseif} add যুক্ত করার উপায় আছে?
স্টিফান


21

নোট করুন যে আপনি যদি $variables['is_front']টেম্পলেটগুলিতে সরবরাহ করতে চান যা না করে তবে আপনি এটি সম্পর্কিত প্রিপ্রোসেস ফাংশনে যুক্ত করতে পারেন।

function themename_preprocess_menu(&$variables) {
  try {
    $variables['is_front'] = \Drupal::service('path.matcher')->isFrontPage();
  }
  catch (Exception $e) {
    $variables['is_front'] = FALSE;
  }
}

এটা একই ভাবে সম্পন্ন করা হয় template_preprocess_page জন্য page.html.twig

একই উত্তর এখানে


1
এটি আমার জন্য টেমপ্লেট_প্রিয়সেস_এইচটিএমএলে দরকারী ছিল, যেহেতু "is_front" html.html.twig
ben.hamelin

আমি মনে করি আপনার url.path.is_frontপাশাপাশি একটি ক্যাশে প্রসঙ্গে যুক্ত করা উচিত। এই মন্তব্য দেখুন ।
অ্যান্ডি

4

ধরে নিই যে আপনি যে টেম্পলেটটি ব্যবহার করছেন সেটি হ'ল পেজ হিট.টম.টিউইগ, তারপরে আপনি যে পরিবর্তনশীলটি সন্ধান করছেন তা হ'ল is_front; front_pageসামনের পৃষ্ঠার ইউআরএল রয়েছে যা template_preprocess_page()নিম্নলিখিত কোডটি দিয়ে শুরু করা হয়েছে ।

$variables['front_page'] = \Drupal::url('<front>');

অন্যান্য টেম্পলেট ফাইলগুলির জন্য, দ্রুপাল কোনও ভেরিয়েবল সরবরাহ করে না যদি ব্যবহারকারী আপনাকে প্রথম পৃষ্ঠায় দেখছে কিনা। যেটি ব্যবহার করা হয়েছে তার অনুরূপ কোড ব্যবহার করে template_preprocess_page()আপনি যে টেম্পলেটটি ব্যবহার করছেন তা প্রিপ্রোসেস ফাংশনে সেই পরিবর্তনশীলটি সেট করতে পারেন।

function mymodule_preprocess_HOOK(&$variables) {
  // An exception might be thrown.
  try {
    $variables['is_front'] = \Drupal::service('path.matcher')->isFrontPage();
  }
  catch (Exception $e) {
    // If the database is not yet available, set the default value.
    $variables['is_front'] = FALSE;
  }  
}

HOOKটেম্পলেট প্রকারের সাথে প্রতিস্থাপন করুন (যেমন ক্ষেত্রের জন্য ক্ষেত্র । Hmtl.twig টেম্পলেট)।


4

আপনি এটি root_path ব্যবহার করে সরাসরি html.html.twig এ পাবেন। বডি ক্লাসটি সেট করতে এটি ইতিমধ্যে 31 লাইনে আউটপুট রয়েছে:

root% না হলে মূল_পথ% not

কোড

{% শেষ যদি %}

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