すべてのテーマに表示されるモジュールレイアウトの作成方法


13

状況は次のとおりです。いくつかの自作モジュールがあり、すべてデフォルトのテーマを使用してテストおよび動作しています。次に、新しいテーマを購入してインストールしました。新しいテーマに切り替えられ、モジュールは表示されません。いくつかの試行/失敗テストの後、対応するレイアウトとテンプレートファイルを、最近インストールしたテーマの対応するフォルダーにコピーする必要があることがわかりました。

だから、私の質問は次のとおりです。モジュールのセットアップ後にインストールされたテーマですべてのモジュールを動作させるにはどうすればよいですか?


1
あなたがデザイン/フロントエンド/ベース/デフォルトであなたのレイアウトファイルを置く場合は/ ...彼らはテーマは何でも表示されます
サンダーMangel

回答:


17

すべてをbase/defaultパスに入れます。

例:

app/design/frontend/base/default

skin/frontend/base/default


痛い!それについて考えなかった、あなたは正しい、オフィスに到着するとすぐにテストします。
ヤロスラフ

+1-「コミュニティ」とラベル付けされたモジュールが多すぎて、このプラクティスに従っていないため、そうすべきです。
pspahn

基本テンプレートは、Magento 1.4で導入されました。まさにこの問題を解決するために。以前のバージョンでは、デフォルトのパッケージを使用していない場合、テンプレートファイルをコピーするのが方法でした。
フリストンのクリストフ

5

難しい真実は、彼らがそうなることを本当に保証することはできないということです。ファイルを入れるbase/default(またはdefault/defaultコアテンプレートを上書きする場合-モジュールインストールでベースファイルを上書きしたくないので、エンタープライズエディションの複製を保持する必要があります)が、それらがフォールバックになることを保証しますが、テーマファイルは常に最高レベルの優先度である。

ほとんどのモジュールにはインストールガイドが付属しており、カスタムファイルがある場合はテンプレートファイルをユーザーのテーマにコピーすることを記載しています。それはあなたができる最善のことです。


4

数回使用したことの1つは、[Fabrizio Branca] [1]の[Custom Fallback] [2] modlueです。独自のカスタムテーマフォールバック階層を指定するのに非常に便利なモジュールです。できることの1つは、以下を指定することです。

  1. custom/theme

  2. base/default

  3. default/default

次に、default/defaultテーマに独自のテンプレートを配置するモジュール。base/defaultパッケージをオーバーライドしようとしている場合は機能しません。

カスタムフォールバック階層では、任意の数のパッケージ/テーマを指定できます。

[1]:http : //www.fabrizio-branca.de/ [2]:http : //www.fabrizio-branca.de/custom-design-fallbacks-in-magento.html


2

base/defaultパスに沿って上書きされない限り、テンプレートとレイアウトファイルはすべて読み込まれます。ただし、カスタムモジュールが何らかのウィジェットである場合は、必要に応じてエコーされることを確認する必要があります。たとえば、を介して製品ページに表示される変更を行う場合getChildHtml、それらの呼び出しは対応するテーマにも含まれている必要があります。ただし、モジュールテンプレート自体がページであり、からロードされていない場合、base/defaultレイアウト構成がブロックされ、何が見つかるかがわかります。


についての非常に興味深いコメントgetChild、私は確かにこの種のいくつかの呼び出しがあります。
ヤロスラフ

1

これに対する簡単な答えはありません。それはあなたが持っているモジュールに依存します。たとえば、一部のモジュール会社は、コアファイルをオーバーライドします。そのためには、最初に利用可能なファイルかどうか確認する必要があるapp/etc/modulesapp/code/local/Mageapp/code/community/Mageフォルダ。ご存知かもしれませんが、最初のフォルダーはモジュール初期化フォルダーで、xmlファイルに関連するモジュールを無効または有効にできます。最後の2つのフォルダー(使用可能な場合)は、コアコードのオーバーライドフォルダーです。

次に、使用可能なetc/modulesディレクトリのxmlファイルの1つを開きます。以下のようなものが表示されます。

<?xml version="1.0"?>
<config>
<modules>
    <Company_Namespace>
        <active>true</active>
        <codePool>local</codePool>
    </Company_Namespace>
</modules>

ここに重要な部分がCompanyありNamespaceます。app/code/localまたはapp/code/communityフォルダにアクセスすると、という名前のフォルダが表示されCompany、その後にという名前のサブフォルダが表示されNamespaceます。

をルックアップNamespaceすると、という名前のサブフォルダーが表示され/etcます。モジュール関連の設定ファイルを保持するこのフォルダーconfig.xml。このファイルには、モジュールに関連する設定行があり、このモジュールに関連するファイルを参照できます。

最初の行で言ったように、管理するのは難しいです。


質問のポイントを逃したと思います。彼はレイアウトの更新について尋ねていました。ベストプラクティスは、base / default / yourmoduleパスを使用することです。
マークシャスト
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.