यह उन क्षेत्रों में से एक है जहां कोई अच्छा जवाब नहीं है। Magento स्वयं इस जानकारी के लिए एक स्पष्ट विधि/एपीआई प्रदान नहीं करता है, इसलिए किसी भी समाधान के साथ आपको पर्यावरण की जांच करने और चीजों को कम करने की आवश्यकता होगी।
मैं थोड़ी देर के लिए
Mage::app()->getStore()->isAdmin()
उपयोग कर रहा था, लेकिन यह पता चला कुछ व्यवस्थापक पृष्ठों (Magento कनेक्ट पैकेज प्रबंधक) जहां यह सच नहीं है देखते हैं। किसी कारण से यह पृष्ठ स्पष्ट रूप से स्टोर आईडी को 1 सेट करता है, जो isAdmin
को झूठी के रूप में लौटाता है।
#File: app/code/core/Mage/Connect/controllers/Adminhtml/Extension/CustomController.php
public function indexAction()
{
$this->_title($this->__('System'))
->_title($this->__('Magento Connect'))
->_title($this->__('Package Extensions'));
Mage::app()->getStore()->setStoreId(1);
$this->_forward('edit');
}
इस व्यवहार के अन्य पृष्ठों हो सकता है,
एक और अच्छा शर्त डिजाइन पैकेज की "क्षेत्र" संपत्ति की जांच करने के लिए है।
यह व्यवस्थापक में मौजूद पृष्ठ के लिए ओवरराइड होने की संभावना कम है, क्योंकि क्षेत्र प्रशासन क्षेत्रों के डिजाइन टेम्पलेट्स और लेआउट XML फ़ाइलों के पथ को प्रभावित करता है।
क्या आप, पर्यावरण से यह निष्कर्ष निकाल नई Magento मॉड्यूल बनाते हैं, और
class Namespace_Modulename_Helper_Isadmin extends Mage_Core_Helper_Abstract
{
public function isAdmin()
{
if(Mage::app()->getStore()->isAdmin())
{
return true;
}
if(Mage::getDesign()->getArea() == 'adminhtml')
{
return true;
}
return false;
}
}
और फिर इसे करने के लिए एक सहायक वर्ग को जोड़ने जब भी आप अगर आप व्यवस्थापक, उपयोग में हो जांच करने की आवश्यकता के लिए चुनते हैं की परवाह किए बिना इस सहायक
if(Mage::helper('modulename/isadmin')->isAdmin())
{
//do the thing about the admin thing
}
इस तरह, जब/अगर आप अपने व्यवस्थापक जाँच तर्क में छेद की खोज, आप एक केंद्रीकृत स्थान में सब कुछ सही कर सकते हैं।
जानकारी एलन के लिए धन्यवाद! मैं वास्तव में इसे [आपके आईई 9 फिक्स] (http://alanstorm.com/ie9_fix_for_magento) को अनुकूलित करने के लिए उपयोग कर रहा हूं, क्योंकि यह हमारे डिजाइनरों के लिए अग्रभाग पर कुछ मुद्दों का कारण बन रहा था। यह व्यवस्थापक क्षेत्र में पूरी तरह से काम करता है, इसलिए उस समाधान के साथ आने के लिए भी धन्यवाद :) –
छोटी दुनिया! इसके अलावा, नीचे बीप तर्क का जवाब शायद आपकी सबसे अच्छी शर्त ** ** ** यह आपके समाधान के साथ जैव करता है। (यानी यदि आप केवल अपने पक्ष को व्यवस्थापक पक्ष पर आग लगाना चाहते हैं)। यदि आपके पास एक पर्यवेक्षक है जो फ्रंटेंड और बैकएंड दोनों पर चीजें कर रहा है, तो उपरोक्त एक अच्छी शुरुआत है। –
ठीक है, यह जांचता नहीं है कि कोई स्क्रिप्ट बैकएंड में चलती है, लेकिन यदि कोई व्यवस्थापक लॉग इन है ... – feeela