쇼핑객이 봐서는 안 되는 라인을 숨기고, 어색하게 읽히는 라인의 이름을 바꾸고, 모든 것이 렌더링되는 순서를 제어하세요. 카트에 실제로 들어 있는 내용은 전혀 건드리지 않아요.
이 방법은 CSS나 style.display = 'none'으로 카트 요소를 숨기던 예전 패턴을 대체해요. 라인 트랜스폼은 카트가 렌더링될 때마다 적용되므로 업데이트, 재렌더링, 드로어 재오픈 후에도 유지돼요.
숨기기는 제거가 아니에요. 숨겨진 라인은 쇼핑객의 카트에 남아 있고, 총액에도 포함되며, 체크아웃까지 이어져요; 단지 드로어에 그려지지 않을 뿐이에요. 다만 getCart().items와 itemCount에서는 빠지므로 여러분의 코드도 더 이상 보지 못해요. 정말로 없애고 싶다면 removeItem을 사용하세요.
숨길 만한 일반적인 것들:
라인에서 사용할 수 있는 네 가지 setter:
comparator는 Array.prototype.sort가 기대하는 것과 동일한 형태이며, 숨기기와 이름 변경 이후에 실행돼요:
관심 없는 쌍에는 0을 반환하세요. comparator는 타이브레이커로 조합되므로, 처음으로 0이 아닌 값을 반환하는 것이 그 쌍을 결정하고, 0을 반환하면 순서를 강제하지 않고 다음 comparator에 결정을 넘겨요.
라인 트랜스폼은 카트 라인에 작동해요. 국가, 마켓 또는 통화별로 다른 블록 설정을 표시하려면(예: 다른 Rewards 티어) 카트 에디터의 조건을 사용하세요. 코드가 필요 없고 카트 리디자인 후에도 유지돼요. 카트 총액과 카트 내용물은 에디터 조건 유형이 아니에요.
규칙이 조건으로 표현할 수 없는 것일 때(카트 내 상품 ID, 커스텀 총액 등) SDK를 사용하세요. 그런 경우 shadow root에서 공개 cart-external-* 클래스를 쿼리하세요:
이 코드는 각 렌더링 이후에 실행되므로, 코드가 숨기기 전에 블록이 잠깐 나타났다 사라질 수 있어요. 조건부 렌더링에는 이런 문제가 없으므로, 가능한 경우 항상 그쪽을 선호하세요.
- 트랜스폼은 설정 호출이에요. Initialization 스크립트 맨 위에서 등록하세요;
ready()가 필요 없어요.
- 모든 트랜스폼이 실행돼요. 여러분의 트랜스폼은 다른 앱이 등록한 것과 조합돼요. 다른 앱의 것을 대체할 수 없고, 그쪽에서도 여러분의 것을 제거할 수 없어요.
- 트랜스폼은 가격, 수량, 아이덴티티를 변경할 수 없어요. 렌더링되는 내용만 변경해요. 실제 변경에는 액션을 사용하세요.
- throw하는 트랜스폼은 조용히 건너뛰어요. 나머지는 계속 실행돼요. 개발 중에는
aftersellCartDebugEvents를 확인하세요.
registerLineTransform은 등록 해제 함수를 반환하므로, 나중에 되돌려야 할 때 사용하세요.