これは良い答えがない分野の一つです。 Magento自体はこの情報に明示的なメソッド/ APIを提供していないので、どのような解決策であれ、環境を調べて物事を推測する必要があります。
私はしばらくの間、
Mage::app()->getStore()->isAdmin()
を使用していたが、それは、これは真実ではない、特定の管理ページ(Magentoの接続パッケージマネージャ)があるが判明しました。なんらかの理由でこのページはストアIDを明示的に1に設定し、isAdmin
をfalseに戻します。この動作を持つ他のページがあるかもしれません
#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
}
この方法では、とき/あなたは管理者のチェックロジックの穴を発見した場合、あなたは1つの集中の場所ですべてを修正することができます。
アラン情報ありがとう!私は実際にこれを使用して[IE9修正](http://alanstorm.com/ie9_fix_for_magento)をカスタマイズしています。これは、デザイナーのフロントエンドにいくつかの問題を引き起こしていたためです。それは完全に管理領域で動作するので、その解決策も出てくれてありがとう:) –
小さな世界!また、以下のビープロジックの答えはおそらくあなたの最善の賭けです** **もしあなたの解決策を尋ねるなら。 (管理者側でのみイベントを発生させたい場合)。フロントエンドとバックエンドの両方で作業する単一のオブザーバがあれば、上記は良いスタートです。 –
これは、スクリプトがバックエンドで実行されているかどうかをチェックしませんが、管理者がログインしている場合はチェックされません... – feeela