Magento E-Commerce Platform – 마젠토 플랫폼

마젠토(Magento E-Commerce Software and Platform)란?

강력한 Zend Framework에 기반한 오픈소스 플랫폼인 마젠토는 현재 가장 인기있는 쇼핑몰 플랫폼으로써 전세계적으로 많은 사람들의 사랑을 받고 있습니다.
마젠토는 2012년 10월 기준으로 지구상에 존재하는 모든 쇼핑몰 사이트 플랫폼의 23%를 차지하는것으로 추정되고 있으며 지금도 지속적으로 그 숫자는 늘어나고 있습니다.
오픈소스인 만큼 누구나 무료(커뮤니티 버전)로 사용할수 있다는 것이 큰 장점이며, 개발자들이 여러가지 기능을 더할수 있음은 물론이고 기존의 기능을 손쉽게 수정할 수 있도록 모든것이 모듈화 되어있어 쇼핑몰을 수정하고 개편하는데 상당히 수월하도록 만들어져 있습니다.
게다가 쇼핑몰에서 구현할수 있는 거의 모든 기능이 기본으로 탑재되어있기 때문에 쇼핑몰 운영자에겐 손쉬운 쇼핑몰 운영환경을 제공하고 있습니다.

마케팅 기능 및 도구
복잡한 설정이 가능한 쿠폰, 뉴스레터, 투표기능, 랜딩페이지도구, 추천 품목, 커스토머 그룹별 가격 설정 등등의 강력한 마케팅 도구는 쇼핑몰 운영의 질을 높여줍니다.

검색엔진 최적화
검색엔진 친화적 URL의 세팅, 메타태그 작성, 구글 사이트맵, 인기 검색어등등 마젠토의 검색엔진 최적화 기능은 타 쇼핑몰 플랫폼 보다 우월합니다.

사이트 관리
하나의 마젠토로 서로 다른 도메인에 있는 여러개의 쇼핑몰 운영이 가능하며, 웹서비스 API는 인벤토리나 POS 시스템 같은 다른 시스템과의 연동을 가능하게 해줍니다.

카탈로그 및 제품 관리
제품의 인벤토리 관리는 물론 제품의 import와 export가 가능하며 Google Base와의 연동 그리고 디지털 제품의 판매까지 가능합니다. 또한 사이트 내의 제품비교가 가능하며 제품 리뷰또한 기본적으로 갖추고 있습니다.

Mobile Site
스마트폰에 최적화된 모바일 사이트를 제공함으로써 쇼핑을 더욱 손쉽게 만들어 줍니다.

다국적 언어의 쇼핑몰
사이트를 원하는 언어로 손쉽게 바꿀수 있으며, 제품판매, 배송 그리고 결제를 국가별로 설정할수 있습니다.

손쉬운 배송과 결제 시스템
미국의 대표적인 Authorize.net이나 Paypal같은 Payment Gateway 모듈이 기본으로 장착되어 있어 손쉬운 결제가 가능하며 배송또한 Fedex, UPS, USPS 와의 연동이 쉽게 이루어집니다.

위에 열거된 내용은 마젠토의 대표적인 기능들이구요, 마젠토는 그 밖에 훨씬 더 많은 기능을 가지고 있습니다.

마젠토 에디션
마젠토는 무료버전인 커뮤니티 에디션(Community Edition)과 유료버전인 엔터프라이즈 에디션(Enterprise Edition)으로 나뉘는데 유료에디션은 무료에디션보다 훨씬더 많은 고급기능을 가지고 있습니다.
자세한 내용은 마젠토 에디션 비교를 참조하세요.

마젠토 사용자 가이드 및 기타 유용한 자료
http://www.magentocommerce.com/resources/magento-user-guide
영문자료라서 불편하신 분들도 계시겠지만, 마젠토 관련해서 거의 기본적인 모든것들을 포함하고 있습니다.

마젠토 자격증

Magento Certified Developer Plus

  • Magento Certified Developer Plus
  • Magento Certified Developer
  • Magento Certified Fronend Developer

마젠토의 인기와 함께 마젠토는 마젠토 개발자라는 새로운 직업군을 만들어 내고 있습니다.
초창기에는 마젠토 개발자를 구하기가 힘들었는데 요즘은 마젠토 개발자들이 꽤 늘어난 상태입니다.
마젠토는 다른 쇼핑몰 플랫폼과 다르게 플랫폼 자체가 좀 더 복잡하고 좀 더 실력있는 개발자를 요구하기 때문에 이제는 검증된 마젠토 개발자를 선별하기 위해 마젠토 자격증제도를 만들었습니다.
자격증에는 Magento Certified Developer Plus(MCDP)와 Magento Certified Developer(MCD) 두가지가 있으며, 뒤에 ‘PLUS’가 붙는 MCDP가 더 고급 레벨의 자격증입니다.
2013년 부터는 Magento Certified Frontend Developer 자격증이 새로 생겼습니다.
MCDP나 MCP 보다는 낮은 단계로써 기능적인 부분보다는 Theme 제작이나 레이아웃 변경 및 마젠토의 설정등에 대한 시험이구요, 프로그래머 보다는 디자인과 개발을 병행하는 사람들을 위한 자격증 입니다.
마젠토 자격증을 참조하시구요, 마젠토 공인 개발자 디렉토리또한 참조하시기 바랍니다.
제 마젠토 자격증(MCDP) 링크입니다.

저는 개발자이므로 마젠토 사용자(쇼핑몰 운영자)의 입장보다는 개발자의 입장에서 블로그를 업데이트 하고 있습니다.
마젠토 관련 궁금한점 있으시면 연락주세요. 마젠토 사용법 관련 질문은 답장 드리지 않습니다.
>> Contact <<

>> 마젠토 블로그 전체 포스팅

[mage_cat_posts][/mage_cat_posts]

마젠토의 주문 상태 state vs status 비교 및 차이점

마젠토 개발을 하다보면 주문관련 데이터베이스 테이블에(sales_flat_order) 주문의 상태를 나타내는 state과 status 필드를 발견할수 있습니다. 단어 자체로만 봤을떄 영어로도 이 두개의 의미는 별반 차이가 없구요 처음 접하거나 차이점을 잘 모르는 사람들에게 혼란만 가중시킬 뿐입니다. 하지만 같은 의미를 가진 이 두가지는 엄연히 용도가 다릅니다. state은 마젠토 데이터베이스 내에서 주문상태를 나타내는 attribute이구요, new, processing, complete, holded, closed, canceled, […]

마젠토 _construct() vs __construct()

PHP에서 클래스의 생성자(또는 constructor) “__construct()”는 클래스의 객체 생성시 내부에서 자동으로 호출되며 기본적인 속성들이 초기화 되는 과정을 포함하고 있는 멤버함수 입니다. PHP5에서 생성자는 반드시 필요한 함수는 아니지만 객체가 생성될때 변수가 필요하거나 멤버변수의 초기화가 필요하다면 생성자가 있어야 합니다. 아래의 코드는 PHP 생성자의 예제입니다. 123456789101112131415161718<?php class Product {     private $_sku;     public __construct($sku)     […]

Dependency Injection

마젠토2 – 의존성 주입(Dependency Injection) 디자인 패턴

예를들어 A객체 내에서 B객체가 생성된다면 A객체는 B객체에 의존성을 갖게 됩니다. B객체 생성자의 소스코드가 수정된다면 A객체의 소스코드 또한 바뀌어야 하기 때문에 A객체는 B객체에 의존성을 갖게 되는 것입니다. 의존성 주입(Dependency Injection, DI)은 이러한 객체간의 의존성을 제거하는 디자인 패턴입니다. 쉽게 말해서 A객체 내에 B객체가 필요하다면 A객체 내에서 B객체를 생성시키지 않고 외부에서 B객체를 생성시킨후 A객체 안에 주입시키는 것이 의존성 […]

커스텀 세션

마젠토 커스텀 세션

마젠토의 기본적인 세션 사용법은 마젠토 세션 사용법에서 간략하게 적어놓았는데요, 지금 보니 지난 몇년전에 작성한 글이라 설명이 좀 부족한듯 해서 조금더 자세한 설명과 나아가 마젠토에 기본적으로 있는 세션 말고 커스텀 세션을 만드는 방법을 설명하도록 하겠습니다. 마젠토에 있는 기본적인 세션의 종류는 Core, Customer, Admin, Checkout 이렇게 네가지 종류가 있구요, 세션을 사용하려면 아래와 같은 코드를 사용하면 됩니다. 1234567891011121314// […]

소수점 두자리 이상 사용

마젠토 제품가격에 소수점 두자리 이상 사용방법

마젠토는 기본적으로 제품가격, 주문합계(total, subtotal) 등등 모든 종류의 금액 관련 데이터베이스 필드에 decimal(12, 4)를 사용하므로 소수점 4자리 숫자까지 사용이 가능합니다. 하지만 코어모델에서 기본 소수점을 모두 2자리로 설정되어 있기 때문에 계산도 소수점 2자리로 계산되고 사이트에 보여지는 부분도 소수점 2자리 까지만 보여지게 되어있습니다. 제가 얼마전에 옵션과 구매수량에 따라서 제품가격이 천차만별로 바뀌는 모듈을 개발하게 되었는데 어떤 제품은 개당 […]

Magento 2 Service Contracts

마젠토 2 미리보기

“마젠토 2″가 개발중에 있다는 얘기는 지속적으로 나왔고 언제쯤에나 정식 버전이 나오려나 했는데, 결국 2015년 4분기 쯤에는 누구나 “마젠토 2” 커뮤니티 버전을 사용할수 있을것 같습니다. 지난주에 있었던 Magento 2 Developer Beta Webinar에 참여해서 베타버전에 대한 간략한 설명을 들었는데요, 여전히 개발중에 있고 오픈소스의 장점을 살려 많은 개발자들의 참여를 통해 발전시켜 나가고 싶다는 이야기를 들었습니다. 오픈소스 현재 개발자를 위한 […]

콜렉션과 페이지네이션

커스텀 콜렉션에 페이지네이션(pagination) 적용하기

마젠토의 콜렉션(Collection)은 객체의 데이터가 엔트리 형식으로 저장되어있을때 여러 데이터를 한번에 불러오는데 유용하게 사용됩니다. 제품이나 카테고리, 주문정보 및 손님 데이터 처럼 객체의 많은 수의 엔트리가 데이터 베이스에 저장되어 있을경우, 콜렉션을 이용하면 한번에 모든 엔트리 또는 필터를 사용해서 필요한 엔트리만 불러오는데 상당히 유용하게 사용됩니다. 기본적인 콜렉션 사용법은 마젠토 콜렉션(Collection) 사용하기를 참조해 주세요. 마젠토에 이미 존재하는 객체(product, category, […]

캐쉬 관리 (Cache Storage Management)

초보자를 위한 마젠토의 속도를 높이는 3가지 방법

지금까지 수많은 클라이언트들을 만나고 이야기 해봤는데, 저의 경험상 마젠토 사이트를 운영하시는 분들이 가지고 있는 공통적인 문제는 바로 사이트의 페이지 로딩 속도 였습니다. 좋은 호스팅을 가지고 계신분들이 아닌이상 저렴한 호스팅에서는 속도가 항상 관건입니다. 마젠토의 장점중 하나인 확장성(Scalability)과 널려있는 3rd party 모듈들은 운영자로 하여금 여러가지를 다른 시도를 해볼수 있도록 하는데, 이것은 모듈/익스텐션 설치로 이어지고, 곧 더 많은 […]

마젠토의 관리자 페이지 URL 변경방법

기본적으로 마젠토의 관리자 페이지의 주소는 http://magentoUrl/admin 입니다. 원하던 원하지 않던 저는 마젠토 관리자분들께 이 주소를 바꾸라고 권해드립니다. 간혹 있을수 있는 해커나 비정상적인 로그인을 막기위함인데요, 보안을 위해서라도 바꾸는것이 좋습니다. 일단 /app/etc/local.xml 을 열어보면 아래와 비슷한 내용이 있습니다. 123456789101112131415161718192021222324252627282930313233343536373839<config>     <global>         <install>             <date><![CDATA[Fri, 18 JUL 2014 […]

마젠토 사이트 구축 – 개발자/개발업체 구하기

마젠토 사이트를 구축하기전에 고려해야할 사항 미국에서 마젠토 개발자/업체 구하기 지난 포스팅에서는 마젠토로 사이트를 구축하기전에 마젠토에 대한 이해를 돕기위해 각각의 에디션에 대해서 대략적으로 적어놓았구요, 커뮤니티 에디션이나 엔터프라이즈 에디션을 사용할 분들을 위해 개발자/개발업체를 구할때 알아두면 좋을 만한 팁을 몇가지 적어봅니다. “마젠토 고” 에디션을 사용하실 분들은 개발자/개발업체 없이도 충분히 사이트 셋업/유지/관리/보수를 할수 있음을 알려드립니다. 마젠토로 사이트를 제작하는데 있어서 […]

마젠토 사이트 구축 - 마젠토란?

마젠토 사이트 구축 – 마젠토(Magento)란?

마젠토 사이트를 구축하기전에 고려해야할 사항 각자에게 맞는 마젠토 에디션 선택 각각 마젠토 에디션의 장단점 마젠토의 인기가 높아짐에 따라서 온라인 쇼핑몰을 마젠토로 제작하려는 사람들이 점점 늘어나고 있고 그러한 수요에 따라 마젠토 관련 정보도 늘고 개발자들도 늘어나고 있습니다. 마젠토가 좋은 온라인 쇼핑몰 플랫폼이기는 하지만 제작과정이나 유지 및 보수가 누구에게나 쉽지만은 않습니다. 어떤 사람들은 웹개발 경험이 있어서 직접 […]

마젠토의 수동 인덱싱 제어

마젠토의 인덱싱 기능은 마젠토의 전체적인 성능을 향상시키는데 큰 역할을 합니다. 인덱싱을 사용함으로써 얻을수 있는 장점은 제품의 데이터와 검색 인덱스는 물론, 속성(attribute), 가격(price), URL 규칙(url rewrite), 재고관리(stock) 까지 많은 부분을 미리 간단한 형식의 데이터로 변환시켜 놓음으로써 페이지의 로딩속도와 전체적인 퍼포먼스를 향상시켜 줍니다. 이러한 인덱스 기능은 관리자 모드에서 손쉽게 조절할수 있지만, 개발자로써 모듈개발이나 마젠토의 기능을 수정할때 이러한 […]

마젠토의 MVC 아키텍쳐

마젠토의 MVC 아키텍쳐: MVC 아키텍쳐란? 마젠토는 Zend Framework에 기반해 만들어졌기 때문에 MVC(Model – View – Controller) 아키텍쳐를 사용하고 있습니다. MVC 아키텍쳐는 시스템의 구조를 모델, 뷰, 컨트롤러로 구분 짓습니다. 1. 모델(Model) 모델은 직접적으로 데이터에 접근하고 그 데이터를 사용해서 연산과 처리를 담당합니다. 사용자 인터페이스와는 전혀 무관합니다. 2. 뷰(View) 뷰는 모델과 컨트롤러를 통해 나온 결과물을 렌더링해주는 사용자 인터페이스(UI)를 […]

마젠토에서 Store Credit을 더하거나 빼는 방법

Customer Balance/Store Credit은 마젠토 엔터프라이즈 버전에 있는 기능입니다. Customer Balance나 Store Credit은 마젠토에서 서로 같은 의미로 사용됩니다. 마젠토의 관리자 모드에서는 “Store Credit”이라는 어휘를 사용하지만, 마젠토 코어 코드에서는 “Customer Balance”라는 어휘를 사용합니다. 왜 그렇게 헷갈리게 해놓았는지는 모르지만.. 뭐.. 이유가 있겠죠. 기본적으로 이 기능은 손님이 계정에 스토어 크레딧을 저장해 두었다가 나중에 체크아웃할때 사용할수 있는 기능이며, 사이트 운영자가 […]

마젠토 region 과 country 코드

마젠토에는 국가별 코드와 이름이 이미 데이터베이스에 기본적으로 저장되어있고, 미국같은 경우는 state 코드/이름 또한 저장되어있습니다. 간혹 개발자가 커스텀으로 모듈이나 템플릿을 만드는 도중 마젠토 데이터베이스에 저장되어있는 국가(country)나 state(region)을 불러내야 할 경우가 있는 있는데, 아마도 아래 코드가 도움이 되리라 생각됩니다. 123456789101112131415<?php // 국가의 콜렉션 로딩 $countryCollection = Mage::getModel(’directory/country_api’)->items(); // 위의 콜렉션을 select dropdown box에 넣어야 할 경우 ?> […]

마젠토에 category attribute 생성 및 삭제

마젠토는 EAV(Entity Attribute Value) 모델을 사용함으로써 각각의 객체모델에 attribute과 attribute의 값어치(value)를 생성시킬수 있습니다. 예를들어 product model 같은경우 마젠토 admin에서 새로운 product attribute을 생성시킬수 있습니다. 그리고 그 attribute의 갯수는 얼마든지 무한대로 늘일수 있습니다. 하지만 category model의 경우 마젠토 admin에서 새로운 category attribute을 생성시키는 기능이 없기 때문에 새로운 attribute을 카테고리에 더하고 싶어도 할수가 없습니다. 사실 마젠토 admin에서 […]

마젠토 콜렉션(Collection) 사용하기

마젠토 콜렉션(Collection)은 한번에 여러개의 객체(product, customer, category 등등)를 불러오는데 사용됩니다. 예를들어 카테고리 페이지에있는 모든 제품을 불러온다던지, 모든 커스토머(customer) 정보를 불러올때 유용하게 쓰입니다. 아래와 같은 php코드를 루트에 올려놓고 시험해 보세요. 1234567891011121314require_once "app/Mage.php"; Mage::app(); // 모든 제품 불러오기 $collection = Mage::getResourceModel(’catalog/product_collection’); // 첫번째 방법 $collection = Mage::getModel(’catalog/product’)->getCollection(); // 두번째 방법 // 모든 제품이 필요하지는 않으므로 5개만 로드합니다. […]

Magento Certified Developer PLUS

Magento Certified Developer PLUS

Magento Certified Developer PLUS Magento Certified Developer Plus I just passed the Magento Certified Developer Plus exam. It’s wasn’t easy but I would say it wasn’t too difficult either. Probably that’s because I’ve seen a lot of postings and comments on other websites and blogs about Certified Developer PLUS exam being too intense, and to […]

마젠토의 싱글턴 패턴

마젠토의 싱글턴 패턴 getSingleton()과 getModel()의 차이점과 사용법 싱글턴 패턴은 하나의 클래스에서 하나의 인스턴스만을 생성하도록 하는 소프트웨어 디자인 패턴중의 하나입니다. 마젠토에서 이런 싱글턴 패턴의 사용은 객체의 인스턴스 생성 남용을 막으려는 방법이고 결과적으로 메모리의 사용을 최소화하기 위한 방책입니다. 예를 들자면 데이터베이스 인스턴스가 가장 대표적인 예입니다. 페이지가 로딩되면서 여러번의 데이터베이스 사용이 필요할수 있지만 데이터베이스 연결 인스턴스는 하나면 족합니다. […]

마젠토의 장점과 단점

마젠토의 장단점 비교 마젠토의 무한한 확장성은 커다란 장점, 단점은 고성능 호스팅 환경 요구 마젠토가 현존하는 최고의 쇼핑몰 플랫폼인것은 알만한 사람들은 이미 다 알고 있습니다. 저도 처음 마젠토를 접했던 2008년에는 긴가민가 했는데 여러 플랫폼을 직접 접해본 결과 확실히 마젠토가 우월함을 느낄수 있었습니다. 다른 쇼핑몰 플랫폼들은 예전부터 널리 사용되어 왔지만 2007년에 나와 2008년부터 유명세를 타기 시작한 마젠토는 […]

마젠토 객체의 데이터 불러오기

마젠토 getModel()과 getData()를 사용한 객체의 데이터 불러오는 방법 마젠토 객체의 데이터를 불러오는 방법입니다. getModel()과 getData()를 사용하며 마젠토의 객체를 불러오는 방식은 대부분 동일합니다. 마젠토에서는 객체를 불러올때 대체로 getModel() method를 사용하고 불러온 객체의 데이터를 가져올때 getData() method를 사용합니다. method의 이름이 무엇을 할때 쓰이는지 이미 알려주듯이 사용법 또한 그리 어렵지 않습니다. 이번 포스팅에서는 객체를 불러와 객체를 아이디로 로드하는 […]

마젠토 제품을 Google Base에 등록하기

구글 베이스(Google Base)에 제품등록을 하면 Google Product Search나 Google Shopping에서 제품이 검색됩니다. 특히나 미국을 제품판매의 타겟으로 두고 계신 분들이라면 거의 필수라고 말할수 있습니다. 마젠토는 이 구글 베이스에 제품등록을 아주 쉽게 하게끔 만들어 졌습니다. [learn_more caption=”구글베이스에 제품 등록” state=”open”] 1. [구글베이스] Google Base에 계정을 만드세요. 2. [마젠토] 마젠토 관리자로 로그인 하셔서 System > Configuration > Google […]

마젠토 세션 사용법

기본적인 마젠토 세션 변수 사용방법: 변수를 만들어 세션에 저장하거나 저장해놓은 값을 사용하고자 할때엔 아래와 같이 변수 이름앞에 set또는 get을 사용하시면 됩니다. 123456789<?php // 지정하기 Mage::getSingleton(’core/session’)->setMyData(’my data’); // 가져오기 $myData = Mage::getSingleton(’core/session’)->getMyData(); echo $myData; // prints ‘my data’ // 지우기 Mage::getSingleton(’core/session’)->setMyData(); ?> 마젠토 외부에서 관리자 세션(Admin Session) 불러오기 12345678require_once "app/Mage.php"; Mage::app(); Mage::getSingleton(’core/session’, array(’name’=>’adminhtml’)); $session = Mage::getSingleton(’admin/session’); […]