Magento 2でカスタム管理テーマを有効にする方法


9

私はここの指示に従いました:Magento2の管理テーマを作成する方法

ここ:Magento 2.0.7以降でバックエンド管理テーマを変更する方法+

そして、私は自分のテーマをバックエンドに表示するために何をすべきかまだ理解していません。私は自分のテーマを作成しapp/design/adminhtml/Vendor/themename、そのa theme.xmlとa を持っていますregistration.php(フロントエンドのテーマと同じで、うまく機能しています)。ただし、上記の説明では、etc/di.xmlどこに配置すればよいかわからない(またはそれが解決策でさえあるかどうか)について説明しています。

グーグルで私をどこにも連れて行ってくれませんでした。Magento2の公式ドキュメントは(いつものように)吸うので、助けはありません。

だから、要約:カスタム管理テーマを有効にする方法は?

回答:


12

@Alexありがとうございます!あなたの解決策は私のために働いた!ソースから、管理領域が私のテーマを使用していることがわかります。

手順:

  1. で新しいテーマを作成しapp/design/adminhtml/Vendor/Themenameます。そのディレクトリに、以下を作成しますtheme.xml

<theme xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Config/etc/theme.xsd"> <title>My Theme Tile</title> <parent>Magento/backend</parent> </theme>

そして、registration.php:

<?php \Magento\Framework\Component\ComponentRegistrar::register( \Magento\Framework\Component\ComponentRegistrar::THEME, 'adminhtml/Vendor/Themename', __DIR__ );

  1. テーマをデプロイするための新しいモジュールを作成するか、既存のモジュールを使用します。どちらの方法でも、モジュール module.xmlsequencexml要素を追加して、テーマが最後に読み込まれるようにします。

<config> <module name="My_Custommodule" setup_version="2.0.0"> <sequence> <module name="Magento_Theme"/> </sequence> </module> </config>

カスタムモジュール etc/di.xmlに、使用する管理テーマを指定するフラグメントを追加します。 <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd"> <type name="Magento\Theme\Model\View\Design"> <arguments> <argument name="themes" xsi:type="array"> <item name="adminhtml" xsi:type="string">Vendor/Themename</item> </argument> </arguments> </type> </config>

  1. 実行setup:upgradeして出来上がり!ソースを表示して、どのテーマが使用されているかを確認します。すべてのcssおよびjsファイルが読み込まれるはずです/pub/static/adminhtml/Vendor/Themename/[language]/....

ただし、すべての管理ページにスタイルがないようです。私は開発者モードで、setup:static-content:deploy [languages](エラーなしで)実行しましたが、問題は解決しませんでした。フロントエンドでも同じ問題が発生しましたが、どのように修正したか覚えていません。magento-backendこれを機能させるには、モジュールからjsおよびcssファイルをコピーする必要がありますか?

問題は解決::それは私がこの問題に遭遇している表示されますMagentoの2テーマの親を更新する正しい方法私は私のテーマをインストールし、その後に他の何かに親を変更した場合theme.xml、それはありませんデータベースに更新され、それが取る文句を言いません効果。私は最初に親要素にMagento /空白を入れましたが、明らかにそれはまったく機能せず、後でMagento /バックエンドに変更しても効果がありませんでした(上記のリンクに従って)。それで、データベースに行って、自分のテーマのparent_idを手動で設定しました。そしてちょうどそのように、すべてが機能します:)


/pub/static/adminhtml/Magento/backend/[language]/css/styles.css ソースで参照されていない(デフォルトの管理テーマを使用した別のインストールと比較して)ことがわかります。vendor/magento/magento-backend/viewレイアウトファイルを見ると、そこでも参照されていません。どうやら、それはで指定されてvendor/magento/theme-adminhtml-backend/Magento_Backend/layout/default.xmlいますが、どうすれば私のテーマにも表示されますか?
Kampaviineri

テーマはMagentoバックエンドから継承しますか?
Alex

@Alexはい、theme.xml上に見られるように、そうです、そして今私はそれをALMOSTで動かしています:私app/design/adminhtml/Vendor/Themename/Magento_Theme/layout/default.xmlは指定したそのファイルに を作成し、<css src="css/styles.css" /> 次にcss-fileを私のテーマにコピーしてvendor/magento/theme-adminhtml-backend/web/css/styles.css、今ではそれを見ることができますソースと物事は良く見えています。ただし、重要な要素がまだ不足しているようです。バックエンドにはスタイルがありますが、レイアウトはすべてねじ込まれています。
Kampaviineri

GitHubにサンプルの管理テーマリンクを含めることはできますか?
Ankit Shah、2016

2

管理テーマを適用するには、新しいモジュールを作成し、そこで指定する必要があります。

  1. 開発者モードになっていることを確認してください。
  2. 別のMyVendor_MyBackendThemeモジュールを作成します。(たとえば、https://github.com/magento/magento2-samples/tree/master/sample-module-minimalに似ていますが、を使用する場合はmodule.xml、編集することを忘れないでくださいregistration.php)。以下module.xmlMagento_Theme追加して、モジュールをロードする前にモジュールをロードすることを指定します。
    <module name = "MyVendor_MyBackendTheme" setup_version = "2.0.1">
        <シーケンス>
            <module name = "Magento_Theme" />
        </ sequence>
    </モジュール>
  1. を追加し<module>/etc/di.xmlます。次のノードを追加します。
<type name = "Magento \ Theme \ Model \ View \ Design">
    <引数>
         <引数名= "themes" xsi:type = "array">
             <item name = "adminhtml" xsi:type = "string"> your_vendor_dir / your_theme_dir </ item>
         </引数>
     </ arguments> 
</ type>
  1. magento setup:upgradeコマンドを実行します。

  2. 管理者を開き、適用された新しいテーマを表示します(うまくいけば:))。


PS:私たちはすぐに公式ドキュメントを追加する予定です
Alex

つまり、管理テーマをデプロイするためだけに(テーマに加えて)完全なモジュールを作成する必要があるということですか?この狂気とは!?
Kampaviineri 16

このウェブストア用に作成した別のモジュールがあります。それを使用して管理テーマを指定できると思います。それがどのようにうまく機能するかを教えてくれます:)
Kampaviineri

もちろん、既存のカスタムモジュールを使用できます。
Alex

1
HI @Alex説明ありがとうございます。githubにサンプルの管理テーマを用意できますか?
Ankit Shah、2016
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.