Magento 2 Frontend

เผยแพร่แล้ว: 2015-11-23

Magento 2 มาพร้อมกับชุดแนวทางการพัฒนาส่วนหน้าที่โดดเด่นเมื่อเทียบกับ Magento 1.X รุ่นก่อน วันนี้เราจะมาพูดถึงฝากระโปรงหน้าของ Magento 2.0 frontend engine และอธิบายส่วนที่น่าสนใจที่สุดโดยละเอียด

ร้อน!! เวอร์ชัน 2.0 ของ Claue ได้รับการเผยแพร่แล้ว

claue2_edited (1)

ดูการสาธิต

Claue – ธีม Magento 2&1 ที่สะอาดและเรียบง่ายเป็นเทมเพลตที่ยอดเยี่ยมสำหรับร้านอีคอมเมิร์ซที่ทันสมัยและสะอาดตา พร้อมด้วยเลย์เอาต์ของหน้าแรกมากกว่า 40 แบบและตัวเลือกมากมายสำหรับร้านค้า บล็อก พอร์ตโฟลิโอ เลย์เอาต์ตัวระบุตำแหน่งร้าน และหน้าที่มีประโยชน์อื่นๆ Claue เวอร์ชัน 2. 0 มาพร้อมกับคุณสมบัติพิเศษมากมาย ได้แก่ :

  • อิงจากธีม Luma
  • ตรงตามมาตรฐานทั้งหมดของ Magento Theme
  • การปรับปรุงประสิทธิภาพที่สำคัญ
  • เข้ากันได้กับส่วนขยายของบุคคลที่สามส่วนใหญ่
  • เข้ากันได้อย่างสมบูรณ์กับ Magento 2.4.x

รุ่นขั้นสูงที่สองนี้แตกต่างอย่างสิ้นเชิงจากรุ่นก่อน ดังนั้น หากคุณใช้ Claue เวอร์ชัน 1 และต้องการอัปเดตเป็น Claue เวอร์ชัน 2 คุณสามารถสร้างเว็บไซต์ใหม่ได้เท่านั้น แทนที่จะอัปเดตจากเวอร์ชันเก่า เอาล่ะ กลับมาที่หัวข้อหลัก

ความแตกต่างที่สำคัญคือตอนนี้ส่วนหน้าได้รับการอัปเดตด้วยเทคโนโลยีที่ใหม่กว่าเช่น HTML5, CSS3 และ jQuery นอกจากนี้ยังมีการเปลี่ยนแปลง/การปรับปรุงที่สำคัญในการจัดการเลย์เอาต์โดยรวม โครงสร้างไฟล์ และการแนะนำใหม่ล่าสุดของไลบรารี Magento UI โดยอิงจากตัวประมวลผลล่วงหน้าน้อยที่มีคอมไพเลอร์ในตัว

เป้าหมายหลักประการหนึ่งนอกเหนือจากประสิทธิภาพและความสามารถในการปรับขยายคือการให้บริการ RWD นอกกรอบ ในบทความนี้ ฉันจะพยายามครอบคลุมความแตกต่างหลัก เจาะลึกการพัฒนา และสาธิตตัวอย่างที่ใช้งานได้จริง

ห้องสมุด Magento UI

ไลบรารี Magento UI เป็นไลบรารีส่วนหน้าที่ใช้ LESS แบบยืดหยุ่นซึ่งออกแบบมาเพื่อช่วยเหลือนักพัฒนาธีม Magento ใช้ชุดมิกซ์อินสำหรับองค์ประกอบพื้นฐานเพื่อให้ง่ายต่อการพัฒนาและปรับแต่งธีมส่วนหน้า

ส่วนประกอบที่จัดทำโดยไลบรารี UI

ไลบรารี Magento UI ให้ความสามารถในการปรับแต่งและนำองค์ประกอบและคุณสมบัติของส่วนต่อประสานผู้ใช้ต่อไปนี้มาใช้ใหม่:

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

ภาพประกอบต่อไปนี้แสดงหน้าผลิตภัณฑ์หน้าร้านที่มีองค์ประกอบก่อนหน้าบางส่วน:

Magento 2 ส่วนหน้า

ที่ตั้งมิกซ์ซิน

คุณสามารถค้นหาไลบรารี Magento UI ได้ภายใต้ lib/web/css ไฟล์ซอร์สของไลบรารี . .less ถูกจัดเก็บไว้ใต้ไดเร็กทอรี source แต่ละไฟล์มีมิกซ์อินสำหรับการกำหนดค่าองค์ประกอบบางอย่าง และในกรณีส่วนใหญ่องค์ประกอบจะสอดคล้องกับชื่อไฟล์:

 lib/web
    ├── css/
    │ ├── docs/ (เอกสารห้องสมุด)
    │ ├── แหล่งที่มา/
    │ │ ├── lib/ (ไฟล์ต้นฉบับของไลบรารี)
    | | | ├── ตัวแปร/ (ตัวแปรที่กำหนดไว้ล่วงหน้าสำหรับแต่ละมิกซ์อิน)
    │ │ │ ├── _actions-toolbar.less
    │ │ │ ├── _breadcrumbs.less
    │ │ │ ├── _buttons.less
    │ │ │ ├── _dropdowns.less
    │ │ │ ├── _forms.less
    | | | ├── _grids.less
    │ │ │ ├── _icons.less
    │ │ │ ├── _layout.less
    │ │ │ ├── _lib.less
    │ │ │ ├── _loaders.less
    │ │ │ ├── _messages.less
    │ │ │ ├── _navigation.less
    │ │ │ ├── _pages.less
    │ │ │ ├── _popups.less
    │ │ │ ├── _rating.less
    │ │ │ ├── _resets.less
    │ │ │ ├── _responsive.less
    │ │ │ ├── _sections.less
    │ │ │ ├── _tables.less
    │ │ │ ├── _tooltips.less
    │ │ │ ├── _typography.less
    │ │ │ ├── _utilities.less
    │ │ │ └── _variables.less
    │ │ └── _extend.less
    │ │ └── _theme.less
    │ │ └── _variables.less
    │ └── style.less
    ├── แบบอักษร/
    │ └── Blank-Theme-Icons/ (แบบอักษรไอคอนที่กำหนดเองของไลบรารี)
    ├── ภาพ/
    │ └── blank-theme-icons.png (สไปรท์ไอคอนไลบรารี)
    └── jquery/ (ไฟล์ไลบรารีจาวาสคริปต์)

ตัวแปรที่กำหนดไว้ล่วงหน้า

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

รายการทั้งหมดของตัวแปรเหล่านี้และค่าดีฟอลต์จะถูกเก็บไว้ใน lib/web/css/source/lib/variables ไดเร็กทอรีนี้มีชุดของไฟล์ ซึ่งสอดคล้องกับชุดขององค์ประกอบไลบรารี UI และแต่ละไฟล์จะแสดงรายการตัวแปรเฉพาะองค์ประกอบ ตัวอย่างเช่น lib/web/css/source/lib/variables/_breadcrumbs.less มีตัวแปรที่ใช้ในการผสม breadcrumbs()

ในการเปลี่ยนค่าดีฟอลต์ของตัวแปรไลบรารี ให้ระบุค่าใหม่สำหรับตัวแปรที่จำเป็นในไฟล์ <theme_dir>/web/css/source/_theme.less

โปรดทราบว่าไฟล์ <theme_dir>/web/css/source/_theme.less ของคุณจะแทนที่ _theme.less ของธีมหลัก (หากธีมของคุณมีพาเรนต์) ดังนั้น หากคุณต้องการรับค่าตัวแปรของธีมพาเรนต์เพิ่มเติมจากการเปลี่ยนแปลงของคุณ ให้เพิ่มเนื้อหาของ _theme.less ของพาเรนต์ลงในไฟล์ของคุณด้วย

รูปภาพต่อไปนี้แสดงหน้าผลิตภัณฑ์ที่แสดงก่อนหน้าในหัวข้อนี้ หลังจากใช้ธีมที่กำหนดเอง ธีมปรับแต่ง Blank โดยกำหนดตัวแปรใหม่เท่านั้น

การเปลี่ยนแปลงการออกแบบโดยการกำหนดตัวแปรใหม่

ใช้มิกซ์อิน

คุณสามารถใช้มิกซ์อินกับค่าตัวแปรเริ่มต้น หรือคุณสามารถกำหนดมันใหม่เมื่อเรียกมิกซ์อิน ย่อหน้าต่อไปนี้อธิบายทั้งสองวิธีในการเรียกมิกซ์อิน

หากต้องการใช้มิกซ์อินที่มีค่าเริ่มต้น ให้เรียกมิกซ์อินโดยไม่ระบุพารามิเตอร์ใดๆ ตัวอย่างเช่น:

 .เกล็ดขนมปัง {
    .เกล็ดขนมปัง();
}

ในการเรียกมิกซ์อินที่มีค่าพารามิเตอร์ต่างจากค่าดีฟอลต์ ให้ตั้งค่าเหล่านี้เมื่อเรียกใช้มิกซ์อิน ดังในตัวอย่างต่อไปนี้:

 .example-button {
    .ปุ่ม(
        @_button-padding: @button-padding,
        @_button-สี: #fff,
        @_button-color-hover: #ccc
    );
}

ตัวแปรที่ขึ้นต้นด้วย @_ เป็นตัวแปรมิกซ์อินส่วนตัวที่ใช้ในมิกซ์อินนี้เท่านั้น ตัวแปรที่ขึ้นต้นด้วย @ (ไม่มีขีดล่าง) เป็นค่าสากลและแสดงอยู่ใน lib/web/css/source/lib/variables/

เอกสารห้องสมุด UI

คุณสามารถค้นหาข้อมูลโดยละเอียดเกี่ยวกับไลบรารี Magento UI ได้ในเอกสารที่ให้มาพร้อมกับโค้ด:

  • lib/web/css/docs/source/README.md : อธิบายโครงสร้างไลบรารี Magento UI หลักการตั้งชื่อ และรูปแบบโค้ด
  • lib/web/css/docs : มีชุดไฟล์ .html พร้อมข้อมูลโดยละเอียดเกี่ยวกับมิกซ์อินของไลบรารี แต่ละไฟล์ตั้งชื่อตามมิกซ์อินที่อธิบาย และมีคำอธิบายมิกซ์อินโดยละเอียดและการควบคุมการนำทางเพื่อเข้าถึงเอกสารประกอบสำหรับมิกซ์อินอื่นๆ เอกสารประกอบมีอยู่ในมุมมอง HTML ที่สะดวกในตำแหน่งต่อไปนี้ในการติดตั้ง Magento ของคุณ: pub/static/frontend/Magento/blank/en_US/css/docs/index.html

ในความต่อเนื่องของบทความ ฉันอยากจะอธิบายโครงสร้างธีมใหม่ของแพลตฟอร์ม Magento 2 ให้คุณทราบ

โครงสร้างธีม Magento 2

โครงสร้างธีม Magento 2 ได้รับการเปลี่ยนแปลงที่สำคัญ:

ธีมทั้งหมดได้รับการจัดระเบียบให้สัมพันธ์กับ "แอป/การออกแบบ" โฟลเดอร์ "skin" ไม่มีอยู่แล้ว นอกจากนี้ยังมีแนวทางใหม่สำหรับการปรับแต่งโมดูล: ตอนนี้ในโฟลเดอร์ที่มีธีม แต่ละหน่วยโมดูลจะมีแค็ตตาล็อก _ ของตัวเองพร้อมการแสดงแทน โดยจะมีเทมเพลต JS และ CSS/LESS เป็นแนวทางที่เป็นมิตรต่อผู้ใช้และปฏิบัติได้จริง เรามีโครงสร้างที่สะดวกสบายซึ่งทุกอย่างถูกจัดเรียงในวิธีที่สะดวกมาก

i18n

โฟลเดอร์นี้มีไฟล์การแปล .csv

theme.xml

ใช้เพื่อเริ่มต้นธีม ควรกำหนดชื่อธีม เวอร์ชันของธีม เทมเพลตหลักของธีม รูปภาพตัวอย่างธีม อย่างไรก็ตาม ตอนนี้ Magento 2 รองรับการสืบทอดหลายธีม

1
2
3
4
5
6
7
8
<theme xmlns:xsi= "http :// www. w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation= "../../../../../lib/internal/Magento/Framework/Config/etc/theme.xsd" >
<title>Astrio</title>
<version>1.0.0.0</version>
<parent>Magento/blank</parent>
<media>
<preview_image>media/preview.jpg</preview_image>
</media>
</theme>

composer.json

ธีม Magento 2 ถูกจัดระเบียบเป็นแพ็คเกจผู้แต่ง

ในการแปลงธีมของคุณเองเป็นแพ็คเกจผู้แต่ง คุณจะต้องเพิ่มไฟล์การกำหนดค่า composer.json ในโฟลเดอร์ธีม และต้องลงทะเบียนแพ็คเกจของคุณที่ https://packagist.org ด้วย

ปรับปรุงเค้าโครง/ปรับปรุง

เมื่อพูดถึงการจัดการเลย์เอาต์ มีการปรับปรุงใหม่ๆ ที่น่าสนใจและเจ๋งจริงๆ

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

Magento 2 แนะนำแนวคิดใหม่ทั้งหมดสำหรับการปรับขนาดภาพผลิตภัณฑ์/สื่อจากเลย์เอาต์ ไฟล์เลย์เอาต์ view.xml รับผิดชอบและจำเป็นต้องวางไว้ใน ไดเร็กทอรี app/design/frontend/vendorName/newTheme/etc/ นี่คือตัวอย่างของการปรับขนาดภาพแคตตาล็อกสินค้าในการดำเนินการ

 <view xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation = "../../../../../../lib/internal/Magento/Framework/Config/etc/view.xsd" > <vars module = "Magento_Catalog" > <var name = "product_small_image_sidebar_size" > 100 </var > <var name = "product_base_image_size" > 275 </var > <var name = "product_base_image_icon_size" > 48 </var > <var name = "product_list_image_size" > 166 </var > <var name = "product_zoom_image_size" > 370 </var > <var name = "product_image_white_borders" > 0 </var > </vars > </view >

แม้ว่าฉันจะเข้าใจว่าเป้าหมายหลักคือการทำให้กระบวนการปรับขนาดจริงสำหรับนักพัฒนาง่ายขึ้น แต่จะล้มเหลวอย่างแน่นอนภายใต้สถานการณ์การออกแบบที่ตอบสนองส่วนใหญ่ ตัวอย่างเช่น เราไม่ต้องการแสดงภาพขนาดใหญ่สำหรับผู้ใช้สมาร์ทโฟนในการเชื่อมต่อที่ขอบ การปรับขนาดจากไฟล์เทมเพลตเป็นวิธีที่ดีกว่าในการแสดงแหล่งที่มาต่างๆ สำหรับโปรไฟล์ผู้ใช้ปลายทางที่แตกต่างกัน ตอนนี้กำลังตรวจสอบธีมว่างๆ ฉันเห็นเฉพาะสถานการณ์ที่มีเพียงการย่อขนาดรูปภาพลงใน html

หนึ่งในการเปลี่ยนแปลงที่ยอดเยี่ยมและเป็นมากกว่าการต้อนรับคือการแนะนำตัวห่อหุ้ม คอนเทนเนอร์ ซึ่งเป็นตัวต่อจากประเภทบล็อก core/text_list ซึ่งทำหน้าที่เป็นบล็อกโครงสร้างในระบบเวอร์ชันก่อนหน้า สิ่งที่น่าสนใจจริงๆ คือ ความสามารถในการส่งผ่านแอตทริบิวต์เช่น htmlTag , htmlClass , htmlId ได้โดยตรงจากไฟล์เลย์เอาต์

รายการโปรดส่วนตัวของฉันคือการแนะนำวิธีการ ย้าย มันเป็นวิธีการกระทำที่ได้รับการปรับแต่ง set/unsetChild แต่ตอนนี้กระบวนการนี้ใช้งานง่ายขึ้นมาก ตัวอย่างเช่น หากเราต้องแทรก source block1 ลงใน block2 ปลายทาง นี่คือวิธีที่เราสามารถทำได้:

มันทำให้ source block1 เป็นลูกของ บล็อกปลายทาง 2 โดยอัตโนมัติ

สิ่งสำคัญที่ต้องพูดถึงคือ Magento 2 เสนอการตรวจสอบระบบสำหรับไฟล์ XML โดยใช้ xml schema สำหรับไฟล์เลย์เอาต์เดี่ยวและไฟล์ที่ผสาน

ระบบฟรอนต์เอนด์ Magento 2 ได้รับการปรับปรุงอย่างมาก ตอนนี้มีความก้าวหน้าทางเทคโนโลยีมากขึ้นและใช้งานได้ง่ายขึ้นมาก ขออภัย เป็นไปไม่ได้ที่จะครอบคลุมการเปลี่ยนแปลงและนวัตกรรมทั้งหมดของ Magento 2 ในบทความเดียว ในบทความต่อ ๆ ไป Magesolution จะติดตามเรื่องนี้อย่างแน่นอน และเราจะพูดถึงรายละเอียดเพิ่มเติมของโลกเทคโนโลยี Magento 2

ที่มา : magento.com