Cách bật chủ đề quản trị viên tùy chỉnh trong Magento 2


9

Tôi đã làm theo hướng dẫn ở đây: Cách tạo chủ đề quản trị cho Magento2

và tại đây: Cách thay đổi chủ đề quản trị phụ trợ trong Magento 2.0.7 +

và tôi vẫn không hiểu tôi phải làm gì để chủ đề của tôi hiển thị trong phần phụ trợ. Tôi đã tạo chủ đề của mình trong đó app/design/adminhtml/Vendor/themenamevà nó có một theme.xmlvà một registration.php(giống như chủ đề giao diện của tôi, đang hoạt động độc đáo). Tuy nhiên, các hướng dẫn ở trên nói về một etc/di.xmlđiều mà tôi không biết nên đặt ở đâu (hoặc đó thậm chí là giải pháp?)

Googling đã đưa tôi đến nơi hoàn toàn, Magento 2 tài liệu chính thức hút (như mọi khi) vì vậy không có giúp đỡ ở đó.

Vì vậy, tóm tắt tóm tắt: làm thế nào để kích hoạt chủ đề quản trị viên tùy chỉnh của tôi?

Câu trả lời:


12

Cảm ơn bạn @Alex! Giải pháp của bạn đã làm việc cho tôi! Tôi có thể thấy từ nguồn mà khu vực quản trị đang sử dụng chủ đề của tôi bây giờ.

Các bước:

  1. tạo một chủ đề mới trong app/design/adminhtml/Vendor/Themename. Trong thư mục đó, tạo một 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>

Và đăng ký.php:

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

  1. Tạo mô-đun mới để triển khai chủ đề của bạn hoặc sử dụng một số mô-đun hiện có; dù bằng cách nào, trong các mô-đun của bạn hãy module.xmlthêm sequencephần tử xml để đảm bảo chủ đề của bạn được tải lần cuối.

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

và trong các mô-đun tùy chỉnh của bạn, hãy etc/di.xmlthêm đoạn chỉ định chủ đề quản trị viên sẽ sử dụng: <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. chạy setup:upgradevà thì đấy! Kiểm tra chủ đề nào đang được sử dụng bằng cách xem nguồn: tất cả các tệp css và js sẽ được tải từ/pub/static/adminhtml/Vendor/Themename/[language]/....

Tuy nhiên, tất cả các trang quản trị dường như thiếu phong cách . Tôi đang ở chế độ nhà phát triển và đã làm setup:static-content:deploy [languages](không có lỗi) nhưng điều đó không giải quyết được vấn đề. Tôi cũng gặp vấn đề tương tự trên frontend, nhưng không thể nhớ tôi đã sửa nó như thế nào .. tôi có cần sao chép các tập tin js và css từ magento-backendmô-đun để làm cho nó hoạt động không?

GIẢI QUYẾT VẤN ĐỀ : có vẻ như tôi đã gặp phải vấn đề này: Cách chính xác để cập nhật Phụ huynh của chủ đề trong Magento 2 , nếu tôi cài đặt chủ đề của mình và sau đó thay đổi phụ huynh thành một thứ khác theme.xml, nó sẽ không được cập nhật trong cơ sở dữ liệu và nó sẽ không được cập nhật hiệu ứng. Ban đầu tôi đã đặt Magento / trống vào phần tử cha và điều đó rõ ràng là không hoạt động, và việc thay đổi nó thành Magento / phụ trợ sau đó cũng không giúp được gì (theo liên kết ở trên). Vì vậy, tôi đã đi vào cơ sở dữ liệu và đặt cha_id cho chủ đề của mình bằng tay. Và cứ như thế, mọi thứ đều hoạt động :)


Tôi có thể thấy (so sánh với cài đặt khác với chủ đề quản trị mặc định) /pub/static/adminhtml/Magento/backend/[language]/css/styles.css không được tham chiếu trong nguồn. Nhìn vào vendor/magento/magento-backend/viewvà các tập tin bố trí, nó cũng không được tham chiếu ở đó. Rõ ràng, nó được chỉ định trong vendor/magento/theme-adminhtml-backend/Magento_Backend/layout/default.xmlnhưng làm cách nào để nó hiển thị trong chủ đề của tôi?
Kampaviineri

Bạn có kế thừa chủ đề từ Magento Backend hay không?
Alex

@Alex có, như bạn có thể thấy ở theme.xmltrên, và bây giờ tôi có nó CÒN hoạt động: Tôi đã tạo một app/design/adminhtml/Vendor/Themename/Magento_Theme/layout/default.xmlvà trong tệp đó tôi đã chỉ định <css src="css/styles.css" /> Sau đó tôi đã sao chép tệp css sang chủ đề của mình vendor/magento/theme-adminhtml-backend/web/css/styles.cssvà bây giờ tôi có thể thấy nó trong nguồn và mọi thứ đang tìm kiếm tốt hơn. Tuy nhiên, một cái gì đó rất quan trọng dường như vẫn còn thiếu, phụ trợ bây giờ có kiểu dáng nhưng bố cục đều bị vặn.
Kampaviineri

Chúng tôi có thể có Liên kết chủ đề quản trị mẫu trên GitHub không?
Ankit Shah

2

Để áp dụng chủ đề Quản trị viên, bạn cần tạo một mô-đun mới và chỉ định nó ở đó:

  1. Hãy chắc chắn rằng bạn đang ở chế độ nhà phát triển.
  2. Tạo một MyVendor_MyBackendThememô-đun riêng . (tương tự https://github.com/magento/magento2-samples/tree/master/sample-module-minimal chẳng hạn, nhưng đừng quên chỉnh sửa module.xmlregistration.phpnếu bạn quyết định sử dụng nó). Trong module.xmlxác định rằng Magento_Thememô-đun tải trước khi bạn mô-đun bằng cách thêm:
    <tên mô-đun = "MyVendor_MyBackendTheme" setup_version = "2.0.1">
        <trình tự>
            <tên mô-đun = "Magento_Theme" />
        </ trình tự>
    </ mô đun>
  1. Thêm <module>/etc/di.xml, trong đó thêm nút sau:
<type name = "Magento \ Theme \ Model \ View \ Design">
    <đối số>
         <tên đối số = "chủ đề" xsi: type = "mảng">
             <item name = "adminhtml" xsi: type = "chuỗi"> your_vendor_dir / your_theme_dir </ item>
         </ đối số>
     </ đối số> 
</ loại>
  1. Chạy magento setup:upgradelệnh.

  2. Mở Admin và xem chủ đề mới được áp dụng (hy vọng :)).


ps: chúng tôi dự định sớm thêm tài liệu chính thức
Alex

Vì vậy, ý bạn là tôi phải tạo một mô-đun hoàn chỉnh (ngoài chủ đề của tôi) chỉ để triển khai chủ đề quản trị của tôi? Sự điên rồ này là gì!?
Kampaviineri

Tôi có một mô-đun khác tôi đã tạo cho cửa hàng trực tuyến này, tôi giả sử tôi có thể sử dụng mô-đun đó để chỉ định chủ đề quản trị viên. Sẽ cho bạn biết làm thế nào mà chảo ra :)
Kampaviineri

Có, tất nhiên bạn có thể sử dụng mô-đun tùy chỉnh hiện có.
Alex

1
HI @Alex Cảm ơn bạn đã giải thích. Chúng tôi có thể có Theme Admin mẫu trên github không?
Ankit Shah
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.