前幾天我們練習過,想要在產品名稱後面加上「(全館優惠)」,可以透過 Plugin、Observer、Preference 來做到。
不過這有一個問題:
-每次要改字,或要調整內容,都要重新改程式、部署 Magento,這顯然不是一個好方法。
昨天我們學了如何透過 system.xml
在後台加一個設定欄位,並儲存起來。
今天就來把這兩個概念結合起來:用 後台欄位控制前台產品名稱的字尾,讓我們不需要再改程式,只要進後台就能直接修改。
今天的目標不是新增一個全新的功能,而是把前幾天練習過的兩個技巧「串」在一起:
結合後,我們可以:
這是我下的 prompt,這邊比較不複雜,我就沒有下的比較精準:
請幫我在這邊用plugin加上的『(全館優惠)』改成不是寫死的狀態
幫我改成我在settingsdemo-my_wanted_field的值,讓他可以後台修改文字
以下是 Claude 改的檔案,他幫我們把plugin的地方改掉,他把原本寫死程式的地方改成settingsHelper來取得,並且自動幫我們注入settingsHelper了:
我們去看一下settingsHelper:
才發現!原來昨天在生成自訂欄位時,原來claude已經幫我寫好取得的helper了!
/**
* Get wanted value from configuration
*
* @param string|null $storeCode
* @return string
*/
public function getWantedValue(?string $storeCode = null): string
{
return (string) $this->scopeConfig->getValue(
self::XML_PATH_MY_WANTED_FIELD,
ScopeInterface::SCOPE_STORE,
$storeCode
);
}
看起來程式碼寫得還不錯XD,可以直接來用。
*之後修改完成後一樣給Magento update一下
進入後台:Stores → Configuration → (後台加入自定義設定的位置)
大功告成!前台進到任一產品頁 → 名稱自動加上字尾。
今天這個小練習,把「Plugin 攔截」和「後台設定欄位」結合起來了。
以前要改字尾,一定得改程式;現在只要去後台調整就好,這才是比較「實務」的做法。
這一步也再次體會到,Magento 的開發並不是只有「寫功能」而已,更重要的是要把功能做得可配置、可維護,讓使用者(或自己)後續不用再進程式碼,就能直接調整。
修仙路上,又多了一個小法術XD