업그레이드 또는 재구축: PrestaShop 9에서 오래된 모듈을 어떻게 처리해야 할까요?

귀하의 스토어가 PrestaShop 9로 이전하지만, 특정 모듈은 더 이상 지원되지 않습니다. 기존 코드를 업그레이드하는 것만으로 충분한 경우와 새로 재구축하는 것이 더 나은 선택인 경우.

Presta Support 작성 게시됨 검토됨

두 갈래로 나뉘는 오래된 모듈 카드: 위쪽 화살표가 있는 라임색 업그레이드 카드와 새 블록이 있는 점선 카드, 옆에 PrestaShop 9 배지

스토어가 PrestaShop 9로 이전하지만 특정 모듈이 더 이상 개발자에 의해 유지 관리되지 않습니다. 이 모듈을 업그레이드해야 할까요, 아니면 새로 재구축해야 할까요? 저희는 PrestaShop 1.5부터 8까지 작성된 수십 개의 모듈을 업그레이드했습니다. 이 글에서는 저희가 살펴보는 징후, 빠른 자가 진단 방법, 그리고 각 경로가 귀하의 스토어에 의미하는 바를 설명합니다.

PrestaShop 9에서 오래된 모듈이 작동하지 않는 이유

PrestaShop 9는 대부분의 버전 업데이트보다 더 큰 단계입니다. PrestaShop 1.7이나 8에서 잘 작동하던 모듈이 설치를 중단시키거나, 페이지를 깨뜨리거나, 최악의 경우 백오피스 전체를 다운시킬 수 있습니다. 원인은 거의 항상 동일합니다:

  • 더 최신 PHP 버전. PrestaShop 9에는 PHP 8.1 이상이 필요합니다. PHP 5 또는 7용으로 작성된 코드는 더 엄격한 타입, 제거된 함수, 그리고 에러로 바뀐 경고들과 마주치게 됩니다.
  • 더 최신 Symfony. PrestaShop 9는 Symfony 6.4에서 실행됩니다(PrestaShop 8은 Symfony 4.4). 이전 버전의 Symfony 서비스, 폼 또는 라우트를 사용하는 모듈은 조정이 필요합니다.
  • 제거된 코어 메서드 및 상숫값. Tools::displayPrice()나 ajaxDie() 등 수년 동안 사용이 중단(deprecated)된 함수들은 이제 사라졌습니다. 여전히 이들을 호출하는 모듈은 해당 코드가 실행되는 즉시 오류를 발생시킵니다.
  • 더 이상 제공되지 않는 라이브러리. 구형 모듈은 때때로 Guzzle 5나 SwiftMailer와 같이 PrestaShop 자체에 포함되곤 했던 라이브러리에 의존합니다. PrestaShop 9에서는 이들이 존재하지 않습니다.
  • 변경된 클래스의 오버라이드. 오버라이드는 코어 클래스의 일부를 교체합니다. 해당 클래스가 변경되면 오버라이드는 스토어를 깨뜨리거나 수정 사항을 조용히 무효화할 수 있습니다.

변경 사항에 대한 자세한 내용은 PrestaShop 9: 새로운 기능 및 PrestaShop 9.2에서 확인하세요.

업그레이드가 보통 충분한 경우

  • 모듈이 현재 PrestaShop 1.7 또는 8에 설치되어 잘 작동하는 경우;
  • 문제가 제거된 메서드 및 상숫값(Tools::displayPrice() 또는 ajaxDie() 등)인 경우;
  • 모듈이 자체 파일에 자체 로직을 유지하고 오버라이드가 거의 없는 경우;
  • 템플릿이 Smarty나 Twig를 일반적인 방식으로 사용하여 디스플레이 레이어가 그대로 유지될 수 있는 경우;
  • 모듈의 기능에 만족하며 계속 작동하기만을 원하는 경우.

이러한 수정의 대부분은 기계적인 작업입니다. 모듈은 정확히 동일한 작업을 계속 수행하고, 호출하는 코드만 업데이트됩니다. PrestaShop 1.5 및 1.6용으로 작성된 모듈도 대개 잘 업그레이드됩니다. 설정과 데이터는 그대로 유지되며 모듈의 외관과 작동 방식은 이전과 동일합니다.

재구축을 고려해야 하는 경우

  • 모듈이 PHP 내에서 많은 HTML을 생성하고 이스케이프 처리 없이 출력하는 경우: 이를 안전하게 만들려면 전체 디스플레이 레이어를 템플릿으로 옮겨야 합니다;
  • PrestaShop 9에서 메서드가 변경된 여러 코어 클래스를 오버라이드하는 경우;
  • 업그레이드되지 않은 다른 모듈(예: 결제 베이스 모듈)에 의존하는 경우;
  • PrestaShop 9가 더 이상 제공하지 않는 Guzzle 5 또는 SwiftMailer와 같은 오래된 라이브러리를 번들로 포함하는 경우;
  • 매우 크고 PrestaShop Validator도 통과해야 하는 경우;
  • 어차피 새로운 기능을 원하므로 코드의 많은 부분을 무조건 변경해야 하는 경우.

재구축은 오래된 모듈의 실패를 의미하지 않습니다. 때로는 코드가 수년에 걸쳐 성장해 온 방식 때문에 깔끔한 업그레이드가 깨끗한 설계로부터 새로 시작하는 것보다 더 많은 작업을 필요로 하게 만들기 때문입니다.

빠른 자가 진단

확인되는 사항 나타내는 바
모듈이 PrestaShop 8에서 작동하고 9에서만 실패함 업그레이드
오류가 제거된 메서드나 클래스를 언급함 업그레이드
모듈에 오버라이드가 없거나 거의 없음 업그레이드
모듈 페이지가 PHP의 HTML 문자열로 구축됨 재구축 또는 대규모 업그레이드
코어 클래스의 오버라이드가 여러 개 있음 재구축 또는 대규모 업그레이드
PrestaShop 9 버전이 없는 다른 모듈이 필요함 해당 모듈을 먼저 확인하세요
모듈의 기능을 변경하고 싶음 재구축

이는 규칙이 아닌 징후입니다. 모듈이 재구축 항목에 해당하더라도 문제없이 업그레이드될 수 있습니다. 그렇기 때문에 가격을 안내해 드리기 전에 테스트를 진행합니다.

결정하기 전에 확인해야 할 사항

  1. 개발자에게 먼저 문의하세요. 모듈 페이지나 PrestaShop Addons를 확인해 보세요. PrestaShop 9용 버전이 이미 존재할 수 있습니다.
  2. 모듈이 귀하를 위해 수행하는 기능을 나열하세요. 실제로 어떤 기능을 사용하시나요? 재구축을 통해 아무도 필요로 하지 않는 기능을 제외할 수 있습니다.
  3. 종속성을 확인하세요. 모듈이 다른 모듈, 테마 기능 또는 외부 서비스가 필요한가요?
  4. 오버라이드를 확인하세요. 백오피스의 고급 매개변수 > 정보에서 오버라이드가 활성화되어 있는지 확인할 수 있습니다.
  5. 스토어 업그레이드와 함께 계획하세요. 전체 스토어가 PrestaShop 9로 이전하는 경우, 복사본에서 모든 모듈을 함께 테스트하세요. 저희가 이를 어떻게 처리하는지는 PrestaShop 업그레이드 서비스에서 확인하실 수 있습니다.

당사에서 수행하는 작업

모듈을 업로드해 주시면, 저희는 먼저 격리된 PrestaShop 9.2 숍에서 테스트를 진행하고 발견된 내용을 바탕으로 견적을 안내해 드립니다. 모듈을 재구축하는 편이 더 나은 경우 결제하시기 전에 미리 알려드립니다. 모듈을 업그레이드하세요 또는 저희에게 확인을 요청하세요.

  • PrestaShop 9
  • 모듈
  • 업그레이드