Html.tpl.php এ প্রিন্টিং অঞ্চলসমূহ


10

আমার html.tpl.php টেমপ্লেটে কিছু অঞ্চল আউটপুট করতে হবে যেহেতু এগুলি পেজ.টিপিএলপিএফপি এবং পৃষ্ঠা-ফ্রন্ট.tpl.php (কেবলমাত্র দুটি নামের জন্য) এর মধ্যে পরিবর্তন হয় না। মূলত আমি কোড সদৃশ এড়াতে চাই।

তবে html.tpl.php- তে অঞ্চলগুলির সাথে সম্পর্কিত বলে মনে হচ্ছে না, এবং আমি drupal_get_region_content ব্যবহার করে (কিছুই প্যারামিটার ছাড়া এবং এটি কেবল একটি খালি অ্যারে ফিরিয়ে আনে) ব্যবহার করে কিছু পেতে পারি না।

ধারনা?


আপনি drupal_set_region_content()অঞ্চলের সামগ্রী সেট করতে ব্যবহার করেছেন ?
কিমলালুনো

2
এরকম কোনও ফাংশন নেই। হতে পারে আপনি বোঝাতে চেয়েছিলেন drupal_add_region_content()তবে আমি এর কোনও অর্থ দেখতে পাচ্ছি না: আমি ব্লকের অ্যাডমিন ইন্টারফেসের মাধ্যমে অঞ্চলগুলির বিষয়বস্তু সেট করেছি।
মরফিউ 5

1
হ্যাঁ, আমি বোঝানো drupal_add_region_content()
কিমলালুনো

উত্তর:


18

আমি এর মতো সমাধান করেছি:

function mytheme_preprocess_html(&$variables) {
    $variables['region_name'] = block_get_blocks_by_region('region_name');
}

এবং তারপর আমি করতে পারে

<?php print render($region_name) ?>

প্রতিধ্বনি কেন ব্যবহার করবেন? অবশ্যই এটি কাজ করে।
এসডিমুল্রয়

অবশ্যই, আমি যদি কোনও মডিউল বা সর্বজনীন থিম প্রয়োগ করি তবে আমাকে সম্প্রদায়ের মানগুলি অনুসরণ করতে বাধ্য করা হবে। এটি একটি কাস্টম থিম যা আমার ক্লায়েন্টের দ্বারা একচেটিয়াভাবে ব্যবহৃত হয়েছিল।
মরফিউ 5

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

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

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

2

drupal_get_region_content()পূর্ববর্তী কলগুলির সাথে সেট করা সামগ্রীটি ফিরে আসে drupal_add_region_content(), তবে এতে ব্লকগুলির সামগ্রী অন্তর্ভুক্ত হয় না, যা ব্লক_পেজ_বিল্ড () এর মাধ্যমে পৃষ্ঠাতে রেন্ডার করা হয় ।

আপনি যদি দ্রুপাল উত্স কোডে "drupal_add_region_content" অনুসন্ধান করেন, আপনি লক্ষ্য করবেন যে ফাংশনটি ডেকেছে:

  • drupal_get_region_content()
  • install_display_output()
  • template_preprocess_maintenance_page()
  • update_task_list()

প্রশাসনিক পৃষ্ঠায় ব্লকগুলির জন্য আপনি যা সেট করেছেন সেটি হ'ল যে অঞ্চলে ব্লকগুলি রেন্ডার করা হবে তবে তাদের সামগ্রীগুলি যোগ করা হয়নি drupal_add_region_content(); প্রকৃতপক্ষে, উপরে তালিকাভুক্ত কোন ফাংশন (যা কেবলমাত্র একটি ফাংশন কলিং drupal_add_region_content(), একটি দ্রুপাল ইনস্টলেশন পরীক্ষার জন্য কোড ব্যতীত) ব্লক সামগ্রীকে রেন্ডারিং / যুক্ত করার জন্য নয়।

আপনার যদি নিজের কোডে ব্লকগুলি রেন্ডার করতে হয় তবে আপনার ব্যবহৃত কোডটি চেক করা উচিত block_page_build()। বিশেষত, এটি হ'ল কোড যা আপনার পক্ষে সম্ভবত আরও কার্যকর:

  // Fetch a list of regions for the current theme.
  $all_regions = system_region_list($theme);

  $item = menu_get_item();
  if ($item['path'] != 'admin/structure/block/demo/' . $theme) {
    // Load all region content assigned via blocks.
    foreach (array_keys($all_regions) as $region) {
      // Assign blocks to region.
      if ($blocks = block_get_blocks_by_region($region)) {
        $page[$region] = $blocks;
      }
    }
    // …
  }

প্রথম দুটি লাইন পৃষ্ঠা যাচাই করা হচ্ছে তা যাচাই করে থিম অঞ্চলগুলি কোথায় রাখা হয়েছে তা প্রদর্শনের জন্য ব্যবহৃত ডেমো পৃষ্ঠা নয়।

যদি আপনাকে অন্যভাবে ব্লকগুলি রেন্ডার করতে হয় তবে আপনার থিমের থিম_ব্লক () বা (সম্ভবত আরও বেশি) একটি কাস্টম ব্লক.টিপিএলপিএফপি টেম্পলেট ফাইল তৈরি করার বিষয়ে আপনি আগ্রহী হওয়ার সম্ভাবনা বেশি । ব্লকগুলি যেভাবে উপস্থাপিত হয় তার পরিবর্তনের আরেকটি উপায় হ'ল ব্লকগুলির ( হুক_প্রিপ্রসেস_ব্লক () ) জন্য একটি প্রিপ্রসেস ফাংশন ব্যবহার করা ।

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