9

Magentoで、現在のテーマまたはパッケージ名を取得しようとしていますが、何も見つかりません。getSkinUrl(')を使用しましたが、パッケージまたはテーマ名ではなくスキンパスが返されます。テーマまたはパッケージ名を取得する方法を教えてください。

4

5 に答える 5

27

現在のパッケージ

Mage::getSingleton('core/design_package')->getPackageName()

現在のテーマ(フロントエンド)

Mage::getSingleton('core/design_package')->getTheme('frontend')
于 2012-06-22T13:23:43.117 に答える
13

@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'
于 2013-10-14T02:09:34.017 に答える
9

以来

Mage::getSingleton('core/design_package')

と同等です

Mage::getDesign()

ドリューの例は次のように短縮できます。

Mage::getDesign()->getPackageName()

Mage::getDesign()->getTheme('frontend')
于 2013-03-07T15:27:26.230 に答える
1

ここで別の方法:

$package = Mage::getStoreConfig('design/package/name');
$skin_name = Mage::getStoreConfig('design/theme/skin');
于 2013-08-23T14:18:09.603 に答える
0

これをコメントとして追加したかったのですが、データベースから直接取得することもできます。

SELECT * FROM core_config_data WHERE path="design/theme/skin";
SELECT * FROM core_config_data WHERE path="design/package/name";

これは、ライブで使用するよりも管理者にとっておそらく便利です。テンプレートを設計する場合やmagento内でコーディングする場合は、magento関数を使用する必要があります。

于 2014-06-24T11:41:45.003 に答える