+2

Cấu hình trong Magento 1.

Cấu hình trong Magento 1.

Xin chào cả nhà, khi nhắc đến Magento chúng ta có thể coi nó là một CMS thương mại điện tử. Vì là một CMS thì trong quá trình build một site từ CMS bạn cũng cần phải config rất nhiều thứ hoặc khi tạo một module bạn cũng phải config một đống thứ mà khi mới bắt đầu thì thằng dev nào cũng quay ra blalabla nhà phát triển magento. Vì vậy bài này mình sẽ giới thiệu một số config cơ bản cho ae cùng tham khảo.

1. File config.xml

<?xml version="1.0"?>
<config>
     <modules>
         <Xlavender_Helloworld>
             <version>0.1.0</version>
         </Xlavender_Helloworld>
     </modules>
     <frontend>
     <routers>
     <helloworld>
         <use>standard</use>
         <args>
             <module>Xlavender_Helloworld</module>
             <frontName>helloworld</frontName>
         </args>
     </helloworld>
     </routers>
         <layout>
             <updates>
                 <helloworld>
                     <file>helloworld.xml</file>
                 </helloworld>
             </updates>
         </layout>
     </frontend>
 <global>
     <blocks>
         <helloworld>
             <class>Xlavender_Helloworld_Block</class>
         </helloworld>
     </blocks>
 </global>
</config>

Đây là file config.xml của module Helloworld mà ta đã viết trong bài trước .Nó bao gồm rất nhiều thẻ và mỗi thẻ có thể bao gồm nhiều thẻ khác bên trong.

1.1 Thẻ module

Thẻ này bao gồm những config như:

  • Active : true hoặc false.
  • Depends : phụ thuộc vào một module nào đó.
  • Version : phiên bản hiện tại của module.
  • ModuleName : tên của module.

1.2 Thẻ global

Thẻ này chứa những config cho những thành phần chính của module như models, resources, blocks, helpers, fieldsets, template, events, eav_attributes, custom_variables. Nó bao gồm cả những config cơ bản nhất cho module như thư mục chưa model, block, helper…

  • Thẻ “models“: chứa những config về model của module
<models>
    <[ModuleName]>
        <class>[ClassName_Prefix]</class>
        <resourceModel>[ModuleName]_[]</resourceModel>
        <[ModuleName]_[resource_model_type]>
               <!-- your code -->
        </[ModuleName]_[resource_model_type]>
        <rewrite><!--  your code --></rewrite>
    </[ModuleName]>
</models>
  • ModuleName : tên của module.
  • ClassName_frefix : đường dẫn đến thư mục model.
  • Resource_model_type : kiểu model resource (ví dụ như mysql4 ).

1.3 Thẻ Resource

Định nghĩa:

<resources>
<[ModuleName]_setup><!-- your code --></[ModuleName]_setup>
<[ModuleName]_read><!-- your code --></[ModuleName]_read>
<[ModuleName]_write><!-- your code --></[ModuleName]_write>
</resources>

Ví dụ:

<resources>
     <helloworld_setup>
         <setup>
             <module>Xlavender_Hellowordl</module>
         </setup>
         <connection>
             <use>core_setup</use>
         </connection>
     </helloworld_setup>
     <helloworld_write>
        <connection>
             <use>core_write</use>
         </connection>
    </helloworld_write>
    <helloworld_read>
        <connection>
             <use>core_read</use>
         </connection>
     </helloworld_read>
 </resources>
  • <helloworld_setup> : có tác dụng indentify resource của module , mặc dù không bắt buộc nhưng ta vẫn đặt thẻ này là <moduleName_setup>.
  • <module> : thẻ này nằm trong thẻ <helloworld_setup> dùng để khai báo module với cấu trúc Packagename_Modulename

1.4 Thẻ admin

Thẻ admin bao gồm các thẻ attributes , fieldset và routers nhưng thẻ quan trọng nhất mà chúng ta cần nhớ là thẻ routers. Giống như cái fw được biết đến nhiều như laravel, ruby .... thì routers là một cái sương sống để đi lên trên con đường khám phá ứng dụng.

<routers>
    <[ModuleName]>
        <use>[standard|admin|default]</use>
        <args>
            <module>[NameSpace_ModuleName]</module>
            <frontName>[frontname]</frontName>
        </args>
    </[ModuleName]>
</routers>
  • ModuleName : tên của module dưới dang chữ thường
  • Use : mặc định hệ thống magento chỉ có một trong 3 giá trị là admin , default , standard . ta sẽ dùng admin cho router backen
  • frontName : tên sẽ xuất hiện trong url: http://[yoururl]/frontName/controller/action .

Trong một số trường hợp thì thẻ router có dạng như sau :

<routers>
    <[ModuleName]>
        <args>
            <modules>
                <[NameSpace_ModuleName] before= [AnotherNameSpace_ModuleName]>
                    [New_ClassName]
                </[NameSpace_ModuleName]>
            </modules>
        </args>
    </[ModuleName]>
</routers>

Đoạn layout này đơn giản chỉ muốn khai báo review controller của module AnotherNameSpace_ModuleName bằng controller của NameSpace_ModuleName mà thôi.

1.5 Thẻ “adminhtml”

Thẻ này bao gồm những cofig cho module trong phần backend như layout , events…

<adminhtml>
    <events>
        <[event_name]>
            <observers><!-- observers --></observers>
        </[event_name]>
    </events>
    <global_search>
        <products>
            <class>[ModuleName]/search_catalog</class>
            <acl>catalog</acl>
        </products>
        <customers>
            <class>adminhtml/search_customer</class>
            <acl>customer</acl>
        </customers>
        <sales>
            <class>adminhtml/search_order</class>
            <acl>sales</acl>
        </sales>
    </global_search>
    <translate>
        <modules>
            <[NameSpace_ModuleName]>
                <files>
                    <default>(name_of_translation_file.csv)
                    </default>
                </files>
            </[NameSpace_ModuleName]>
        </modules>
    </translate>
    <layout>
        <updates>
            <[ModuleName]>
                <file>[name_of_layout_file.xml]</file>
            </[ModuleName]>
        </updates>
    </layout>
    <[ModuleName]><!-- custom config variables --></[ModuleName]>
</adminhtml>

trong đo:

  • events: nơi bắt các sự kiện được đăng ký khi sử lý. Phần sự kiện này sẽ chạy khi được gọi đén trong code.
  • global_search: liên quan tới phần tìm kiếm dữ liệu trong trang admin. Một số module có thể sẽ can thiệp vào rát nhiều tơi models sẵn có vì vậy cần tới phần khai báo này.
  • translate: như bạn biết thì phần này sẽ định nghĩa file I18ndule trong module.

Kết luận

Config trong magento là một điều không đơn giản với người mới cũng như người cũ, bởi vì sai sót dù nhỏ bé cũng sẽ khiến module của bạn không hoạt động vì vạy config này cần được quan tâm rất nhiều trong khi tạo module. Tuy nhiên bạn thấy trên đây tôi chỉ viết về cầu hình trong admin và global mà không thấy nhắc gì tới phần front-end. Không phải magento không có config tới nó, cũng không phải nó quá đơn giản mà bởi vì nó thuộc phần view bên ngoài, vì vậy tôi sẽ giới thiệu với các bạn trong lần tới. Cám ơn bạn đã đọc bài viết cơ bản về config này......


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí