বর্তমান পৃষ্ঠাটি কোনও মডিউল / টেম্পলেট থেকে 404 ত্রুটি কিনা তা পরীক্ষা করে দেখুন কীভাবে?


20

কীভাবে D7 এ চেক করবেন, যদি বর্তমান পৃষ্ঠাটি কোনও মডিউল / টেমপ্লেট থেকে 404 ত্রুটি ফিরিয়ে দিচ্ছে?


1
: Drupal এর 6 এর জন্য সম্পর্কিত প্রশ্ন drupal.stackexchange.com/questions/10259/...
mpdonadio

উত্তর:


33

ড্রুপাল 7 এ, আপনি ব্যবহার করতে পারেন drupal_get_http_header()

টেমপ্লেট.এফপি ফাইলটিতে এই কোডটি ব্যবহার করুন।

$status = drupal_get_http_header("status");
if ($status === '404 Not Found'){
  // Do something.
}

ড্রুপাল 8 এ, আপনি নীচের কোডটি একটি হুক ব্যবহার করতে পারেন।

$route_name = \Drupal::request()->attributes->get('_route');
if ('system.404' === $route_name) {
  // Do something.
}

টেমপ্লেট.এফপি এর মধ্যে এই কোডটি কোন কার্যক্রমে চলে?
জর্দান ম্যাগনসন

1
আপনি এই কোডটি টেমপ্লেট_প্রিয়সেস_পেজের (এবং $ ভেরিয়েবল) ভিতরে রাখতে পারেন
fzmaster

এটি hook_exit ()
Sheldonkreger

আপনি যদি 403 টি পরিচালনা করছেন তবে আপনি ব্যবহার করতে পারেন:if ($status == '403 Forbidden') { /* ... do stuff ... */ }
tyler.frankenstein

2
দ্রষ্টব্য: system.404রুট উপর ভিত্তি করে ড্রুপাল 8 এর সমাধান কাজ করে না যদি আপনি কনফিগারেশন> সিস্টেম> বেসিক সাইট সেটিংসে আপনার 404 পৃষ্ঠা হিসাবে নোড পৃষ্ঠা নির্দিষ্ট করে থাকেন । যখন আপনার হয় কাস্টম 404 পৃষ্ঠা নির্দিষ্ট করা থাকে বা না থাকে তখন এমন কোনও সমাধানের জন্য @Gervase এর উত্তর দেখুন।
জেমস উইলসন

11

দ্রুপাল ৮.২.x:

দুর্ভাগ্যক্রমে, drupal_get_http_header ("স্থিতি") আর কাজ করে না।

চেষ্টা করুন:

$status = \Drupal::requestStack()->getCurrentRequest()->attributes->get('exception');
if ($status && $status->getStatusCode() == 404){

}

এখানে এটি নিয়ে একটি আলোচনা রয়েছে: https://www.drupal.org/node/1969270


1
আমি যা খুঁজছিলাম ঠিক এটাই ! <3
জেমস উইলসন

1
সতর্কতা অবলম্বন করে - বস্তুটি আবার ফিরে এসেছে সেখানে কোনও getStatusCodeফাংশন নাও থাকতে পারে ।
ফ্রিজমগ

এটি আমার অন্তহীন অনুসন্ধান এবং চেষ্টা শেষ করে।
usmanjutt84

4

ড্রপাল 7 এ অ্যাক্সেস অস্বীকৃত (403) এবং পৃষ্ঠা পাওয়া যায়নি (404) সনাক্ত করার এটি সহজতম উপায় way

// get the menu router item for the current page
$router_item = menu_get_item();

// if there is no router item, this page is not found
$is_page_not_found_404 = empty($router_item);

// if 'access' is empty for the router item, access is denied
$is_access_denied_403 = empty($router_item['access']);

$router_itemsite_404ভেরিয়েবলটি নোড পথে সেট করা থাকলে খালি হবে না , সুতরাং অতিরিক্ত চেকগুলির প্রয়োজন হবে।
10:18 '

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