Cách tạo Theme trẻ em trong Magento 2


18

Tôi muốn sửa đổi các khía cạnh nhất định của chủ đề Luma ngoài luồng nhưng tôi muốn làm điều đó bằng cách giữ (các) tệp gốc và cũng đảm bảo rằng bất cứ khi nào tôi cập nhật Magento, tôi cũng giữ nguyên các thay đổi của mình.

Tôi muốn làm điều này bằng cách của một chủ đề trẻ em.

Magento 2 có hỗ trợ các chủ đề con hay không, và nếu vậy, làm cách nào để cấu trúc đường dẫn thư mục của tôi để thực hiện điều này?


1
Tôi biết ơn bạn đã hỏi câu hỏi này. Tôi đã tự hỏi điều tương tự!
camdixon

Câu trả lời:


26

Cho phép chúng tôi tạo một chủ đề con để tất cả các chủ đề tùy chỉnh của chúng tôi trong Magento 2 xuất hiện ở đây:

ứng dụng / thiết kế / frontend / company_name / theme_name

Giả sử, tên công ty của chúng tôi là công ty của tôi và tên chủ đề của chúng tôi là cơ bản. Chúng ta cần tạo cấu trúc thư mục sau cho chủ đề của mình:

app
└────design
     └──────frontend
            └──mycompany
               └───basic
                   └──etc
                   └──Magento_Theme
                          └─layout
                                default.xml
                   └──media
                          preview.png
                   └──web
                     └─css
                     └─fonts
                     └─images
                     └─js
                    theme.xml
                    registration.php

công ty của tôi :-

Tên của gói chủ đề

cơ bản: - Tên của chủ đề. Chúng ta có thể có nhiều chủ đề được đặt tên trong thư mục mycompany.

vv / view.xml: -

Tập tin này được sử dụng để chỉ định kích thước hình ảnh sản phẩm, hình thu nhỏ, v.v.

Magento_Theme: - Thư mục này được sử dụng để ghi đè các tệp chủ đề của Magento hiện có.

Magento_Theme / layout / default.xml: - Theo mặc định Magento2 giả định rằng tệp logo của chủ đề của bạn phải là: /web/media/logo.svg Nếu bạn muốn một số tệp khác cho logo, thì bạn phải khai báo nó trong default.xmltệp.

Tập tin này cũng được sử dụng để ghi đè cài đặt của chủ đề mặc định.

media / preview.png: - Bản xem trước của chủ đề hiện tại.

web: - Thư mục này chứa tất cả dữ liệu tĩnh của chủ đề như hình ảnh, kiểu, javascript, phông chữ, v.v.

register.php : - Tập tin này là bắt buộc để đăng ký chủ đề của chúng tôi với hệ thống Magento2.

theme.xml: - Đây là một tệp bắt buộc xác định tên chủ đề của chúng tôi, hình ảnh xem trước của chủ đề và tùy chọn của chủ đề.

Tạo tập tin chủ đề

Bây giờ chúng ta tạo các tệp của chúng tôi từng cái một.

theme.xml (ứng dụng / thiết kế / frontend / mycompany / basic / theme.xml)

<theme xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Config/etc/theme.xsd">
   <title>Basic</title> <!-- your theme's name -->
   <parent>Magento/blank</parent> <!-- the parent theme -->
   <media>
        <preview_image>media/preview.jpg</preview_image> <!-- theme's preview image -->
   </media>
</theme>

đăng ký.php (ứng dụng / thiết kế / frontend / mycompany / basic / register.php)

<?php
\Magento\Framework\Component\ComponentRegistrar::register(
    \Magento\Framework\Component\ComponentRegistrar::THEME,
    'frontend/mycompany/basic',
    __DIR__
);

default.xml (ứng dụng / thiết kế / frontend / mycompany / basic / Magento_Theme / layout / default.xml)

<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
    <body>
        <referenceBlock name="logo">
           <arguments>
              <argument name="logo_file" xsi:type="string">images/my_logo.png</argument>
              <argument name="logo_img_width" xsi:type="number">200</argument>
              <argument name="logo_img_height" xsi:type="number">200</argument>
           </arguments>
        </referenceBlock>
    </body>
</page>

Tại thời điểm này, chủ đề của chúng tôi đã sẵn sàng. Xóa bộ nhớ cache của bạn và bây giờ chúng tôi sẽ chọn chủ đề mới của chúng tôi từ quản trị viên.

Bây giờ, đăng nhập vào quản trị viên và di chuyển đến đường dẫn sau:

Content -> Design -> Themes

Bạn sẽ thấy chủ đề của bạn được liệt kê.

Bây giờ đi đến:

Stores -> Configuration -> Design

Chọn trang web chính ở phía trước Cửa hàng ở phía trên bên trái. Bây giờ bấm vào

Desgin -> Design Theme

Bỏ chọn Sử dụng hộp kiểm Mặc định và chọn chủ đề của bạn. Nhấp vào Lưu cấu hình, xóa bộ nhớ cache và chủ đề mới của bạn đã sẵn sàng. Kiểm tra trang chủ của bạn.

Để biết thêm chi tiết xem tại đây.


Cảm ơn bạn đã hướng dẫn từng bước rộng rãi @Arunendra. Tôi sẽ thử một thời gian ngắn và gửi lại.
H. Ferrence

Điều này là tuyệt vời @Arunendra. Làm việc hoàn hảo. Chỉ cần làm theo nó hoàn toàn mà không bỏ qua bất kỳ bước nào.
H. Ferrence

1
Từng bước tuyệt vời @Arunendra. Chỉ trong trường hợp bất kỳ ai gặp phải vấn đề tương tự như tôi, vị trí bạn áp dụng chủ đề đã đăng ký đã thay đổi từ Design -> Design Themethành Content/Design/Configuration.
Kedmasterk

Lưu ý quan trọng: Tệp media/preview.pngphải tồn tại nếu không Magento sẽ ném ngoại lệ.
Salman von Abbas

5

Tạo thư mục:

Đi đến thư mục gốc vào thư mục gốc và điều hướng đến ứng dụng / thiết kế / lối vào , tạo thư mục Demo .

Bây giờ tạo thư mục Mytheme trong ứng dụng / thiết kế / frontend / Demo.

Tạo thư mục Mangento_Theme trong ứng dụng / thiết kế / frontend / Demo / Mytheme.

Tạo thư mục bố cục trong ứng dụng / thiết kế / frontend / Demo / Mytheme / Magento_Theme.

Tạo thư mục phương tiện trong ứng dụng / thiết kế / frontend / Demo / Mytheme.

Tạo thư mục web trong ứng dụng / thiết kế / frontend / Demo / Mytheme.

Tạo thư mục hình ảnh trong ứng dụng / thiết kế / frontend / Demo / Mytheme / web.

Tuyên bố chủ đề

Tạo tệp theme.xml trong ứng dụng / thiết kế / frontend / Demo / Mytheme và dán đoạn mã sau vào đó:

<theme xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Config/etc/theme.xsd">
<title>Mytheme</title>
<parent>Magento/blank</parent>
<media>
<preview_image>media/preview.jpg</preview_image>
</media>
</theme>

Đăng ký chủ đề

Bây giờ hãy tạo tập tin register.php trong ứng dụng / thiết kế / frontend / Demo / Mytheme và dán đoạn mã sau vào đó:

<?php
\Magento\Framework\Component\ComponentRegistrar::register(
\Magento\Framework\Component\ComponentRegistrar::THEME, 'frontend/Demo/Mytheme', __DIR__
);

Tải lên hình ảnh xem trước chủ đề

Truy cập ứng dụng / thiết kế / frontend / Demo / Mytheme / media và tải lên hình ảnh xem trước của bạn (preview.jpg) tại đây.

Tuyên bố Logo chủ đề

Đi tới ứng dụng / thiết kế / frontend / Demo / Mytheme / Magento_Theme / layout và tạo một tệp default.xml. Dán đoạn mã sau vào đó:

<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
<body>
<referenceBlock name="logo">
<arguments>
<argument name="logo_file" xsi:type="string">images/mytheme-logo.png</argument>
<argument name="logo_img_width" xsi:type="number">200</argument>
<argument name="logo_img_height" xsi:type="number">200</argument>
</arguments>
</referenceBlock>
</body>
</page>

Tải lên Logo chủ đề

Truy cập ứng dụng / thiết kế / frontend / Demo / Mytheme / web / hình ảnh và tải lên logo của bạn (huyền thoại-logo.png) tại đây.

Áp dụng chủ đề của bạn

  • Mở bảng Quản trị của Magento 2 của bạn và đi đến Nội dung → Cấu hình.

  • Nhấp vào tùy chọn Chỉnh sửa.

  • Chọn Mytheme từ menu thả xuống Chủ đề ứng dụng và nhấp vào
    Lưu cấu hình.

Chạy lệnh

Mở thiết bị đầu cuối SSH và đi đến thư mục gốc của Magento 2. Bây giờ hãy chạy từng lệnh một:

rm -rf var/di/* var/generation/* var/cache/* var/log/* var/page_cache/* var/session/* var/view_preprocessed/* pub/static/*
php bin/magento setup:upgrade
php bin/magento setup:db-schema:upgrade
php bin/magento setup:di:compile
php bin/magento setup:static-content:deploy
php bin/magento indexer:reindex
php bin/magento cache:clean
php bin/magento cache:flush
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.