Magentoで、現在のテーマまたはパッケージ名を取得しようとしていますが、何も見つかりません。getSkinUrl(')を使用しましたが、パッケージまたはテーマ名ではなくスキンパスが返されます。テーマまたはパッケージ名を取得する方法を教えてください。
5 に答える
現在のパッケージ
Mage::getSingleton('core/design_package')->getPackageName()
現在のテーマ(フロントエンド)
Mage::getSingleton('core/design_package')->getTheme('frontend')
@DrewHunterによる上記の回答は完全には正しくないことに注意してください。はgetTheme()
目的の関数呼び出しですが、文字列'frontend'はこのメソッドで受け入れられるパラメーターではありません。このメソッドで許可される値は次のとおりです。
- ロケール
- レイアウト
- レンプレート
- デフォルト
- 肌
つまり、この関数の正しい使用法は、次のいずれかの行です。
Mage::getSingleton('core/design_package')->getTheme()
Mage::getSingleton('core/design_package')->getTheme('locale')
Mage::getSingleton('core/design_package')->getTheme('layout')
Mage::getSingleton('core/design_package')->getTheme('template')
Mage::getSingleton('core/design_package')->getTheme('default')
Mage::getSingleton('core/design_package')->getTheme('skin')
この方法でメソッドを使用しないと、常に文字列'default'が返されます。
予期しない結果
誤った使用法は論理エラーを引き起こします。この例は、モバイルデバイスを特にターゲットにするように定義された「一致した式」がある場合です。
Mage::getSingleton('core/design_package')
次のクラスを参照します
Mage_Core_Model_Design_Package
このクラスの「getTheme()」メソッドを見ると、このメソッドに渡すことができる可能なオプションがわかります。それらは、「locale」、「layout」、「template」、「default」、および「skin」です。
したがって、特定のストアに次のような「テンプレート」の「一致した式」がある場合
iPhone|iPod|Mobile|mobile > mobile
以下が発生する可能性があります
Mage::getSingleton('core/design_package')->getTheme('frontend') RETURNS 'default'
Mage::getSingleton('core/design_package')->getTheme('template') RETURNS 'mobile'
以来
Mage::getSingleton('core/design_package')
と同等です
Mage::getDesign()
ドリューの例は次のように短縮できます。
Mage::getDesign()->getPackageName()
と
Mage::getDesign()->getTheme('frontend')
ここで別の方法:
$package = Mage::getStoreConfig('design/package/name');
$skin_name = Mage::getStoreConfig('design/theme/skin');
これをコメントとして追加したかったのですが、データベースから直接取得することもできます。
SELECT * FROM core_config_data WHERE path="design/theme/skin";
SELECT * FROM core_config_data WHERE path="design/package/name";
これは、ライブで使用するよりも管理者にとっておそらく便利です。テンプレートを設計する場合やmagento内でコーディングする場合は、magento関数を使用する必要があります。