Magento є однією з провідних платформ для електронної комерції в світі. І її використовують більшість великих світових брендів, тому що вона гнучка, надійна і відкрита. Magento має широкий спектр вбудованих функцій, високу масштабованість, вона постійно розвивається.
У сьогоднішній статті ми розглянемо рекомендації, які засновані на кращих практиках при розробці на Magento. Ці рекомендації допоможуть як новачкам, так і більш досвідченим розробникам Magento 2.
Завжди дотримуйтесь стандартів кодування і ніколи не редагуйте системні файли, оскільки це може призвести до порушення в роботі платформи. У вас може бути спокуса зробити все швидко, але в цьому випадку ваша робота буде недостатньо якісною, і в майбутньому може принести шкоду.
Дотримуючись стандартних угод, ви надаєте своєму кодові професійний вид і полегшуєте його читання. Переконайтеся, що ваші стандарти кодування Magento засновані на стандартах кодування Zend, PSR1, PSR2 і PSR4.
Magento складається з системного (core) коду та додаткових компонентів, які покращують або замінюють основний код. Для Magento 2 є досить велика кількість готових компонентів у вигляді модулів, тем і мовних пакетів. Архітектура Magento дозволяє вносити поліпшення, розробляти власні компоненти.
Вам завжди потрібно створювати новий модуль для будь-якої функціональності, але перед цим ви повинні бути впевнені, що для цього дійсно потрібен новий модуль. Замість того, щоб розробляти новий модуль з нуля, ви можете використовувати системний код і перевизначити його відповідно до ваших вимог, що заощадить вам масу часу і клопоту. Також при перевизначенні ядра переконайтеся, що ви переписуєте тільки потрібний код, а новий клас розширює вихідний основний клас.
При розробці будь-якого модуля ви повинні дотримуватися угоди про іменування. Враховуйте це при іменуванні файлів, папок, методів і класів.
Якщо ви не знаєте, як щось зробити, подивіться на вихідний код Magento. Цей код досить часто є джерелом натхнення.
У порівнянні з Magento 1 в новій платформі відбулися значні зміни. Обов’язково вивчіть можливості і стандарти платформи Magento 2. Нижче наведені лише деякі з важливих особливостей:
\Magento\Framework\Validator\ValidatorInterface
.Magento\Framework\Data\Collection
для отримання колекції відфільтрованих об’єктів замість безпосереднього запиту до бази даних.
І будьте обережні при використанні сторонніх модулів, перш ніж застосовувати їх у виробництві, приділіть деякий час вивченню їх коду.
Завжди використовуйте git для створення версій свого коду, використовуйте локальну віртуальну машину для розробки (Vagrant або Docker можуть бути хорошими інструментами).
Уникайте використання надлишкового або дубльованого коду, який може бути важко підтримувати. Замість того, щоб копіювати і вставляти один і той же код, створіть окремий клас або метод і посилайтеся на нього при необхідності. Переконайтеся, що ви використовуєте корисний код якомога частіше.
Код, який ви пишете, повинен бути невеликим, цілеспрямованим і забезпечувати спільне рішення. Це дозволить вам повторно використовувати цю функціональність в майбутньому.
Допоміжні або службові класи – це класи, заповнені статичними методами, які мало де застосовуються. Ці класи вважаються анти-патернами і суперечать принципам об’єктно-орієнтованого програмування. Якщо у вас є SomeClass
і SomeClassHelper
зі статичними функціями, які працюють з SomeClass
, ви повинні розглянути можливість рефакторинга цих функцій в SomeClass
.
Допоміжний клас, який функціонує як універсальний засіб для випадкових методів, порушує принцип єдиної відповідальності, тому що це спроба вирішити кілька проблем в одному класі. Ви повинні переписати свій код і перемістити ці функції в відповідні класи, з якими вони повинні працювати.
Спостерігачі можуть змінювати поведінку додатка Magento, оскільки вони динамічно впроваджуються в потік виконання. Погано спроектовані і закодовані спостерігачі можуть викликати проблеми, нестабільність або іншим чином порушувати роботу додатка.
Як зробити спостерігач ефективним:
/etc/frontend/events.xml
замість глобального файлу /etc/events.xml
.
У платформі відбулися серйозні оновлення у визначенні макетів, щоб обмежити зміни, які ви можете робити в файлах шаблонів (які були можливі в попередній версії). Були додані нові теги container
, referenceBlock
, referenceContainer
, move
, update
і argument
.
Ось приклад батьківського і дочірнього контейнерів:
... <container name="div.sidebar.additional" htmlTag="div" htmlClass="sidebar sidebar-additional" after="div.sidebar.main"> <container name="sidebar.additional" as="sidebar_additional" label="Sidebar Additional"/> </container> ...
Доступ до значень аргументів, встановленим у файлі макета, можна отримати в шаблонах за допомогою методів get{ArgumentName}()
і has{ArgumentName}()
. Останній повертає логічне значення, що визначає, чи є якесь встановлене значення. {ArgumentName}
виходить з атрибута name
наступним чином: для отримання значення імені методу використовується getSomeString()
.
Встановлення значення css_class
в файлі макета додатка /code/Magento/Theme/view/frontend/layout/default.xml:
... <arguments> <argument name="css_class" xsi:type="string">header links</argument> </arguments> ...
Отримання значення css_class
в app/code/Magento/Theme/view/frontend/templates/html/title.phtml
:
... $cssClass = $this->getCssClass() ? ' ' . $this->getCssClass() : ''; ...
Рекомендується не змінювати базові файли дизайну, а замість цього слідувати стандартам кодування і розширювати або перевизначати макет для будь-якої модифікації.
/view/frontend/layout/catalog_product_view.xml
, вам потрібно додати файл макета з тим же ім’ям в свою користувацьку тему, наприклад: /Magento_Catalog/layout/catalog_product_view.xml
Якщо ви забудете очистити або відключити кешування, це може викликати головний біль при розробці. Рекомендується очищати кеш перед виконанням візуальної перевірки вашої теми, щоб переконатися, що відображуваний вміст коректний.
Поки ви розробляєте компоненти Magento (модулі, теми і мовні пакети), ваше швидко змінюване середовище вимагає від вас періодично очищати певні каталоги і кеші. В іншому випадку ваш код не буде працювати належним чином.
Слідуйте цим важливим вказівкам про те, коли і як очищати певні каталоги кеша. Переконайтеся, що ви перебуваєте в кореневому каталозі вашої інсталяції Magento.
Щоб очистити тільки каталоги і не виконувати інші дії, увійдіть на сервер Magento як власник файлової системи Magento і очистіть каталоги за допомогою команди, подібної наступній.
rm -rf /var/di/* /var/generation/*
Для оновлення бази даних і схеми всякий раз, коли відбуваються зміни в класі або зміни, що призводять до генерації фабрик, зміни в будь-якому файлі di.xml або додаванню/видаленню будь-якого модуля, запускайте наступну команду. Вона очистить ці каталоги: var/di
, var/generation
.
php bin/magento setup:upgrade
Після виконання вищевказаної команди необхідно згенерувати скомпільований код:
php bin/magento setup:di:compile
Після запуску будь-якої з вищевказаних команд, щоб відобразити останні зміни, необхідно очистити кеш за допомогою наступної команди:
php bin/magento setup:static-content:deploy -f
Щоб відобразити останні зміни на CMS сторінці, в кешованому блоці або змінити конфігурацію в адмінці, необхідно виконати наступну команду:
php bin/magento cache:clean
Ось і все, дякуємо за увагу!
Навчання за кордоном вже давно асоціюється з якісною освітою, новими можливостями та безліччю перспектив. Але…
Вибір майстра для ремонту та перетяжки меблів – завдання, яке потребує вдумливого підходу. Адже від…
Вибір ідеального хостингу під свій сайт може бути досить заплутаною справою, особливо коли існує багато…
Щоб уникати помилок, потрібно набиратися досвіду; щоб набиратися досвіду, потрібно робити помилки Лоуренс Пітер
Коротке визначення Чорного SEO Чорне СЕО (або Чорна оптимізація) — це будь-яка практика, метою якої…
Отримання прав водія категорії C відкриває двері до професійної діяльності, пов'язаної з керуванням вантажними автомобілями.…