親テーマ

📘

これらはバージョン4.4.1で最初に導入されました。

概要

manifest.jsonファイルでparent_themeにテーマYが指定されている場合、テーマXは依存テーマ(子テーマとも呼ばれます)であり、テーマYは親テーマです。

子テーマには、親テーマのファイルとは異なるファイルのみが含まれます。
子テーマは、必要に応じて親テーマのコンテンツ(テンプレート、ロゴなど)を使用します。

  • 親テーマおよび子テーマのcss、media、およびtemplatesフォルダーは、実行時にマージされます。

  • 子テーマにファイルがない場合、代わりに親テーマの対応するファイルが使用されます。

  • 子テーマに、親テーマにないファイルがある場合(商品および商品リストテンプレート、ブロックのラッパー、静的テンプレートなど)、それらは親テーマのファイルとともにリストされます。

  • ファイルが子テーマと親テーマの両方に存在する場合、子テーマのファイルが優先されます。

  • テーマのレイアウトおよびスタイルフォルダーはマージされません。

  • 子テーマに独自のレイアウトがある場合は、それらのみが使用されます。それ以外の場合は、親テーマのレイアウトが使用されます。

  • 子テーマは常に独自のスタイルを使用します。

  • $images_dir変数を使用して、親テーマから画像をロードできます。

  • テーマに親がある場合、$images_dir は、Smartyテンプレートでの使用は、親テーマのmedia/imagesディレクトリを指します。

  • テーマに親がない場合、テーマは$images_dirの独自のmedia/imagesディレクトリを指します。

📘

$self_images_dirはSmartyテンプレートの変数を使用して、テーマの独自のmedia/imagesディレクトリを指すことができます。

テーマの複製

  • 元のテーマに親がない場合、そのファイルは複製されたテーマのディレクトリにコピーされません。

  • 複製されたテーマには、manifest.jsonファイルと、テーマロゴ付きの/media/images/ディレクトリのみが含まれます。

  • 元のテーマに親がある場合、元のテーマのコンテンツ全体が複製されたテーマのディレクトリにコピーされます。

テーマのインストール

親テーマのファイルは、子テーマのインストール中に子テーマのファイルとマージされません。
子テーマのファイルのみがvar/themes_repositoryからdesign/themesにコピーされます。

テーマファイルのアップグレード

アップグレードセンターは、カスタムテーマのファイルをアップグレードしません。ショップのアップグレード時には、レスポンシブテーマと基本テーマのみが影響を受けます。

アドオンファイルのインストール

アドオンのテーマ関連ファイル(スタイル、テンプレートなど)は、作成されたテーマのみにインストールされ、子テーマにはインストールされません。

例えば、var/themes_repository/responsive/templates/addons/[addon]のみにコピーされます。design/themes/responsive/templates/addons/[addon]

基本テーマにのみテンプレートファイルを提供するアドオンは、基本テーマとそれに依存する子テーマでのみ使用できます。必要なテンプレートが現在のテーマにない場合、CS-CartはBasicテーマのテンプレートにフォールバックしません。

レスポンシブテーマからTPLフックを使用する

レスポンシブテーマの親ではない場合でも、すべてのテーマでレスポンシブテーマのテンプレートフックのハンドラーを使用できます。このように、レスポンシブテーマ専用のテンプレートを提供するアドオンは、他のテーマとある程度連携できます。

次のファイルとディレクトリの構造があると仮定します。

design
└── themes
    ├── child
    │   └── templates
    │       └── addons
    │           └── styles_fixer
    │               └── hooks
    │                   └── index
    │                       └── styles.post.tpl
    ├── parent
    │   └── templates
    │       └── addons
    │           └── styles_fixer
    │               └── hooks
    │                   └── index
    │                       └── styles.post.tpl
    └── responsive
        └── templates
            └── addons
                └── styles_fixer
                    └── hooks
                        └── index
                            └── styles.post.tpl

アクティブなテーマはchildであり、親テーマに依存します。この場合、CS-Cartはindex:styles、テーマのハンドラーを次の順序で検索します:子→親→レスポンシブ。
最初に見つかったハンドラーが使用されます。

📘

レスポンシブテーマがショップにインストールされていない場合、TPLフックハンドラーの検索はレスポンシブテーマで実行されません。

1300