親テーマ
これらはバージョン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フックハンドラーの検索はレスポンシブテーマで実行されません。
Updated about 4 years ago