magento
모듈 구조
수색…
비고
확장 할 모듈이 존재합니다. 향후 업데이트를 금지하지 않으면 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
확장합니다.이제이 기능이 완료되었습니다. 모든 페이지의 꼬리말 안에 모듈을보아야하는 홈 페이지로 이동하여 테스트 해보십시오!