수색…


비고

확장 할 모듈이 존재합니다. 향후 업데이트를 금지하지 않으면 the app/code/ 파일을 변경할 수 없습니다. 대신 app/code/local 디렉토리에 모듈을 추가합니다 (로컬 디렉토리가없는 경우 수동으로 만들어야합니다. 이후 Magento 버전에서 공통적으로 사용됨).

모든 모듈 구성 파일은 <config> 태그로 시작합니다. 새로운 모듈은 <modules> 태그 안에 선언됩니다. YOUR_COMPANY_HelloWorld라는 모듈을 호출 할 것이므로 <YOUR_COMPANY_HelloWorld> 태그가 사용됩니다. 여기서 우리는 버전을 정의합니다 (매우 처음 = 0.0.1).

XML 이벤트 목록은 http://www.magentocommerce.com/wiki/5_-_modules_and_development/reference/module_config.xml 에서 찾을 수 있습니다 .

문제가 있으면 다음을 확인하십시오. http://coding.smashingmagazine.com/2012/11/30/introducing-magento-layout/

처음부터 모듈 만들기 (Hello World)

Magento 사용자 정의 모듈 개발은 모든 Magento 개발 또는 Magento 프로젝트의 핵심 부분입니다. 모든 단계에서 기존 Magento 프로젝트에 자신의 기능 / 모듈을 통합 할 수 있기 때문입니다.

개발자가 먼저 해제해야하는 것은 시스템 캐시입니다. 그렇지 않으면 어떤 변화가 홍조를 요구하기 때문에 발전은 고통이 될 것입니다. Magento admin 패널에서 : System > Cache Management > Select All > Actions : Disable. 새 모듈을 만들려면 다음 가이드를 사용하십시오.

  • app/code/local/ 폴더 만들기 - 명명 규칙은 일반적으로 회사 이름 (예 : app/code/local/<YOUR_COMPANY> 합니다.

  • 이제 모듈에 대한 맞춤 위치가 있습니다. 다른 모듈을 만들려면 모듈의 유형과 관련된 이름을 붙입니다. 예를 들어 app / code / local / <YOUR_COMPANY> / HelloWorld / - "HelloWorld"는이 모듈을 호출합니다.

  • magento가 새로운 모듈로 인식 할 수 있도록이 디렉토리에는 config.xml 이 필요합니다. etc 라는 다른 폴더를 만듭니다. config.xml이라는 xml 파일이옵니다. 디렉토리는 app/code/local/<YOUR_COMPANY/HelloWorld/etc/config.xml 이것은 XML 파일의 구조입니다.

    <?xml version="1.0" encoding="UTF-8" ?>
    <config>
       <modules>
          <YOUR_COMPANY_HelloWorld>
             <version>0.0.1</version>
          </YOUR_COMPANY_HelloWorld>
       </modules>
    </config>
    
  • 다음으로, 모듈은 Magento에 선언되어야합니다. app/etc/modules . 필자의 경우 YOUR_COMPANY_HelloWorld 라는 또 다른 XML 문서를 만들고 태그의 선택된 이름을 지정하십시오. 이 문서에서는 다음을 작성합니다.

    <?xml version="1.0" encoding="UTF-8"?>
    <config>
       <modules>
          <YOUR_COMPANY_HelloWorld>   
             <!-- Whether our module is active: true or false -->
             <active>true</active>
             <!-- Which code pool to use: core, community or local -->
             <codePool>local</codePool>
          </YOUR_COMPANY_HelloWorld>
       </modules>
    </config>
    
  • 다시 config 및 module 태그는 Magento에 새 모듈을 선언하는 데 사용됩니다. 활성은 Admin Panel under System > Configuration > Advanced 에서 액세스 할 수있는 기본값입니다. codePool 젠토가있는 디렉토리에보고 알 수 있습니다. local 우리의 경우

  • 이 모듈은 이제 MVC 구조의 모델로 설정되었습니다. 관리자 패널의 System > Configuration > Advanced 에서 새 모듈을 볼 수 있습니다. 그러나 아직 아무 것도하지 않습니다! config.xml 파일로 돌아가 XML 요소를 정의해야합니다.

  • 튜토리얼에 이어 계속됩니다. 우리는 이러한 XML 요소 중 일부를 사용하여 클래스를 만들고 우리 사이트의 프론트 엔드에있는 모든 페이지를 조작합니다. config.xml 파일로 돌아가서 </modules> 태그 아래에 다음을 작성합니다.

    <global>
       <!-- adding a new block definition -->
       <blocks>
           <!-- A unique short name for our block files -->
           <helloworld>
              <!-- the location of our modules block -->
              <class>YOUR_COMPANY_HelloWorld_Block</class>
           </helloworld>
       </blocks>
    </global>
    <!-- We are making changes to the frontend -->
    <frontend>
       <!-- We are making changes to the layout of the front end -->
       <layout>
          <!-- we are adding a new update file -->
          <updates>
             <!-- Creating the name of our update and linking it the module -->
             <helloworld module="YOUR_COMPANY_HelloWorld">
                 <!-- The name of the layout file we are adding -->
                 <file>helloworld.xml</file>
             </helloworld>
         </updates>
      </layout>
    </frontend>
    
  • 보시다시피, 우리는 핵심 파일을 조작하기보다 끊임없이 확장하고 있습니다. helloworld 태그는 핸들을 가리킬 것이므로 소문자로 표시되며, 연속성을 위해 가능한 한 가깝게 이름을 지정합니다. 그런 다음 이것을 YOUR_COMPANY_HelloWorld 모듈에 연결합니다.

  • 우리는 레이아웃을 변경하고 있습니다. 따라서이 핸들을 레이아웃 디렉토리에 만들어야합니다. app/design/frontend/base/default/layout 합니다. 우리는 helloworld.xml 파일을 찾도록 모듈에 말했다. 그러므로 우리는이 디렉토리에 만들어야합니다. 너는 무엇을 기다리고 있느냐. 해!! 그것을 채우십시오 :

    <?xml version="1.0" encoding="UTF-8"?>
    <!-- All Layout files begin with this code -->
    <layout>
       <!-- this is the layout handle. Default is handled on all pages. We want this module to execute on all pages -->
       <default>
          <!-- This is the block we want to bolt onto the existing before_body_end block -->
          <reference name="before_body_end">
              <!-- We define our new block and template to be added to before_body_end -->
              <block name="helloworld_footer" template="helloworld/footer.phtml" type="helloworld/footer"/>
          </reference>
       </default>
    </layout>
    
  • 이제 Magento 경험이 조금 있거나 Magento 튜토리얼을 더 읽으신 분은 Magento 핵심 파일이있는 곳이기 때문에 base / default 파일을 변경하고 있습니다. 그러나 여기서는 파일을 수정하지 않고 새로운 파일을 생성하고 있으며 파일 이름 앞에 "helloworld"라는 접두어를 붙이므로 다른 모듈과 충돌하거나 Magento를 업그레이드 할 때 문제가 발생할 가능성은 거의 없습니다. 미래. 행복한 날들!

  • 모든 페이지에 영향을 미치기를 원하기 때문에 기본 태그를 사용하여 before_body_end 구조 블록을 참조합니다. 이것은 액션의 역할을 수행하고 MVC 구조의 뷰 섹션을 트리거합니다.

  • 이제 우리는 before_body_end 블록에 속한다고 이해합니다. 그것을 사용자 정의 블록에 연결합니다. 이것을 참조라고하며 후크 입니다. 현재 우리는 기존 파일에 연결하지 않으므로 필요한 파일을 만들어야합니다.

  • helloworld.xml 에서 템플릿에 footer.phtml 명시했습니다. app/design/frontend/base/default/template 하여 디렉토리 helloworld 만듭니다.

  • 이 디렉토리 안에 footer.phtml 파일을 만들고 footer.phtml 채우십시오.이 튜토리얼은 단순히 PHTML 파일과 연결된 일부 PHP 기능을 표시하기 위해이 파일을 작성합니다.

    <p>Hello Everyone! Todays date is <?php echo $this->getDate() ?></p>
    
  • 이제 우리는 템플릿을 우리의 블록 기능과 결합하기 위해 자체 블록 객체를 생성해야합니다. app / code / local / YOUR_COMPANY / HelloWorld / Block / 디렉토리를 Footer.php 안에 Footer.php 파일을 만듭니다. 이것은 zeta_layout.xml에서 "helloworld / footer"유형으로 참조되었습니다. 이 파일을 채우십시오 :

    <?php
    class YOUR_COMPANY_HelloWorld_Block_Footer extends Mage_Core_Block_Template {
       public function getDate() {
          $date = date('Y-m-d');
          return urlencode($date);
       }
    }
    ?>
    
  • 이것은 우리가 .phtml 파일에서 호출 한 getDate() 호출을 채울 기능입니다. Mage_Core_Block_Template 확장합니다.

  • 이제이 기능이 완료되었습니다. 모든 페이지의 꼬리말 안에 모듈을보아야하는 홈 페이지로 이동하여 테스트 해보십시오!



Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow