यदि वर्तमान देखे गए पृष्ठ प्रशासनिक हैं तो मैं कैसे पता लगा सकता हूं?


18

मैं यह कैसे पता लगाऊं कि उपयोगकर्ता जिस पृष्ठ को वर्तमान में देख रहा है, उसे प्रशासनिक माना जाता है या नहीं? प्रशासनिक विषय सक्रिय होने पर एक प्रशासनिक पृष्ठ को मान्यता दी जा सकती है।

मेरे मामले में अगर मैं इस शर्त को पूरा करता हूं, तो एक नोटिस प्रिंट करना चाहूंगा, और यदि उपयोगकर्ता 'मॉड्यूल का प्रबंधन' कर सकता है।

जवाबों:


30

इसके साथ किया जा सकता है path_is_admin(current_path())

उदाहरण के लिए, निम्नलिखित हुक कार्यान्वयन का उपयोग किया जा सकता है।

function mymodule_init() {
  if (user_access('administer modules') && path_is_admin(current_path())) {
      drupal_set_message(t('Message'));
  }
}

1
उत्तर इस बात पर निर्भर करता है कि ओपी की "प्रशासनिक" परिभाषा क्या है, और यह परिभाषा पहले प्रश्न के बाद से बदल सकती है। कुछ सामग्री संपादन पृष्ठों को "व्यवस्थापक" पृष्ठ मानते हैं, फिर भी path_is_admin () नोड / 123 / संपादन जैसे पृष्ठ के लिए गलत वापस आ जाएगा। इस बीच, यह पृष्ठ व्यवस्थापक विषय का उपयोग कर भी सकता है और नहीं भी। कोई भी पृष्ठ संभावित रूप से व्यवस्थापक विषय का उपयोग कर सकता है, और कोई भी पृष्ठ संभवतः व्यवस्थापक विषय का उपयोग नहीं कर सकता है। ओपी में वर्तमान परिभाषा "प्रशासनिक विषय सक्रिय होने पर एक प्रशासनिक पृष्ठ को मान्यता दी जा सकती है।"
arnoldbird

9

यदि वर्तमान पथ "प्रशासनिक" है, तो यह निर्धारित करने के लिए डैनियल का जवाब सही है, लेकिन यदि आप अधिक सीधे जांच करना चाहते हैं कि क्या प्रशासन विषय का उपयोग किया जा रहा है (आपका प्रश्न थोड़ा अस्पष्ट है, जिसके लिए आप देख रहे हैं), तो आप कर सकते हैं ...

global $theme;
if ($theme === variable_get('admin_theme', 'seven')) {
  // …
}

... हालांकि यह विफल होने की संभावना है यदि आप इसे बूटस्ट्रैप प्रक्रिया में बहुत जल्दी चलाने की कोशिश करते हैं, अर्थात् $themeपरिभाषित होने से पहले ।


स्पष्ट ओपी तो यह व्यवस्थापक विषय की तलाश में निर्देशित नहीं है। बल्कि व्यवस्थापक विषय केवल एक प्रशासनिक पथ का एक संकेत है।
डैनियल

मैं तब भी उलझन में था, जब तक कि मैंने यह नहीं देखा कि यह उन चीजों में से एक है, जहां आपने एक प्रश्न पोस्ट किया है और फिर स्वयं इसका उत्तर दिया है। डेरप, मैं इसे अभी प्राप्त करता हूं।
गैरेट अलब्राइट


0

यह जांचने के लिए कि क्या प्रशासन विषय का उपयोग किया जा रहा है (Drupal 8 के लिए) आप उपयोग कर सकते हैं

$theme_name = \Drupal::service('theme.manager')->getActiveTheme()->getName();

विषय नाम पाने के लिए।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.