Magento 커스텀 모듈: Magento 2에서 생성하는 단계별
게시 됨: 2020-11-11Magento 맞춤형 모듈은 모든 Magento 개발자에게 중요한 개발 프로세스입니다. 아시다시피, 어느 시점에서 개발자는 자신의 기능이나 모듈을 통합해야 할 수도 있습니다. 오늘 이 블로그 게시물에서는 Magento 2에서 사용자 지정 모듈을 개발하는 방법을 단계별로 안내합니다.
최신 업데이트: 성능 향상 및 독점 기능이 포함된 Claue Multipurpose Magento 2 테마 버전 2.0을 출시했습니다. 지금 이 테마를 확인하세요: Claue Magento Theme 2. 0
라이브 데모
Claue – 깨끗하고 최소한의 Magento 2&1 테마 는 40개 이상의 홈페이지 레이아웃과 상점, 블로그, 포트폴리오, 상점 찾기 레이아웃 및 기타 유용한 페이지에 대한 수많은 옵션이 있는 현대적이고 깨끗한 전자 상거래 상점을 위한 훌륭한 템플릿입니다. Claue 버전 2.0에는 다음과 같은 독점 기능이 포함되어 있습니다.
- Luma 테마를 기반으로 합니다.
- Magento 테마의 모든 기준 충족
- 상당한 성능 향상
- 대부분의 타사 확장과 호환됩니다.
- Magento 2.4.x와 완벽하게 호환
이 두 번째 고급 버전은 이전 버전과 완전히 다릅니다. 따라서 Claue 버전 1을 사용 중이고 Claue 버전 2로 업데이트하려는 경우 이전 버전에서 업데이트하는 대신 새 웹사이트를 다시 빌드하는 것만 가능합니다. 이제 본론으로 돌아가자.
Magento는 많은 유용한 기능을 제공하고 무료 및 유료 모듈을 모두 지원하는 매우 다재다능한 플랫폼입니다. 온라인으로 설치할 수 있을 뿐만 아니라 클라이언트의 요구 사항을 충족하기 위해 사용자 지정할 수 있는 모듈을 제공합니다. 사용자 정의는 모듈을 생성하여 달성한 다음 PHP 언어의 힘을 활용하여 선택에 따라 수정할 수 있습니다. 예를 들어, 당사 웹사이트에 시장에 일반적이지 않은 특정 기능 또는 일련의 기능 또는 요구사항이 있는 경우 모듈이 우리를 위해 그 격차를 메울 수 있습니다.
Magento는 커스텀 및 코어 모듈이 상주하는 3가지 유형의 코드 풀(코드, 코어 및 로컬)과 함께 제공됩니다. 로컬 풀(폴더)은 모든 사용자 정의 모듈이 상주하거나 배치되어야 하는 위치입니다. 다음은 모듈에 포함되어야 하는 구성 요소입니다.
- 블록 – 여기에서 템플릿에 데이터를 표시하는 데 사용되는 기능을 제공해야 합니다.
- 모델 – 모든 비즈니스 로직이 여기에 포함됩니다.
- 리소스 – 모델에는 데이터베이스 상호 작용에 사용되는 기능이 포함됩니다.
- 컨트롤러 – 페이지 레이아웃을 정의하고 파일을 차단하며 URL이 요청될 때 로드됩니다.
- etc – Magento에 모듈에 포함된 파일 수와 모듈이 상호 작용하는 방식을 보여주는 XML 형식의 구성 파일을 포함합니다.
- 도우미 – 공통 비즈니스 논리(예: 이미지 크기 조정, 유효성 검사)를 정의하는 데 사용되는 기능을 포함합니다. 이러한 기능은 Magento 애플리케이션 전체에서 어디에서나 사용할 수 있습니다.
- sql – SQL 테이블을 생성, 수정 또는 삭제하는 SQL 스크립트를 포함합니다.
Magento 사용자 정의 모듈을 만드는 방법은 무엇입니까?
Magento 2에서 간단한 모듈 만들기
Magento 2에서 간단한 모듈을 생성하는 것은 쉽습니다. 다음 작업을 수행해야 합니다.
- 모듈에 대한 새 디렉토리 생성
-
registration.php
스크립트 생성 -
etc/module.xml
정보 파일 생성 - 새 모듈 설치
모듈에 대한 새 디렉토리 생성
새 디렉토리의 위치에 대해 두 가지 옵션을 선택할 수 있습니다.
-
app/code/{vendor}/
-
vendor/{vendor}/
모듈이 작업 중인 특정 온라인 상점을 위한 것이라면 첫 번째 옵션을 선택할 수 있습니다. 그러나 다양한 웹사이트에서 사용할 목적으로 모듈을 생성하는 경우 두 번째 옵션을 선택하는 것이 더 적합합니다. 이제 이 예에서 첫 번째 옵션을 사용하겠습니다.
먼저 MyModule
이라는 하위 디렉토리가 있는 EndPoint
(공급업체 이름)라는 디렉토리를 생성해야 합니다.
cd {website_root} mkdir -p app/code/EndPoint/MyModule
registration.php 스크립트 생성
registration.php
파일은 Magento에게 특정 이름과 위치로 새 모듈을 등록하도록 지시합니다.
아래 코드를 사용하여 app/code/EndPoint/MyModule/registration.php
파일을 생성합니다.
<?php \Magento\Framework\Component\ComponentRegistrar::register( \Magento\Framework\Component\ComponentRegistrar::MODULE, 'EndPoint_MyModule' , __DIR__ );
etc/module.xml 정보 파일 생성
이 단계에서 모듈 정보 파일을 생성해야 합니다. 여기서 모듈 버전 번호를 지정할 것입니다. 먼저 app/code/EndPoint/MyModule
내부에 etc
디렉토리를 생성해야 합니다.
mkdir app/code/EndPoint/MyModule/etc
그런 다음 다음 명령줄을 사용하여 module.xml
을 만듭니다.
<?xml version="1.0"?> < config xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation = "urn:magento:framework:Module/etc/module.xsd" > < module name = "EndPoint_MyModule" setup_version = "1.0.0" > </ module > </ config >
새 모듈 설치
이제 새 모듈을 설치하고 활성화해야 합니다. 따라서 웹사이트 루트에서 다음 명령을 실행해야 합니다.
php bin/magento setup:upgrade
Magento는 모듈 이름 및 구성 업데이트 목록을 가져오고 새 모듈 EndPoint_MyModule
이 해당 목록에 나열되어야 합니다.
모듈에 사용자 지정 경로 추가
이제 작동하고 활성화된 모듈이 있지만 아직 아무 것도 하고 있지 않습니다! 모듈이 활성화되었는지 확인하는 간단한 방법은 무엇입니까? 사용자 지정 경로를 설정해 보겠습니다. 따라서 https://{our_website}/mymodule/test/helloworld
와 같은 URL에 도달하면 컨트롤러에서 사용자 지정 응답을 반환할 수 있습니다.
사용자 지정 경로를 생성하려면 몇 가지 단계가 필요합니다.
- 컨트롤러에 대한 새 디렉토리 생성
-
etc/routes.xml
파일 생성 - 컨트롤러 만들기
- 새 모듈 업그레이드
컨트롤러에 대한 새 디렉토리 생성
먼저 사용자 지정 경로에 대한 새 PHP 컨트롤러가 위치할 새 디렉터리를 만들어야 합니다. 새 디렉토리 경로는 다음과 같아야 합니다.
app/code/EndPoint/MyModule/Controller
원하는 경로를 기반으로 원하는 만큼 디렉터리 수준을 생성할 수 있습니다. 예를 들어, Index
라는 클래스를 app/code/EndPoint/MyModule/Controller
에 생성하면 이 컨트롤러로 라우팅되는 URL은 https://{our_website}/mymodule/index
("컨트롤러" 디렉토리는 무시).
app/code/EndPoint/MyModule/Controller/Test
에서 HelloWorld
라는 클래스를 생성하면 결과 URL은 https://{our_website}/mymodule/test/helloworld
.
etc/routes.xml 파일 생성
routes.xml
은 Magento에 모듈에 사용할 기본 URL을 알려줍니다. 먼저 route.xml 파일을 배치해야 하는 "프론트엔드" 디렉토리를 생성해야 합니다.
mkdir app/code/EndPoint/MyModule/etc/frontend
기본 URL이 MyModule
이 되어야 하는 경우 지정된 URL에 대한 모든 요청을 모듈 컨트롤러로 라우팅하는 XML 파일을 새 디렉토리 내부에 생성해야 합니다.
<?xml version="1.0" ?> < config xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation = "urn:magento:framework:App/etc/routes.xsd" > < router id = "standard" > < route frontName = "mymodule" id = "mymodule" > < module name = "EndPoint_MyModule" /> </ route > </ router > </ config >
컨트롤러 만들기
https://{our_website}/mymodule/test/helloworld
대한 요청에 응답하려면 기본 Controller
디렉토리와 Test
하위 디렉토리를 생성해야 합니다.
mkdir -p app/code/EndPoint/MyModule/Controller/Test
이 디렉토리에서 맞춤형 Magento 컨트롤러를 생성해야 합니다. 모든 경로 컨트롤러는 \Magento\Framework\App\Action\Action
확장해야 합니다. 또한 컨텍스트를 조상에게 전달하기 위한 public construct()
메서드와 URL이 적중될 때 호출되는 execute()
함수가 필요합니다.
<?php namespace EndPoint \ MyModule \ Controller \ Test ; class HelloWorld extends \ Magento \ Framework \ App \ Action \ Action { public function __construct ( \Magento\Framework\App\Action\Context $context ) { parent ::__construct( $context ); } public function execute () { echo "Hello world!" ; } }
새 모듈 업그레이드
이 단계에서 Magento 설정을 업그레이드해야 합니다. 그러나 구성에 종속성 주입기에서 매개변수를 가져오는 새 컨트롤러를 포함했기 때문입니다. 또한 종속성 주입 엔진(예: 팩토리, 프록시 및 인터셉터)을 컴파일해야 합니다. 마지막으로 사용자 정의 URL에서 새 콘텐츠가 제공되도록 캐시를 지워야 합니다.
php bin/magento setup:upgrade php bin/magento setup:di:compile php bin/magento cache:flush
그리고 그게 다야. 브라우저에서 /helloworld/index/index URL을 열면 다음과 같은 결과를 얻을 수 있습니다. 이는 모듈이 작동 중임을 의미합니다!
튜토리얼이 끝났습니다: Magento 사용자 정의 모듈: Magento 2에서 생성하는 단계별. 이 블로그가 귀하에게 유용한 블로그가 되기를 바랍니다. Magento에 대해 더 자세히 알고 싶다면 Magento 플랫폼 기사에서 자세한 내용을 읽을 수 있습니다. 또한 Magento 2 확장 기능과 웹사이트를 지원하는 Magento 2 테마를 확인하는 것을 잊지 마십시오.