구성 가능한 제품 및 속성 세트


18

TL; DR : 구성 가능 제품과 연관된 단순 제품이 구성 가능 제품 자체와 동일한 속성 세트에 있어야하는 이유가 있습니까? 나는 어떤 존재 의미 기술적 인 이유는? 나는 "상식적인"이유를 안다. 신발 을 판매하는 경우 색상과 크기에 따라 모든 버전 도 신발 이어야 합니다.
긴 버전 : 구성 가능한 일부 제품을 "병합"하는 작업이있었습니다. 나는 하나 이상을 만들기 위해 2 이상에서 의미합니다. 나는 제품의 양 때문에 수동으로하고 싶지 않았고 통과하고 싶지 않았습니다.$product->load(..)->set...()->save()스크립트를 실행하는 데 걸리는 시간 때문에 그래서 간단한 제품이 겹치지 않기 때문에 프로세스를 단락 시켰습니다. 크기와 색상의 독특한 조합이있었습니다. 저는 이것을 했어요:

Mage::getResourceSingleton('catalog/product_type_configurable')
    ->saveProducts($mainConfigrableProduct, $simpleProductIds);

여기서 $simpleProductIds병합해야하는 구성 가능한 제품과 관련된 모든 단순 제품 ID의 배열입니다.
이것은 대부분의 제품에서 완벽하게 작동했지만 몇 가지 문제가있었습니다.
내가 전화하면

$productIds = $product->getTypeInstance()->getUsedProductIds() 

나는 모든 간단한 제품 ID를 얻었지만 백엔드에는 그중 몇 개만 나타났습니다. 얼마 동안 파헤친 후에는 표시 가능한 유일한 것이 구성 가능한 제품과 동일한 속성 세트에있는 것임을 알았습니다. 다른 속성 세트는 첫 번째 속성 세트와 매우 유사하지만 약간의 차이가 있지만 구성 가능한 속성 (크기 및 색상)이 포함되어 있습니다.
그리고 지금 이상한 것. 프론트 엔드에서 모든 제품 (위의 코드에서 $ productIds) 또는 동일한 속성 세트의 제품 만 볼 것으로 예상되었습니다. 잘 사이에 뭔가가 있었다.

  • 관련 제품 ID 20 개-5 가지 크기, 4 가지 색상
  • 백엔드의 관련 제품 10 개-5 가지 크기, 2 가지 색상-다른 2 가지 색상 (10 개 제품)은 다른 속성 세트에있었습니다.
  • 프론트 엔드의 15 가지 조합-5 가지 크기 3 가지 색상 (???)

표시되지 않은 제품의 속성 세트를 변경하여 문제를 해결할 수 있었지만 여전히 당황했습니다.

참고 : 집에서 시도하지 마십시오. 또는 집에서 시도 할 수 있지만 라이브 서버에서는 시도 할 수 없습니다.

답변:


13

이 질문을 한 후 내가 얻은 이유입니다. 아마 당신이 기대했던 것조차 당신을 만족시키기를 바랍니다.

  1. 관리 HTML 인터페이스는 판매자가 완전히 망칠 수 없도록하기 위해 만들어졌습니다.

이러한 이유로 Magento가 프레임 워크로 제공하는 많은 기능은 사용자 인터페이스를 통해 가능하지 않습니다.
동일한 속성 세트의 제품 만 구성 가능한 단순 제품으로 선택할 수있는 이유는 스펙에있는 것이기 때문입니다.
당신이 말했듯이, 그것은 그런 식으로 의미가 있습니다.

  1. 또 다른 이유는 속성 세트의 목적을 생각하기 때문입니다. 이들이 존재하는 이유 중 하나는 요청 중에로드 및 처리해야하는 속성 및 옵션 수를 줄이는 것입니다. 이 생각을 구성 가능 항목에 적용하는 것은 상대적으로 리소스가 비싼 제품 유형이므로 의미가 있습니다.

백엔드가 이러한 방식으로 구축되었으므로 구성 가능한 프론트 엔드 로직은 다른 속성 세트의 단순 제품을 처리 할 것으로 예상되지 않았습니다.
그것이 제한이 완전히 구현되지 않은 이유입니다.

아마도 다른 속성 세트의 단순으로 구성 가능한 작업을 수행하는 것이 쉬울 것입니다. 그런 식으로 의도 된 것이 아닙니다.

나는 더 이상 묻지 않았고 어떤 코드 상호 작용이 프론트 엔드에서 이상한 결과를 낳았는지 직접 보지 않았다. 코드 설명이 아닌 구성 가능한 것과 다른 속성 세트에서 간단한 제품을 제외하기로 결정한 이유를 올바르게 이해한다면 올바르게 이해하지 못하면 아마도 중요하지 않습니다.


감사합니다 Vinai. 나는 "마음이 불고"있는 이유 때문에 내 마음에 깊이 기대하고 있었다. 재미있을 것입니다 :). 이것은 만족스러운 설명입니다. "이상한 결과"는 코드를 파낼 필요가 없습니다. 지루해지면 그렇게 할 것입니다. 여전히 DB 덤프와 동일한 결과를 재현하는 방법이 있습니다. 아마도 데이터베이스에 직접 연결했기 때문일 것입니다. 결과를 찾게되면 결과를 게시 할 것입니다.
Marius

2
Tsk tsk, @Marius-db를 만지지 마십시오;)
philwinkle

4
@ 필 윈클. 나는 우주가 폭발한다면 폭발 할 것이라는 것을 알고 있습니다. 내가 무엇을 말할 수 있습니까? 나는 위험한 생활을 좋아합니다. 내 방어에서 나는 "라이브 서버에서 이것을 시도하지 마십시오"라고 말했다.
Marius

1
아직도 내 마음이 날아 오기를 기다리는 중 ... :)
Vinai

2

우리는 가져 오기 및 내보내기를 위해 RapidFlow by Unirgy라는 확장을 사용합니다. Pro 버전의 기능 중 하나를 통해 속성 세트를 변경할 수 있습니다. 다른 하나는 CSV 가져 오기를 통한 제품 생성입니다. 때때로 우리는 구성 가능한 새로운 간단한 제품을 만들고 때로는 우연히 이러한 간단한 제품이 부모와 다른 속성 세트를 갖습니다.

Rapidflow는 이들 제품을 행복하게 가져오고 속성 세트를 변경합니다. 우리는 결과에 만족하지 않는 경향이 있습니다. 속성 세트 외부의 속성으로 구성된 구성 가능한 제품은 제품 관리자에서 렌더링되지 않으며 수리해야합니다. 앞에서 언급했듯이 부모의 속성 세트를 변경하지 않으면 자식은 부모와 제대로 연결되지 않습니다. Magento 엔터티로 존재하지만 편집 할 수 있지만 프런트 엔드 제품 페이지 또는 구성 가능한 부모의 관련 제품 목록에는 자식으로 표시되지 않습니다.

따라서 순수한 기술적 관점에서 간단한 제품이 상위 제품과 다른 속성 세트에있을 수 있습니다. 그러나이 동작은 EE에서도 지원되지 않으므로 Occam의 Razor는 Magento를 설계 할 때 Varien 개발자는 필요를 보지 못했다고 말합니다.


1
답변 (및 확장 권장 사항)에 감사드립니다. 그러나 이것은 내 질문에 대답하지 않습니다. 데이터베이스를 직접 변경하여 문제를 해결할 수 있다고 말했습니다. 나는 그렇게해서는 안된다는 것을 알고 있지만 내가하고있는 일과 데이터베이스 백업에 대해 잘 알고있었습니다. :). 이 제한이 존재하는 이유가 궁금했습니다. "Varien 개발자들이 필요를 보지 못했다"는 한, 당신이 틀렸다는 느낌이 들었습니다. 제한을 구현하는 경우 그 이유가 있어야합니다.
Marius
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.