스토어가 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 버전이 없는 다른 모듈이 필요함 | 해당 모듈을 먼저 확인하세요 |
| 모듈의 기능을 변경하고 싶음 | 재구축 |
이는 규칙이 아닌 징후입니다. 모듈이 재구축 항목에 해당하더라도 문제없이 업그레이드될 수 있습니다. 그렇기 때문에 가격을 안내해 드리기 전에 테스트를 진행합니다.
결정하기 전에 확인해야 할 사항
- 개발자에게 먼저 문의하세요. 모듈 페이지나 PrestaShop Addons를 확인해 보세요. PrestaShop 9용 버전이 이미 존재할 수 있습니다.
- 모듈이 귀하를 위해 수행하는 기능을 나열하세요. 실제로 어떤 기능을 사용하시나요? 재구축을 통해 아무도 필요로 하지 않는 기능을 제외할 수 있습니다.
- 종속성을 확인하세요. 모듈이 다른 모듈, 테마 기능 또는 외부 서비스가 필요한가요?
- 오버라이드를 확인하세요. 백오피스의 고급 매개변수 > 정보에서 오버라이드가 활성화되어 있는지 확인할 수 있습니다.
- 스토어 업그레이드와 함께 계획하세요. 전체 스토어가 PrestaShop 9로 이전하는 경우, 복사본에서 모든 모듈을 함께 테스트하세요. 저희가 이를 어떻게 처리하는지는 PrestaShop 업그레이드 서비스에서 확인하실 수 있습니다.
당사에서 수행하는 작업
모듈을 업로드해 주시면, 저희는 먼저 격리된 PrestaShop 9.2 숍에서 테스트를 진행하고 발견된 내용을 바탕으로 견적을 안내해 드립니다. 모듈을 재구축하는 편이 더 나은 경우 결제하시기 전에 미리 알려드립니다. 모듈을 업그레이드하세요 또는 저희에게 확인을 요청하세요.