文章彙整

Magento1 與 Magento2擴展模組介紹

Astral WebBy Astral Web 4 months agoNo Comments
首頁  /  Magento  /  Magento-2  /  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相關問題,也歡迎隨時與我們聯繫

 000

推薦文章

Categories:
  Magento-2Magento

留下回應

你的電子郵件地址不會被公開.