iT邦幫忙

2025 iThome 鐵人賽

DAY 7
1

前言

到這裡,我們似乎已經開始稍微看見 Magento 後端的樣貌了。

就像修行人走到山門入口,準備踏進更深的境界。
不過,在正式進入後端開發領域之前,
我想先跟大家分享一個 非常重要的概念 ——
它會決定你之後的開發方式,是走在正道上,還是一路踩坑。

如果我要開發一個新功能,我到底該怎麼做?
難道就是直接打開檔案,把程式碼改一改嗎?

今天,我們就來談談 後端開發的心法
當我們面對龐大的系統,究竟該如何動手,才能走在正道,而不是誤入歧途?


後端開發的心法:以擴充為核心

如果你要在網站裡新增一個功能,你可能會直覺想:
「那我就打開程式,把裡面改一改就好啦!」
聽起來很合理對吧?

但在像 Magento 這樣龐大的系統裡,這樣做其實會帶來很多問題:

  • 下次官方更新版本,你改過的東西可能會被洗掉。
  • 團隊裡的人不知道你動了哪裡,出了 bug 很難排查。
  • 改久了,系統會變得越來越亂,誰都不敢再碰。

所以,後端開發真正的心法是:不要直接改核心,而是透過「擴充」的方式來加功能。
.
.
.
就像是你租了一間房子,如果想要讓生活更舒適,不會直接敲掉牆壁或改結構。
你要加東西,是透過 家具、裝飾,或用房東本來就留的 插座、掛勾。
這樣房子不會壞,之後要搬走也很乾淨。
Magento 的擴充就是這個概念:不動核心,靠掛點加功能。
.
.
.
在 Magento 裡,系統本身就幫我們預先留了很多「位置」,可以讓開發者把自己的程式加進去。
這些位置有點像是「保留欄位」:

  • 當某些流程發生時(例如:顧客下單、商品被加入購物車),你可以在這個時刻插入一段自己的程式。
  • 有些地方則允許你在功能執行「之前」或「之後」,多加一點邏輯。
  • 必要時,你甚至可以整個換掉它的處理方式,用自己的規則取代內建的作法。

換句話說,Magento 並不要求你去改核心程式碼,而是告訴你:
「如果要加功能,請用我留給你的這些位置。」

這就是後端開發最重要的心法:
👉 不去動核心,而是透過框架設計好的位置,來擴充功能。

.
.
.
.


Magento 後端常見的擴充方式

Magento 的後端開發方式非常多元,因為系統本身就設計了很多「掛點」,讓我們能在不同層面加功能。

實際上,Magento 的擴充模式非常多:
你可以攔截方法、監聽事件、覆蓋類別、改畫面結構,甚至透過 Service Contracts 或 UI Component 去修改後台表單、Grid,還能用 Patch 來新增資料表或欄位。

但對剛入門的人來說,不需要一次就把所有方式都背起來。
最核心、最常用、而且最能幫你快速進入狀況的,其實就這四種:

  • Preference:直接用自己的類別,取代原本的類別。
  • Plugin:在方法執行的前後,甚至中間,插入自己的程式。
  • Observer:監聽特定事件,當事件發生時自動執行邏輯。
  • Layout XML:修改頁面結構,新增或替換區塊。

這四種擴充方式,是大部分 Magento 專案裡會用到的主力工具。
只要把它們弄懂,你就能處理 70–80% 的需求。

👉 所以接下來的篇章,我會帶大家逐一拆解這些模式,看看它們在實戰中是怎麼用的。


小小預覽:Magento 擴充模組的結構

講了這麼多「擴充」,那程式到底要放在哪裡呢?
Magento 的特色就是 模組化,每一個功能都是獨立的模組(Module)。

如果你要新增功能,就要自己建立一個模組,放在:

app/code/Vendor/ModuleName/

其中:

  • Vendor → 廠商名稱(你自己定,例如 MrlMilton)。
  • ModuleName → 模組名稱(例如 OrderLogCustomDiscount)。

最小可用的模組骨架

一個能「活」起來的模組,大概會長這樣:

app/code/Vendor/ModuleName/
├── registration.php        # 告訴 Magento 這個模組存在
├── etc/
│   ├── module.xml          # 模組基本資訊(名稱、版本)
│   ├── di.xml              # 這裡可以設定 Preference / Plugin
│   └── events.xml          # 這裡可以註冊 Observer
├── Observer/
│   └── Example.php         # 事件處理的邏輯放這裡
├── Plugin/
│   └── Example.php         # 插件(攔截器)的邏輯放這裡
└── view/
    └── frontend/
        └── layout/
            └── catalog_product_view.xml   # Layout XML 範例

先有個小概念就好

不用急著背下來,今天先把這個骨架當成「先導預告片」就好。
你只要知道:Magento 幫我們規定了「程式要放在哪裡」,而我們常用的四種擴充方式(Preference、Plugin、Observer、Layout XML),都能在這個骨架裡找到它們各自的家。
.
.
.
.


結語

今天我們先談了一個觀念:

Magento 後端開發的第一心法,就是不動核心、靠擴充。

只要記住這點,你就不會在未來的專案裡迷路。
而在所有擴充方式裡,最常見的就是 Preference、Plugin、Observer、Layout XML
.
.
接下來的篇章,我會帶大家逐一拆開來看,讓這些「名詞」不再只是生硬的術語,而是能在實戰裡靈活運用的工具。


上一篇
[Day 6] AI 帶我認識後端框架(下)— 走進 View:Layout/Block/PHTML
下一篇
[Day 8] 10分鐘做出我的第一個模組 - observer 篇
系列文
《電商修仙術:AI × Magento 開發心法》8
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言