So aktivieren Sie ein benutzerdefiniertes Admin-Design in Magento 2

9

Ich habe die Anweisungen hier befolgt: So erstellen Sie ein Admin-Design für Magento2

und hier: So ändern Sie das Backend-Admin-Thema in Magento 2.0.7 +

und ich verstehe immer noch nicht, was ich tun soll, damit mein Thema im Backend angezeigt wird. Ich habe mein Thema in erstellt app/design/adminhtml/Vendor/themenameund es hat ein theme.xmlund ein registration.php(genau wie mein Frontend-Thema, das gut funktioniert). Die obigen Anweisungen sprechen jedoch von einem, von etc/di.xmldem ich keine Ahnung habe, wo ich ihn platzieren soll (oder ist das überhaupt die Lösung?)

Googeln hat mich absolut nirgendwo hin gebracht, Magento 2 offizielle Dokumente saugen (wie immer) also keine Hilfe da.

Also, summa summary: Wie aktiviere ich mein benutzerdefiniertes Admin-Thema?

Kampaviineri
quelle

Antworten:

12

Vielen Dank, dass Sie @Alex! Ihre Lösung hat bei mir funktioniert! Ich kann der Quelle entnehmen, dass der Administratorbereich mein Thema jetzt verwendet.

Schritte:

  1. Erstellen Sie ein neues Thema in app/design/adminhtml/Vendor/Themename. Erstellen Sie in diesem Verzeichnis Folgendes 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>

Und eine Registrierung.php:

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

  1. Erstellen Sie entweder ein neues Modul für die Bereitstellung Ihres Themas oder verwenden Sie ein vorhandenes Modul. In beiden Fällen module.xml fügen Sie in Ihren Modulen das sequenceXML-Element hinzu, um sicherzustellen, dass Ihr Thema zuletzt geladen wird.

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

Fügen Sie in Ihren benutzerdefinierten Modulen etc/di.xml das Fragment hinzu, das das zu verwendende Admin-Design angibt: <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. laufen setup:upgradeund voila! Überprüfen Sie, welches Thema verwendet wird, indem Sie die Quelle anzeigen: Alle CSS- und JS-Dateien sollten jetzt von geladen werden/pub/static/adminhtml/Vendor/Themename/[language]/....

Auf allen Administrationsseiten scheinen jedoch Stile zu fehlen . Ich bin im Entwicklermodus und habe eine setup:static-content:deploy [languages](ohne Fehler) durchgeführt, aber das hat das Problem nicht behoben. Ich hatte das gleiche Problem auch im Frontend, kann mich aber nicht erinnern, wie ich es behoben habe. Muss ich js- und css-Dateien vom magento-backendModul kopieren , damit dies funktioniert?

BEHOBENES PROBLEM : Es scheint, dass ich auf folgendes Problem gestoßen bin: Richtige Methode zum Aktualisieren des übergeordneten Themas in Magento 2. Wenn ich mein Thema installiere und das übergeordnete Element dann in etwas anderes in ändere theme.xml, wird es nicht in der Datenbank aktualisiert und es wird nicht benötigt bewirken. Ich hatte ursprünglich Magento / blank in das übergeordnete Element eingefügt, und das funktionierte offensichtlich überhaupt nicht, und das spätere Ändern in Magento / Backend half auch nicht (wie oben angegeben). Also ging ich in die Datenbank und stellte die parent_id für mein Thema von Hand ein. Und einfach so funktioniert alles :)

Kampaviineri
quelle
Ich kann sehen (im Vergleich zu einer anderen Installation mit dem Standard-Admin-Design), dass /pub/static/adminhtml/Magento/backend/[language]/css/styles.css in der Quelle nicht darauf verwiesen wird. Wenn man sich vendor/magento/magento-backend/viewdie Layoutdateien ansieht, wird dort auch nicht darauf verwiesen. Anscheinend ist es in angegeben, vendor/magento/theme-adminhtml-backend/Magento_Backend/layout/default.xmlaber wie kann ich es auch in meinem Thema anzeigen lassen?
Kampaviineri
Erbt Ihr Thema von Magento Backend oder nicht?
Alex
@Alex ja, wie Sie theme.xmloben sehen können, und jetzt funktioniert es FAST: Ich habe ein app/design/adminhtml/Vendor/Themename/Magento_Theme/layout/default.xmlund in der von mir angegebenen Datei erstellt. <css src="css/styles.css" /> Dann habe ich die CSS-Datei von in mein Thema kopiert vendor/magento/theme-adminhtml-backend/web/css/styles.cssund jetzt kann ich sie in sehen Die Quelle und die Dinge sehen besser aus. Es scheint jedoch immer noch etwas Entscheidendes zu fehlen. Das Backend hat jetzt Stile, aber das Layout ist komplett durcheinander.
Kampaviineri
Können wir einen Beispiel-Admin-Theme-Link auf GitHub haben?
Ankit Shah
2

Um das Admin-Design anzuwenden, müssen Sie ein neues Modul erstellen und dort angeben:

  1. Stellen Sie sicher, dass Sie sich im Entwicklermodus befinden.
  2. Erstellen Sie ein separates MyVendor_MyBackendThemeModul. (Ähnlich wie beispielsweise https://github.com/magento/magento2-samples/tree/master/sample-module-minimal , aber vergessen Sie nicht, das zu bearbeiten, module.xmlund registration.phpwenn Sie es verwenden möchten). In module.xmlangeben , dass die Magento_ThemeModul lädt , bevor Sie durch das Hinzufügen Modul:
    <module name = "MyVendor_MyBackendTheme" setup_version = "2.0.1">
        <sequenz>
            <module name = "Magento_Theme" />
        </ sequence>
    </ module>
  1. Fügen <module>/etc/di.xmlSie den folgenden Knoten hinzu:
<type name = "Magento \ Theme \ Model \ View \ Design">
    <Argumente>
         <argument name = "theme" xsi: type = "array">
             <item name = "adminhtml" xsi: type = "string"> your_vendor_dir / your_theme_dir </ item>
         </ argument>
     </ arguments> 
</ type>
  1. Führen Sie den magento setup:upgradeBefehl aus.

  2. Öffnen Sie den Admin und zeigen Sie das neue angewendete Thema an (hoffentlich :)).

Alex
quelle
ps: wir planen, das offizielle doc bald hinzuzufügen
Alex
Sie meinen also, ich muss (zusätzlich zu meinem Thema) ein komplettes Modul erstellen, um mein Administrator-Thema bereitzustellen? Was ist das für ein Wahnsinn?
Kampaviineri
Ich habe ein anderes Modul, das ich für diesen Webstore erstellt habe. Ich gehe davon aus, dass ich damit das Admin-Thema angeben kann. Lassen Sie Sie wissen, wie sich das
auswirkt
Ja, natürlich können Sie das vorhandene benutzerdefinierte Modul verwenden.
Alex
1
HI @Alex Danke für die Erklärung. Können wir ein Beispiel-Admin-Theme auf Github haben?
Ankit Shah