Theming for Magento 2 - เริ่มจากศูนย์


27

บางท่านอาจอ่านหัวข้อที่เกี่ยวกับหัวข้อตั้งแต่เริ่มต้นสำหรับ Magento 1: รูปแบบ- เริ่มจากศูนย์

ฉันสงสัยว่าอะไรจะเป็นวิธีปฏิบัติที่ดีที่สุดในการพัฒนาธีมตั้งแต่เริ่มต้นสำหรับ Magento 2

  • คุณสร้างโดยใช้ native lumaหรือblanktheme หรือไม่ หรือสิ่งอื่นใด
  • คุณใช้ส่วนขยายใด ๆ เพื่อช่วยพัฒนาธีมของคุณหรือไม่?
  • คุณทำตามขั้นตอนใดเมื่อพัฒนาธีมตั้งแต่เริ่มต้น

ฉันกำลังให้ลิงก์ในคำตอบของฉันโปรดผ่านมันไปคุณจะรู้เกี่ยวกับสถาปัตยกรรมส่วนหน้าและการพัฒนา Magento 2.0
Asheem Patro

ทำตามขั้นตอนโดย Magento docs devdocs.magento.com/guides/v2.1/frontend-dev-guide/themes/…เพื่อสร้างธีมสำหรับส่วนหน้า
Rishabh Rk Rai

คำตอบ:


45

TL: DR

คุณสร้างโดยใช้ luma ดั้งเดิมหรือธีมว่างเปล่า? หรือสิ่งอื่นใด

สิ่งนี้ขึ้นอยู่กับคุณโดยการประกาศธีมหลักเป็นทางเลือก หากคุณไม่ได้ประกาศผู้ปกครองคุณจะยังคงย้อนกลับไปยังโมดูล (เช่น Magento_Catalog) ซึ่งมีไฟล์ XML และแม่แบบ แต่ไม่มีการออกแบบ

คุณใช้ส่วนขยายใด ๆ เพื่อช่วยพัฒนาธีมของคุณหรือไม่?

ขณะที่ผมชอบทำงานกับ SCSS และอึกตอนนี้ผมใช้Frontoolsและว่างเปล่า SCSS ธีม มันกำจัดความเครียดจำนวนมากในการจัดการกับการเริ่มต้น Grunt / LESS worflow

คุณทำตามขั้นตอนใดเมื่อพัฒนาธีมตั้งแต่เริ่มต้น

  1. ประกาศธีม
  2. ลบ CSS ธีมหลัก (หากจำเป็น)
  3. เพิ่ม CSS / LESS / SCSS ของคุณเอง

ความคิดเห็นส่วนตัวของฉันดีที่สุดคือสร้างธีมว่างเปล่าของคุณเองตั้งแต่เริ่มต้นเพราะคุณสามารถปรับแต่งสิ่งนี้ให้เป็นสิ่งที่คุณต้องการ

นี่คือวิธีที่ฉันจะสร้างธีมตั้งแต่เริ่มต้นฉันใช้ NewStore / default เป็นผู้จำหน่ายและชื่อธีมของฉัน

ตอนนี้สำหรับคำตอบที่ละเอียดยิ่งขึ้น ...

สร้างชุดรูปแบบ (ตามเอกสารอย่างเป็นทางการ)

สร้างชุดรูปแบบตามเอกสารอย่างเป็นทางการ

เลือกที่จะประกาศผู้ปกครอง

ภายในapp/design/frontend/NewStore/default/theme.xmlคุณมีทางเลือกของการประกาศรูปแบบการปกครองหรือไม่เช่นนี้ผมได้ปล่อยออกมาจากเส้น 3 ( <parent>Vendor/theme</parent>) เพื่อให้ไม่มีธีมปกครอง ซึ่งหมายความว่าไฟล์เทมเพลต / เลย์เอาต์ทั้งหมดจะมาจากโมดูลเองและไม่ว่างเปล่าหรือ Luma และจะไม่มีการกำหนดสไตล์ของธีมเนื่องจากจะเพิ่มในธีมเปล่า

theme.xml ของฉันมีลักษณะเช่นนี้:

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

ลบสไตล์ (ถ้าคุณตั้งค่าธีมหลัก) และเพิ่ม CSS ของคุณเอง

หากคุณตั้งค่าว่างหรือ Luma เป็นพาเรนต์คุณจะต้องป้องกันไม่ให้ไฟล์ CSS โหลด เมื่อต้องการทำสิ่งนี้ให้สร้างapp/design/frontend/NewStore/default/Magento_Theme/layout/default_head_blocks.xmlและเพิ่ม XML ต่อไปนี้:

<?xml version="1.0" ?>
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
    <head>

        <!-- Remove blank/luma theme styling if you declared a parent -->
        <remove src="css/styles-m.css" />
        <remove src="css/styles-l.css" />
        <remove src="css/print.css" />

        <!-- Add your own CSS files -->
        <css src="css/styles.css" />
    </head>
</page>

ลบนี้styles-m.css, styles-l.cssและprint.cssเพิ่มโดยธีมว่างเปล่า นอกจากนี้ยังเพิ่ม styles.css เป็นฐานสำหรับ CSS ของคุณเอง

หากคุณไม่ได้ระบุพาเรนต์คุณสามารถลบ 3 <remove />แท็กในรหัสด้านบน

เพิ่ม CSS ของคุณเอง

ตอนนี้คุณสามารถตกแต่งธีมของคุณได้ตามที่คุณต้องการฉันเป็นแฟนของ Sass มากกว่า LESS ดังนั้นฉันจึงเพิ่มไฟล์นี้ - app/design/frontend/NewStore/default/web/css/styles.scss

ฉันเปลี่ยนสีพื้นหลังที่นี่เพียงเพื่อพิสูจน์ผลงานนี้คุณควรใช้ไฟล์นี้เพื่อนำเข้าไฟล์ Sass / Less อื่น ๆ เท่านั้น

ผล

ผลที่ได้จากสิ่งที่ฉันเพิ่งทำคือชุดรูปแบบที่ไม่มีสไตล์ (นอกเหนือจากพื้นหลังสีเขียวที่สวยงามของฉัน) ทำให้คุณสามารถจัดแต่งชุดรูปแบบของคุณโดยไม่ต้องทำงานกับสไตล์ของวีโอไอพี

ป้อนคำอธิบายรูปภาพที่นี่

เคล็ดลับ

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

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

  • ความคิดเห็นที่เป็นประโยชน์ก็เป็นกุญแจสำคัญเช่นกันถ้า dev เคยทำงานกับ Luma / Blank ทำงานกับธีมที่สร้างขึ้นตั้งแต่เริ่มต้นพวกเขาอาจพบว่าสิ่งต่างๆ


theme.xmlผมได้สร้างรูปแบบว่างเปล่าของตัวเองโดยใช้คำแนะนำของคุณโดยไม่ธีมพ่อแม่ที่กำหนดไว้ใน อย่างไรก็ตามยังคงมีสไตล์ทั้งหมดที่มองเห็นได้ในส่วนหน้า การติดตั้ง Magento อยู่ในdeveloperโหมดและล้างแคชทั้งหมดแล้ว ฉันไม่รู้ว่าสไตล์เหล่านี้มาจากไหน - คุณมีความคิดหรือไม่?
fritzmg

คุณมีการติดตั้งส่วนขยาย / ปลั๊กอินใด ๆ ? มันอาจเป็นวานิชถ้าติดตั้งแล้วเพื่อให้กฎออกมาเพิ่มเครื่องหมายคำถามและสตริงสุ่มหลัง URL เช่น?=123
Ben Crook

ใช่ฉันได้ตัดออกวานิช (หรือคล้ายกัน) ไม่มีการติดตั้งส่วนขยายหรือปลั๊กอิน
fritzmg

มันเป็นสไตล์การตกแต่งที่สมบูรณ์หรือเพียงบางส่วนของมัน? มันยากสำหรับฉันที่จะพูดโดยไม่ได้เห็นเว็บไซต์และ codebase อาจถามคำถามใหม่และโพสต์รายละเอียดที่นั่น? หากคุณแท็กฉันฉันจะดูว่าฉันสามารถทำงานได้
Ben Crook

มันเป็นชุดเต็มรูปแบบเท่าที่ฉันเห็น บวกกับไฟล์ CSS ที่รวมอยู่ในธีมของฉันเอง ใช่มันอาจจะดีกว่าที่จะสร้างคำถามใหม่สำหรับนี้ :)
fritzmg

8

มีแบบฝึกหัดมากมายสำหรับการเริ่มธีมใน Magento 2.0 ฉันกำลังให้ลิงค์วิดีโอและลิงก์ปกติที่คุณสามารถรับความรู้ที่ดีเกี่ยวกับการพัฒนาชุดรูปแบบใน magento 2.0 คลิกที่นี่เพื่อดูวิดีโอ

รับการอ้างอิงจากลิงค์นี้ด้วย

http://devdocs.magento.com/guides/v2.0/frontend-dev-guide/themes/theme-create.html

http://blog.magestore.com/how-to-create-custom-theme-on-magento-2-part-1/

จากลิงค์นี้คุณจะได้เรียนรู้เกี่ยวกับสถาปัตยกรรมส่วนหน้าของ magento 2.0

http://inchoo.net/magento-2/frontend-theme-architecture/

ตรวจสอบลิงก์ทั้งสองนี้ด้วย

http://www.webmull.com/magento-2-create-new-custom-theme/

http://www.slideshare.net/Magestorecom/how-to-create-theme-in-magento-2-part-1


5

ฉันสืบทอดมาจากความว่างเปล่า แต่เคลื่อนไปสู่ความพยายามอย่างรวดเร็วเพื่อสร้างธีมพื้นฐานที่มีน้ำหนักเบากว่าซึ่งมีโครงสร้าง CSS ที่ซับซ้อนน้อยกว่ามาก

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


3

วิธีที่ดีที่สุดที่จะเริ่มต้นการพัฒนารูปแบบคือการเริ่มต้นด้วยการสืบทอดจากทั้งสองหรือluma blankเหตุผลนี้เป็นเพราะพวกเขาสร้างขึ้นเพื่อตอบสนอง (เช่นหลายความละเอียดมิตร) นอกจากนี้ยังช่วยลดปริมาณงานที่คุณต้องทำในการสร้างไฟล์เทมเพลตที่แตกต่างกันและคำจำกัดความของ JS / CSS สิ่งที่คุณต้องทำคือเพียงแทนที่ชิ้นส่วนที่คุณต้องการกำหนดเองเท่านั้น ดูลิงก์ด้านล่างสำหรับคำแนะนำที่แตกต่างกันเกี่ยวกับวิธีพัฒนาธีม

ลิงค์เอกสาร Magento:


ตอนนี้ไฟล์เทมเพลตมาจากโมดูลและไม่ว่างเปล่า / luma ดังนั้นคุณสามารถข้ามไฟล์เหล่านี้ได้หากคุณไม่ต้องการสไตล์ / การเปลี่ยนแปลง ตัวอย่างเช่นถ้าคุณดูที่แอพ / ออกแบบ / ส่วนหน้า / วีโอไอพี / ว่าง / Magento_Catalog สิ่งที่มันทำคือย้ายองค์ประกอบเดียวและเพิ่มสไตล์บางอย่างเทมเพลตมาจากแอป / รหัส / วีโอไอพี / แคตตาล็อก / ดู / ส่วนหน้า / เทมเพลตและ แอพ / รหัส / วีโอไอพี / แคตตาล็อก / มุมมอง / ฐาน / แม่แบบ
Ben Crook
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.