Magento1 與 Magento2擴展模組介紹
此篇文章介紹給已經開發過Magento1轉開發Magento2的技術人員,或是反之Magento2轉開發Magento1的技術人員,來比較Magento1和Magento2之間擴展模組目錄結構差異。
Magento1 擴展模組目錄介紹
Magento1的程式碼會放在app/code和app/design裡,而在app/code裡又分了三個目錄資料夾,分別為core、community、local。
core:Magento原生功能的代碼。您通常不會在此處進行任何更改。
community:Magento放社群是開源代碼地方。社群開發人員提供了各種免費的擴展模組。
local:客製化模組放的地方。您會看到擴展是由第三方開發的,也可能是您完成特定需求而開發。
而layout.xml、phtml、css、theme包等有關前端呈現的東西都會放在app/design裡,藉由app/code的config.xml設定檔來媒合layout與block、controller的關連。
Magento2 擴展模組目錄介紹
Magento2的程式碼擴展模組只會放在兩個地方,app/code/ 和 vendor裡面,而Magento2原生基本上都會使用composer安裝,所以都會位在vendor裡面,而客製化開發的程式則都會放在app/code裡。
資料夾結構如:
app/code/CompanyName/ModuleName
vendor/vendor-name/module-name
Magento2擴展模組目錄裡多了view資料夾,裡面又分了base、frontend、adminhtml不同的area,它們主要包含了這四個部分:
view/[area]/templates/ - 放置對應到block要呈現的phtml檔案。
view/[area]/web/ - 放置javascript、css、image等檔案。
view/[area]/ui_component/ - 配置ui_component設定檔的位置。
view/[area]/layout/ - 布局框架block位置的xml設定檔放置位置。
比起Magento1的擴展模組沒有view,一定要需要搭配app/design的前端檔案,Magento2的擴展模組結構更加的獨立完整。
Magento1 和 Magento2 etc目錄結構裡的*.xml檔案比較
Magento2擴展模組etc目錄底下多了非常多的xml設定檔名稱,比起Magento1的etc裡的設定檔多出好幾十隻檔案,但有開發過Magento1的讀者,應該不難發現很多Magento2看似新增的xml檔案只是從原本Magento1的config.xml裡面內容獨立出來的,像是events.xml、crontab.xml、fieldset.xml等,以下就以上述的三個檔案列出Magento1設定和Magetno2設定內容。
Magento1 event在config.xml裡的設定:
<events> <sales_order_place_after> <observers> <sales_vat_request_params_order_comment> <class>sales/observer</class> <method>addVatRequestParamsOrderComment</method> </sales_vat_request_params_order_comment> </observers> </sales_order_place_after> </events>
Magento2 events.xml檔案:
<?xml version="1.0"?> <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Event/etc/events.xsd"> <event name="sales_order_place_after"> <observer name="sales_vat_request_params_order_comment" instance="Magento\Sales\Observer\Frontend\AddVatRequestParamsOrderComment" /> </event> </config>
Magento1 crontab在config.xml裡的設定:
<crontab> <jobs> <sales_clean_quotes> <schedule> <cron_expr>0 0 * * *</cron_expr> </schedule> <run> <model>sales/observer::cleanExpiredQuotes</model> </run> </sales_clean_quotes> </jobs> <crontab>
Magento2 crontab.xml檔案:
<?xml version="1.0"?> <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Cron:etc/crontab.xsd"> <group id="default"> <job name="sales_clean_quotes" instance="Magento\Sales\Cron\CleanExpiredQuotes" method="execute"> <schedule>0 0 * * *</schedule> </job> </group> </config>
Magento1 fieldset是在config.xml裡的內容:
<global> <fieldsets> <sales_copy_order> <customer_email> <to_edit>*</to_edit> </customer_email> <customer_group_id> <to_edit>*</to_edit> </customer_group_id> </sales_copy_order> </fieldsets> </global>
Magento2 fieldset.xml檔案:
<?xml version="1.0"?> <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:DataObject/etc/fieldset.xsd"> <scope id="global"> <fieldset id="sales_copy_order"> <field name="customer_email"> <aspect name="to_edit" /> </field> <field name="customer_group_id"> <aspect name="to_edit" /> </field> </fieldset> </scope> </config>
雖然設定的方式不太一樣,但是基本概念邏輯都是一樣的,而這樣將xml分別獨立出來,筆者認為比起Magento1全部都放在config.xml裡,可讀性和建立寫設定方面都要比之前方便許多,不會再因為小小一個tag設定錯,而導致花費大量時間找出錯誤。
Magento2也多一些新的設定檔搭配新的功能,在這邊附上官方連結介紹讓各位讀者看看。
https://devdocs.magento.com/guides/v2.4/config-guide/config/config-files.html?itm_source=devdocs&itm_medium=search_page&itm_campaign=federated_search&itm_term=etc%20xml
以上介紹就是帶各位了解Magento 1與Magento 2的擴展模組的結構差異呦!想知道更多Magento相關資訊,記得追蹤歐斯瑞FB粉絲團及IG,更別忘了訂閱電子報,就能隨時掌握第一手最新消息喔!有關於Magento相關問題,也歡迎隨時與我們聯繫!
我要留言