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

마젠토 콜렉션(Collection)은 한번에 여러개의 객체(product, customer, category 등등)를 불러오는데 사용됩니다.
예를들어 카테고리 페이지에있는 모든 제품을 불러온다던지, 모든 커스토머(customer) 정보를 불러올때 유용하게 쓰입니다.

아래와 같은 php코드를 루트에 올려놓고 시험해 보세요.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
require_once "app/Mage.php";
Mage::app();

// 모든 제품 불러오기
$collection = Mage::getResourceModel('catalog/product_collection'); // 첫번째 방법
$collection = Mage::getModel('catalog/product')->getCollection(); // 두번째 방법

// 모든 제품이 필요하지는 않으므로 5개만 로드합니다.
$collection->getSelect()->limit(5);
$collection->load(); // 콜렉션을 불러옵니다.
foreach($collection AS $product) {
    // 제품의 모든 데이터 출력
    print_r($product->getData());
}

위의 코드를 실행해 보시면 제품의 모든 데이터가 출력이 됩니다.
콜렉션 객체를 불러올때 두가지 방법을 보여드렸는데 첫번째 방법과 두번째 방법의 결과가 약간은 틀린걸 확인할수 있습니다.

첫번째 방법은 최소한의 데이터만 로드함으로써 메모리의 사용을 최대한 줄이는 방법이고,
$collection = Mage::getResourceModel(‘catalog/product_collection’);

두번째 방법은 제품의 모든 데이터를 불러옴으로써 메모리 사용에 상관없이 콜렉션을 사용하는 방법입니다.
$collection = Mage::getModel(‘catalog/product’)->getCollection();

개인적으로 메모리 사용이 적은 첫번째 방법을 선호합니다.
그렇다고 필요한 제품의 데이터를 불러오지 못하는것은 아닙니다.
아래와 같이 addAttributeToSelect()을 사용해서 필요한 Attribute을 불러올수 있습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
require_once "app/Mage.php";
Mage::app();

$collection = Mage::getResourceModel('catalog/product_collection');

// 아래처럼 원하는 attribute을 콜렉션에 포함시킬수 있습니다.
$collection->addAttributeToSelect('price');
$collection->addAttributeToSelect('weight');

// 모든 제품이 필요하지는 않으므로 5개만 로드합니다.
$collection->getSelect()->limit(5);
$collection->load(); // 콜렉션을 불러옵니다.
foreach($collection AS $product) {
    // 제품의 모든 데이터 출력
    print_r($product->getData());
}

Attribute으로 불러올 데이터를 addAttributeToFilter()를 사용해서 걸러낼수도 있습니다.
예를들어 id가 10보다 커야 한다던지 sku가 ‘abcd’를 포함해야 하는경우 아래와 같이 콜렉션을 설정할수 있습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
require_once "app/Mage.php";
Mage::app();

$collection = Mage::getResourceModel('catalog/product_collection');

// 아래처럼 원하는 attribute을 콜렉션에 포함시킬수 있습니다.
// product entity_id가 10보다 커야하는경우
$collection->addAttributeToFilter('entity_id', array('gt' => 10));

// price가 $100 이하여야 하는 경우
$collection->addAttributeToFilter('price', array('lt' => 100));

// sku가 'abcd'를 포함해야 하는 경우
$collection->addAttributeToFilter('sku', array('like' => '%abcd%'));

// sku가 'zzz1'이 아니어야 하는 경우
$collection->addAttributeToFilter('sku', array('neq' => 'zzz1'));

// description이 아무것도 없는 제품을 포함하는 경우
$collection->addAttributeToFilter('description', 'null');

$collection->load(); // 콜렉션을 불러옵니다.
foreach($collection AS $product) {
    // 제품의 모든 데이터 출력
    print_r($product->getData());
}

이런식으로 addAttributeToSelect()나 addAttributeToFilter()를 사용해서 원하는 attribute을 콜렉션에 포함시키거나 필터를 적용해서 걸러낼수 있습니다.
콜렉션의 사용은 한번에 많은 객체를 불러와야 할때, 또 한번에 여러 객체의 정보를 수정해야할때 유용하게 쓰입니다.

네이버 미국,캐나다 지역 키워드광고 대행

네이버 미국,캐나다 지역 키워드광고 대행

네이버가 미주(미국,캐나다)지역으로 영역을 넓히면서(http://us.naver.com) 광고영업 또한 확장하고 있습니다.
네이버의 주된 광고상품은 크게 디스플레이 광고(배너 광고)와 키워드 광고가 있는데 이번에 제가 네이버 미주지역의 키워드 광고 대행을 맡았습니다.

미주지역에서의 네이버 광고는 크게 디스플레이광고키워드광고로 나뉠수 있는데요,
디스플레이광고는 주로 가격이 비싼 배너광고이고, 키워드광고는 키워드 검색결과내에 보여지는 좀더 저렴한(월$100부터) 광고입니다.
미주지역의 키워드 광고는 한국내 키워드광고 같은 PPC(Pay Per Click)나 CPC(Cost Per Click)이 아닌 CPM(Cost Per Milli)의 성격을 가집니다.
쉽게말해 한국에서의 키워드 광고는 사용자가 클릭하는 숫자 만큼 지불해야하지만, 미주지역의 키워드 광고는 사용자의 클릭수와 관계없이 정해진 금액으로 일정한 광고위치를 구매하는것입니다.
NHN USA Inc. 관계자에 따르면 아직 시작하는 단계이기 때문에 단순한 모델로 시작한다고 하는데요, 결국엔 미주지역의 키워드 광고도 한국의 키워드 광고처럼 PPC/CPC 모델로 바뀐다고 합니다.

미주지역 네이버 키워드 광고에 대한 자세한 내용 및 문의는 아래 링크를 참조해 주시기 바랍니다.
네이버 미주 키워드 광고 문의