Chủ đề cho Magento 2 - Bắt đầu từ đầu


27

Một số bạn có thể đọc chủ đề đó liên quan đến chủ đề từ đầu cho Magento 1: Theming - bắt đầu từ đầu

Tôi đã tự hỏi, điều gì sẽ là cách thực hành tốt nhất để phát triển một chủ đề từ đầu cho Magento 2?

  • Bạn có xây dựng bằng cách sử dụng bản địa lumahoặc blankchủ đề? Hay bất cứ điều gì khác?
  • Bạn có sử dụng bất kỳ tiện ích mở rộng nào để giúp bạn phát triển chủ đề của mình không?
  • Những bước nào bạn làm theo khi phát triển một chủ đề từ đầu?

Tôi đang cung cấp một số liên kết trong câu trả lời của tôi xin vui lòng đi qua nó, bạn sẽ biết về kiến ​​trúc frontend và sự phát triển của Magento 2.0.
Asheem Patro

Thực hiện theo các bước của Magento docs devdocs.magento.com/guides/v2.1/frontend-dev-guide/theme/ trộm để tạo chủ đề cho frontend.
Rishabh Rk Rai

Câu trả lời:


45

TL: DR

Bạn có xây dựng bằng cách sử dụng luma bản địa hoặc chủ đề trống? Hay bất cứ điều gì khác?

Điều này tùy thuộc vào bạn, khai báo chủ đề gốc là tùy chọn. Nếu bạn không khai báo cha mẹ, bạn vẫn sẽ dự phòng các mô-đun (ví dụ: Magento_Catalog) cung cấp các tệp XML và tệp mẫu nhưng không có kiểu dáng.

Bạn có sử dụng bất kỳ tiện ích mở rộng nào để giúp bạn phát triển chủ đề của mình không?

Vì tôi thích làm việc với SCSS và GULP hơn nên giờ tôi sử dụng Frontoolschủ đề trống SCSS . Nó loại bỏ rất nhiều căng thẳng khi xử lý dòng chảy Grunt / LESS mặc định.

Những bước nào bạn làm theo khi phát triển một chủ đề từ đầu?

  1. Khai báo chủ đề
  2. Xóa CSS chủ đề gốc (nếu cần)
  3. Thêm CSS / LESS / SCSS của riêng bạn

Ý kiến ​​cá nhân của tôi là tốt nhất là tạo ra 'chủ đề trống' của riêng bạn từ đầu vì bạn có thể điều chỉnh nó thành chính xác những gì bạn cần.

Đây là cách tôi sẽ tạo một chủ đề từ đầu, tôi đã sử dụng NewStore / mặc định làm tên nhà cung cấp và chủ đề của mình.

Bây giờ để có câu trả lời chi tiết hơn ...

Tạo chủ đề (theo tài liệu chính thức)

Tạo chủ đề theo tài liệu chính thức

Tùy chọn khai báo cha mẹ

Trong app/design/frontend/NewStore/default/theme.xmlbạn có lựa chọn khai báo chủ đề gốc hay không, ví dụ này tôi đã bỏ dòng 3 ( <parent>Vendor/theme</parent>) để không có chủ đề gốc . Điều này có nghĩa là tất cả các tệp mẫu / bố cục sẽ đến từ chính các mô-đun chứ không phải Trống hoặc Luma và sẽ không có kiểu dáng chủ đề vì điều này được thêm vào trong chủ đề trống.

Chủ đề của tôi trông như thế này:

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

Xóa kiểu dáng (nếu bạn đặt chủ đề gốc) và thêm CSS của riêng bạn

Nếu bạn đặt trống hoặc Luma làm cha mẹ, bạn sẽ cần ngăn các tệp CSS tải. Để làm điều này, hãy tạo app/design/frontend/NewStore/default/Magento_Theme/layout/default_head_blocks.xmlvà thêm XML sau:

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

Điều này loại bỏ styles-m.css, styles-l.cssprint.cssthêm bởi các chủ đề trống. Nó cũng thêm style.css làm cơ sở cho CSS của riêng bạn.

Nếu bạn không chỉ định cha mẹ, bạn có thể xóa 3 <remove />thẻ trong mã ở trên.

Thêm CSS của riêng bạn

Bây giờ bạn có thể tạo kiểu cho chủ đề của mình, tuy nhiên, làm ơn, tôi là người hâm mộ của Sass chứ không phải LESS nên tôi đã thêm tệp này - app/design/frontend/NewStore/default/web/css/styles.scss

Tôi đã thay đổi màu nền ở đây chỉ để chứng minh điều này hoạt động, lý tưởng nhất là bạn chỉ sử dụng tệp này để nhập các tệp Sass / Less khác.

Kết quả

Kết quả của những gì tôi vừa thực hiện là một chủ đề không có kiểu dáng (ngoài nền màu xanh lá cây tuyệt đẹp của tôi) cho phép bạn tạo kiểu cho chủ đề của mình mà không cần làm việc với kiểu dáng của Magento (đôi khi khó làm việc).

nhập mô tả hình ảnh ở đây

Lời khuyên

  • Nếu bạn thích làm việc với SCSS và không có thời gian để tạo chủ đề từ đầu, tôi khuyên bạn nên sử dụng Frontoolschủ đề trống SCSS của cả Ứng dụng Snowdog .

  • Tôi thấy khía cạnh khó chịu nhất khi làm việc với mã mặt trước của Magento là cách tạo kiểu cụ thể của chúng, để tránh điều này tôi khuyên bạn nên sử dụng quy ước đặt tên BEM khi viết kiểu dáng của riêng bạn.

  • Các bình luận hữu ích cũng là chìa khóa, nếu một nhà phát triển đã từng làm việc với Luma / Blank làm việc với một chủ đề được xây dựng từ đầu thì có lẽ họ sẽ thấy mọi thứ hoạt động hoàn toàn khác với những gì họ mong đợi.


Tôi đã tạo chủ đề trống của riêng mình bằng hướng dẫn của bạn, không có chủ đề gốc được xác định trong theme.xml. Tuy nhiên, vẫn có tất cả các loại phong cách có thể nhìn thấy ở mặt trước. Cài đặt Magento ở developerchế độ và tất cả bộ nhớ cache đã bị xóa. Tôi không biết tất cả những phong cách này đến từ đâu - bạn có ý tưởng gì không?
fritzmg

Bạn có cài đặt tiện ích mở rộng / plugin nào không? Nó cũng có thể là Varnish nếu được cài đặt, để loại trừ việc thêm một dấu hỏi và một chuỗi ngẫu nhiên sau URL, chẳng hạn như?=123
Ben Crook

Vâng, tôi đã loại trừ Varnish (hoặc tương tự). Không có phần mở rộng hoặc plugin được cài đặt.
fritzmg

Đây có phải là phong cách chủ đề đầy đủ hay chỉ là một phần của nó? Thật khó cho tôi để nói mà không nhìn thấy trang web và codebase. Có thể hỏi một câu hỏi mới và đăng một số chi tiết ở đó? Nếu bạn gắn thẻ tôi, tôi sẽ xem liệu tôi có thể giải quyết được không.
Ben Crook

Đó là chủ đề đầy đủ theo như tôi có thể thấy. Cộng với tệp CSS đi kèm từ chủ đề của riêng tôi. Vâng, có lẽ tốt hơn để tạo một câu hỏi mới cho điều này :)
fritzmg

8

Có rất nhiều hướng dẫn để bắt đầu một chủ đề trong Magento 2.0. Tôi đang cung cấp một số liên kết video và một số liên kết bình thường nơi bạn có thể có kiến ​​thức tốt về phát triển chủ đề trong magento 2.0. bấm vào đây để xem video

tham khảo từ liên kết này cũng

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

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

Từ liên kết này, bạn sẽ tìm hiểu về kiến ​​trúc frontend của magento 2.0

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

cũng kiểm tra hai liên kết này

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

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


5

Tôi Kế thừa từ chỗ trống nhưng đang nhanh chóng chuyển sang cố gắng tạo ra một chủ đề cơ bản nhẹ hơn có cấu trúc CSS ít phức tạp hơn nhiều.

Điều đáng chú ý là vào năm 2015, Magento đã ra mắt và nói rằng họ không khuyến nghị thừa kế từ luma vì họ có quyền thực hiện các thay đổi không báo trước cho mục đích tiếp thị và demo của riêng họ. Sau đó, họ đã sửa đổi tuyên bố đó bằng cách nói rằng đó là mục tiêu của họ để cho phép kế thừa .


3

Cách tốt nhất để bắt đầu phát triển một chủ đề là bắt đầu với việc kế thừa từ một trong hai lumahoặc blank. Lý do cho điều này là bởi vì chúng được xây dựng để đáp ứng (nghĩa là thân thiện với nhiều độ phân giải). Nó cũng làm giảm số lượng công việc bạn phải làm trong việc tạo các tệp mẫu và định nghĩa JS / CSS khác nhau. Tất cả bạn phải làm chỉ là ghi đè chỉ những phần bạn muốn tùy chỉnh với riêng bạn. Xem các liên kết dưới đây để biết các hướng dẫn khác nhau về cách phát triển một chủ đề.

Liên kết tài liệu Magento:


Các tệp mẫu bây giờ đến từ các mô-đun và không trống / luma, vì vậy bạn có thể bỏ qua chúng một cách có ảnh hưởng nếu bạn không yêu cầu kiểu dáng / thay đổi. Ví dụ: nếu bạn xem app / design / frontend / Magento / blank / Magento_Catalog, tất cả những gì nó làm là di chuyển một yếu tố và thêm một số kiểu dáng, các mẫu đến từ app / code / Magento / Catalog / view / frontend / samples và ứng dụng / mã / Magento / Danh mục / lượt xem / cơ sở / mẫu
Ben Crook
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.