親テーマ

HINT

この機能は、CS-Cart4.4.1以降で使用できます。

概要

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

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

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

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

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

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

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

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

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

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

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

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

HINT

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

テーマの複製

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

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

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

テーマのインストール

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

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

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

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

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

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

基本テーマにのみテンプレートファイルを提供するアドオンは、基本テーマとそれに依存する子テーマでのみ使用できます。必要なテンプレートが現在のテーマにない場合、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、テーマのハンドラーを次の順序で検索します:子→親→レスポンシブ。 最初に見つかったハンドラーが使用されます。

HINT

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

<画像>

Last updated