Magento2: найкраща практика для зміни файлів css


14

Я хочу змінити файл css pub/static/frontend/Magento/luma/en_US/css/styles-l.css.
Спочатку цей файл відсутній у папці pub / static і він присутній у

vendor/magento/theme-frontend-blank/web/css/styles-l.less (it's styles-l.less)

Коли я замовчую статичний вміст за допомогою php bin/magento setup:static-content:deploy, в паб / статичних пов'язаних з ним створюються 2 файли.
1. pub/static/frontend/Magento/luma/en_US/css/styles-l.less
2. pub/static/frontend/Magento/luma/en_US/css/styles-l.css

Я підтримуваний розробник і під час розробки модулів я прагну видаляти все, що є в pub / static (крім .htaccess). Тому мені, здається, не найкращий варіант безпосередньо змінити pub/static/frontend/Magento/luma/en_US/css/styles-l.css.

У такому випадку, яка найкраща практика змінити вище css-файл?
1. Слід змінити pub/static/frontend/Magento/luma/en_US/css/styles-l.lessабо
2. Моє розуміння неправильне, що я можу видалити все з pub/static(під час розробки), і я повинен змінювати pub/static/frontend/Magento/luma/en_US/css/styles-l.cssі ніколи не видаляти його.

Відповіді:


19

Не слід редагувати / змінювати файли в каталозі pub / * або vendor / *. Pub призначений для розгортання, а постачальник - для структури за замовчуванням, яку ви переосмислюєте за допомогою шаблону чи спеціальних модулів. Замість цього:

  • створіть нову тему в додатку / дизайн / frontend / {vendor} / {yourTheme} /. Ви можете використовувати тему Blank або Luma. Ви також можете створити нову тему, яка успадковується від Blank (успадкування визначено у topic.xml). Якщо ви вже використовуєте якусь тему, пропустіть цей крок.
  • відредагуйте .залежно від вашої теми, щоб зміни залишалися видимими і не замінювались при очищенні кешу чи оновлення системи.
  • Використовуйте grunt, щоб компілювати .less у файли розгортання.
  • Ви також можете налаштувати вихідні карти, щоб чітко вказати свій стиль у файлах без тематичних файлів, щоб ви були більш продуктивними.

Деякі корисні посилання:


Дякую. Я використовую тему Templatemonster/themeі styles-l.lessне присутній у темі. Чи потрібно копіювати, vendor/magento/theme-frontend-blank/web/css/styles-l.lessщоб app/design/frontend/Templatemonster/theme/web/css/styles-l.lessвикористовувати / змінювати його?
amitshree

2
Ні, ви повинні редагувати менше файлів у Templatemonster / тема - стилі - *. Менше файлів у папному каталозі вже складено файли з вашої теми та інших ресурсів, і не слід змінювати / змінювати. Закінчивши редагування файлів у темі TM, запустіть грунт, щоб зібрати їх у кінцеві ресурси, які будуть розгорнуті в папці pub. Ви також можете використовувати вихідні карти, щоб закріпити менше файлів із вашої теми.
g5wx

Знову дякую. Просто щоб прояснити це, якщо я повинен змінити властивість класів в даний час styles-l.lessз magento/theme-frontend-blankтеми я повинен використовувати / перезаписати ці класи в будь-якому з (або нових) CSS - файли в моїй темі Т.М. та змінити відповідним чином . Чи magento/theme-frontend-blankповодиться тема так само, як base/defaultтема працювала в Magento1?
amitshree

1
Так, будь-які зміни, які ви хочете створити, вони повинні відображатись у вашому шаблоні, так що сфера модифікації залишається локальною у межах цього шаблону і не може бути скасована після оновлення. Порожній шаблон у M2 має таку саму основну функцію, що і за замовчуванням у M1 - тобто мати вже створені базові визначення, а розширена тема може мати резервний елемент, який ви не змінюєте.
g5wx

4

Такий підхід спрацював для мене

Внесіть необхідні зміни у файл .less та виконайте такі команди:

php bin/magento setup:upgrade

php bin/magento cache:flush

3

Якщо ви хочете налаштувати іншу тему:

module.exports = {
    blank: {
        area: 'frontend',
        name: 'Magento/blank',
        locale: 'en_US',
        files: [
            'css/styles-m',
            'css/styles-l',
            'css/email',
            'css/email-inline'
        ],
        dsl: 'less'
    },
    luma: {
        area: 'frontend',
        name: 'Magento/luma',
        locale: 'en_US',
        files: [
            'css/styles-m',
            'css/styles-l'
        ],
        dsl: 'less'
    },

    porto: {
        area: 'frontend',
        name: 'Smartwave/porto',
        locale: 'zh_Hans_CN',
        files: [
            'css/styles-m',
            'css/styles-l'
        ],
        dsl: 'less'
    },

    backend: {
        area: 'adminhtml',
        name: 'Magento/backend',
        locale: 'en_US',
        files: [
            'css/styles-old',
            'css/styles'
        ],
        dsl: 'less'
    }
};

2
У файлі dev / tools / grunt / configs / theme.js
Patrick-Peng


0

Я б запропонував виконати

php bin/magento setup:upgrade
php bin/magento setup:static-content:deploy

Як ви знаєте,

php bin/magento setup:upgrade

очистить кеш і статичний вміст, і

php bin/magento setup:static-content:deploy 

розгорне всі теми в <mageroot>/pubпапці. Ця команда значно скоротить завантаження вашого магазину вперше.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.