วิธีสร้างธีมเด็กใน Magento 2


18

ฉันต้องการแก้ไขบางแง่มุมของชุดรูปแบบ Luma นอกกรอบ แต่ฉันต้องการทำโดยการรักษาไฟล์ดั้งเดิมไว้และทำให้มั่นใจได้ว่าเมื่อใดก็ตามที่ฉันอัปเดต Magento ฉันก็ยังคงรักษาการเปลี่ยนแปลงไว้เช่นกัน

ฉันต้องการทำสิ่งนี้ผ่านธีมลูก

Magento 2 สนับสนุนชุดรูปแบบลูกหรือไม่และถ้าเป็นเช่นนั้นฉันจะจัดโครงสร้างเส้นทางไดเรกทอรีของฉันเพื่อให้เกิดสิ่งนี้ได้อย่างไร


1
ฉันรู้สึกขอบคุณที่คุณถามคำถามนี้ ฉันสงสัยในสิ่งเดียวกัน!
camdixon

คำตอบ:


26

ให้เราสร้างธีมลูกเพื่อธีมที่กำหนดเองทั้งหมดของเราใน Magento 2 ไปที่นี่:

app / ออกแบบ / ส่วนหน้า / company_name / THEME_NAME

ให้เราสมมติว่าชื่อ บริษัท ของเราคือ บริษัท ของฉันและชื่อธีมของเรานั้นเป็นพื้นฐาน เราจำเป็นต้องสร้างโครงสร้างไดเรกทอรีต่อไปนี้สำหรับธีมของเรา:

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

บริษัท ของฉัน :-

ชื่อของแพ็คเกจธีม

พื้นฐาน: - ชื่อของธีม เราสามารถมีชุดรูปแบบที่มีชื่อหลายชุดในโฟลเดอร์ mycompany

etc / view.xml: -

ไฟล์นี้ใช้เพื่อระบุขนาดภาพผลิตภัณฑ์, ภาพขนาดย่อ ฯลฯ

Magento_Theme: - ไดเร็กทอรีนี้ใช้เพื่อแทนที่ไฟล์ธีมของ Magento ที่มีอยู่

Magento_Theme / layout / default.xml: - ตามค่าเริ่มต้น Magento2 ถือว่าไฟล์โลโก้ของธีมของคุณควรเป็น: /web/media/logo.svg หากคุณต้องการไฟล์อื่นสำหรับโลโก้คุณต้องประกาศในdefault.xmlไฟล์

ไฟล์นี้ยังใช้เพื่อแทนที่การตั้งค่าของธีมเริ่มต้น

media / preview.png: - ตัวอย่างของธีมปัจจุบัน

เว็บ: - ไดเรกทอรีนี้มีข้อมูลคงที่ของชุดรูปแบบเช่นรูปภาพสไตล์จาวาสคริปต์แบบอักษร ฯลฯ

registration.php: - ไฟล์นี้จะต้องลงทะเบียนชุดรูปแบบของเรากับระบบ Magento2

theme.xml: - นี่เป็นไฟล์บังคับที่กำหนดชื่อธีมของเราพาเรนท์และรูปภาพตัวอย่างของธีมที่เป็นทางเลือก

การสร้างไฟล์ธีม

ให้เราสร้างไฟล์ของเราทีละไฟล์

theme.xml (แอพ / ออกแบบ / ส่วนหน้า / 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>

register.php (แอพ / ออกแบบ / ส่วนหน้า / mycompany / พื้นฐาน / registration.php)

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

default.xml (แอพ / ออกแบบ / ส่วนหน้า / mycompany / พื้นฐาน / Magento_Theme / โครงร่าง / 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>

เมื่อมาถึงจุดนี้ชุดรูปแบบของเราพร้อม ล้างแคชของคุณและเราจะเลือกชุดรูปแบบใหม่ของเราจากผู้ดูแลระบบ

ตอนนี้เข้าสู่ระบบเพื่อดูแลและย้ายไปที่เส้นทางต่อไปนี้:

Content -> Design -> Themes

คุณควรเห็นชุดรูปแบบของคุณอยู่ในรายการ

ตอนนี้ไปที่:

Stores -> Configuration -> Design

เลือกเว็บไซต์หลักหน้ามุมมองร้านค้าที่ด้านซ้ายบน ตอนนี้คลิก

Desgin -> Design Theme

ยกเลิกการเลือกช่องทำเครื่องหมายเริ่มต้นและเลือกธีมของคุณ คลิกบันทึกการกำหนดค่าล้างแคชของคุณและชุดรูปแบบใหม่ของคุณพร้อม ตรวจสอบหน้าแรกของคุณ

สำหรับรายละเอียดเพิ่มเติมดูที่นี่


ขอบคุณสำหรับคำแนะนำที่ครอบคลุมทีละขั้นตอน @Arunendra ฉันจะลองอีกครั้งและโพสต์กลับ
H. Ferrence

นี่คือ @Aendendra ที่ยอดเยี่ยม ทำงานได้อย่างสมบูรณ์แบบ เพียงแค่ต้องทำตามอย่างสมบูรณ์โดยไม่ต้องข้ามขั้นตอนใด ๆ
H. Ferrence

1
เยี่ยมยอด @Arunendra ทีละขั้นตอน ในกรณีที่ทุกคนวิ่งเข้าไปในปัญหาเช่นเดียวกับฉันตำแหน่งที่คุณใช้ชุดรูปแบบของคุณลงทะเบียนได้เปลี่ยนจากการDesign -> Design Theme Content/Design/Configuration
Kedmasterk

หมายเหตุสำคัญ:ไฟล์media/preview.pngจะต้องมีอยู่ไม่เช่นนั้นวีโอไอพีจะมีข้อยกเว้น
Salman von Abbas

5

สร้างไดเรกทอรี:

ไปที่รากไปยังไดเรกทอรีรากและนำทางไปยังแอป / ออกแบบ / หน้าสร้างไดเรกทอรีสาธิต

ตอนนี้สร้างไดเรกทอรีMythemeในแอพ / ออกแบบ / ส่วนหน้า / สาธิต

สร้างไดเรกทอรีMangento_Themeในแอพ / ออกแบบ / ส่วนหน้า / สาธิต / ตำนาน

สร้างไดเรกทอรีเค้าโครงในแอพ / ออกแบบ / ส่วนหน้า / สาธิต / Mytheme / Magento_Theme

สร้างไดเรกทอรีสื่อในแอพ / ออกแบบ / ส่วนหน้า / สาธิต / Mytheme

สร้างสารบบเว็บในแอพ / ออกแบบ / ส่วนหน้า / สาธิต / Mytheme

สร้างไดเรกทอรีรูปภาพในแอพ / ออกแบบ / ส่วนหน้า / สาธิต / Mytheme / เว็บ

ประกาศของชุดรูปแบบ

สร้างไฟล์ theme.xml ในแอพ / design / frontend / Demo / Mytheme และวางรหัสต่อไปนี้ลงไป:

<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>

การลงทะเบียนของธีม

ตอนนี้สร้างไฟล์ register.php ในแอพ / design / frontend / Demo / Mytheme และวางรหัสต่อไปนี้ลงไป:

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

อัปโหลดรูปภาพตัวอย่างของธีม

ไปที่แอพ / ออกแบบ / ส่วนหน้า / สาธิต / เทพนิยาย / สื่อและอัปโหลดภาพตัวอย่าง (preview.jpg) ที่นี่

ประกาศโลโก้ของธีม

ไปที่แอพ / ออกแบบ / ส่วนหน้า / สาธิต / Mytheme / Magento_Theme / เลย์เอาต์และสร้างไฟล์ 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/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>

อัพโหลดโลโก้ธีม

ไปที่แอพ / ออกแบบ / ส่วนหน้า / สาธิต / Mytheme / เว็บ / ภาพและอัปโหลดโลโก้ของคุณ (mytheme-logo.png) ที่นี่

ใช้ชุดรูปแบบของคุณ

  • เปิดแผงผู้ดูแลระบบของ Magento 2 ของคุณแล้วไปที่เนื้อหา→การกำหนดค่า

  • คลิกที่ตัวเลือกการแก้ไข

  • เลือก Mytheme จากเมนูแบบเลื่อนลงของชุดรูปแบบที่ใช้และคลิกที่
    บันทึกการกำหนดค่า

เรียกใช้คำสั่ง

เปิดเทอร์มินัล SSH และไปที่รูทไดเร็กทอรีของ Magento 2 ตอนนี้รันคำสั่งทั้งหมดเหล่านี้ทีละตัว:

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
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.