মুদ্রণ n node.tpl.php ফাইলে বার্তাগুলি


23

ড্রুপাল 7-এ, ডিফল্টরূপে $messagesভেরিয়েবলটি পেজ.টিপিএল.পিপিতে মুদ্রিত হয়।

$messagesকোনও নোড.টিপিএলপিএফপি ফাইল (যেমন $ নোড-মাইকন্টেন্টটিপ.টিপিএল.পিপি) মুদ্রণের কোনও উপায় আছে কি ?

শুধু লাগানো <?php print $messages; ?>বা <?php print render($page['messages']); ?>কাজ করে না।

একটি ব্লকে in বার্তাগুলি মুদ্রণের জন্য এখানে একটি টিউটোরিয়াল রয়েছে তবে আমি এটি আমার node.tpl.php ফাইলটিতে রাখতে চাই।


আমি মনে করি থিম_স্ট্যাটাস_মেসেজগুলি ডেকে আনা হওয়ার আগে template_preprocess_nodeডুপাল_জেট_মেসেজগুলি কল করার সময় খালি থাকে।
বেনাম-বিকাশকারী

উত্তর:


30

আসলে, আপনি যা করতে চান তা হ'ল:

function YOURTHEME_preprocess_page(&$variables) {
  // This disables message-printing on ALL page displays
  $variables['show_messages'] = FALSE;
}

function YOURTHEME_preprocess_node(&$variables) {
  $variables['messages'] = theme('status_messages');
}

এটি কীভাবে কাজ করে: ড্রুপাল কোর থিম_প্রসেস_ পৃষ্ঠাতে শো_মেসেজের মান পরীক্ষা করে। যদি এটি সত্য (ডিফল্ট) হয় তবে এটি থিমটিকে ('status_messages') উপরের মতো কল করে এবং কার্যকরভাবে বার্তাগুলির স্টোরেজটি খালি করে, সুতরাং একই থিম ফাংশনটি পরে কল করলে কেবল একটি খালি স্ট্রিং ফিরে আসবে। তবে, আমরা যদি এই পরিবর্তনশীলটিকে FALSE এ সেট করি তবে এটি থিম ফাংশনটিকে প্রসেস_পেজে কল করা থেকে বাধা দেয়, আমাদের পছন্দসই একটি টেমপ্লেটে একই থিম ফাংশনটি ব্যবহার করে সমস্ত বার্তাগুলি পেতে দেয়।


1
এবং যদি আপনি কেবল নোড পৃষ্ঠাগুলিতে এই পদক্ষেপ নিতে চান তবে কেবল $ ভেরিয়েবলগুলি ['show_message'] = FALSE মোড়ুন কিনা তা দেখতে (আইসেট ($ ভেরিয়েবল ['নোড'])) শর্তসাপেক্ষে।
areynolds

এবং আপনাকে অন্য সমস্ত পৃষ্ঠাগুলির জন্য একই কাজ করতে হবে (ভিউ, প্যানেল ইত্যাদি)
মারিয়া আইওনিডু

8

আপনি যে প্রশ্নে উল্লেখ করেছেন t page.tpl.php এর বার্তাগুলি থেকে block বার্তা থেকে আলাদা করে কোনও ব্লক থেকে বার্তাগুলি কীভাবে প্রদর্শিত হবে তার উত্তর দেওয়া উত্তম উপায়। মূলত আপনার এই জাতীয় কিছু দরকার যেখানে আপনার থিমের নামটি আপনার থিম এবং এই ফাংশনটি আপনার টেম্পলেট.এফপিতে থাকা উচিত। আমি আসলে এই কোডটি চালাইনি তবে এতে একটি ক্র্যাক রয়েছে।

function YOURTHEME_preprocess_node(&$vars) {
  $output = '';
  foreach (drupal_get_messages(NULL, FALSE) as $type => $messages) {
    $output .= "<div class=\"messages $type\">\n";
    if (count($messages) > 1) {
      $output .= " <ul>\n";
      foreach ($messages as $message) {
        $output .= '  <li>' . $message . "</li>\n";
      }
      $output .= " </ul>\n";
    }
    else {
      $output .= $messages[0];
    }
    $output .= "</div>\n";
  }

  $vars['messages'] = $output;
}

এরপরে আপনার node.tpl.php এ $ বার্তা আউটপুট করতে সক্ষম হওয়া উচিত


সমাধানের জন্য ধন্যবাদ। আমি চেষ্টা করেছি কিন্তু মনে হচ্ছে এটি কাজ করে না। আমি using বার্তা: <? পিএইচপি মুদ্রণ $ বার্তাগুলি মুদ্রণের জন্য নিম্নলিখিতটি ব্যবহার করছি; ?> এটা কি ঠিক?
big_smile

8
পৃষ্ঠা.tpl.php থেকে স্টাফ নেওয়ার সময় সাবধানতা অবলম্বন করুন। নোড টেমপ্লেট প্রতিটি পৃষ্ঠার জন্য ব্যবহার করা হয় না, তাই আপনি নোড পৃষ্ঠাতে প্রদর্শিত উদাহরণগুলি হারিয়ে যেতে পারেন (যেমন অ্যাডমিন পৃষ্ঠাগুলির মতো)। আপনি যখন এটি করতে যাচ্ছেন, আমি আপনাকে পরামর্শ দিচ্ছি যে আপনি পেজ.টপিএলপিএফপিতে একটি ফ্যালব্যাক রাখুন যা আপনার বার্তাগুলি যখন নোড.tpl.php দ্বারা বাধা না দেওয়া হবে তখন তা প্রদর্শন করবে।
মার্চভ্যানেজেন্ড
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.