내가 개발 한 확장과 인터페이스하는 타사 라이브러리의 .php, .js, .html, .css 파일을 어디에 두어야합니까?


10

예를 들어 오픈 소스 차트 패키지 또는 이미지 갤러리 또는 확장 기능 자체에 포함되지 않은 모든 항목과 인터페이스하는 Magento 확장 프로그램을 개발하고 싶다고 가정 해 보겠습니다. 확장 프로그램과 별도로 다운로드하면 타사 lib는 모든 .php, .js, .html 및 .css와 함께 하나의 .zip으로 제공됩니다.

타사 확장 프로그램을 타사 라이브러리와 함께 설치하려는 가난한 소유자에게 배치하고 원래의 타사 .zip을 분리하여 .js를 / js에, .php를 / lib에 넣으십시오. / skin 등의 CSS?

또는 다운로드가있는 그대로 압축을 풀고 수행 할 수있는 타사 .zip에 대해 일반적으로 허용되는 "덤핑 그라운드"가 있습니까?

답변:


6

포함하고있는 코드에 따라이 질문에 대한 정답이 하나인지 잘 모르겠습니다.

써드 파티 PHP 라이브러리 (예 : 외부 API 용 SDK)를 포함하려면 Magento 프로젝트의 / lib 디렉토리에 넣어야하며이를 사용하는 확장 프로그램에 포함시킬 수 있습니다.

그러나 예제로 js와 css를 사용하고 있습니다. 확장에서 타사의 js를 사용하여 코드를 출력하는 경우 (예 : 캔버스 차트를 렌더링하는 일부 js) / js 디렉토리에 배치되어 확장에 포함될 수 있습니다. CSS의 경우 기본 / 기본 테마 및 스킨 디렉토리에 추가해야합니다.

불행히도 Magento 1 확장 시스템은 파일이 단일 디렉토리에 포함되지 않고 전체 프로젝트를 통해 확산되므로 이러한 종류의 것을 쉽게 배포 할 수 없습니다. Magento Composer InstallerModman 과 같은 도구가 다소 도움이됩니다.


4

확장 프로그램과 별도로 다운로드하면 타사 확장 프로그램은 자체의 단일 .zip 파일과 .php, .js, .html 및 .css 파일과 함께 제공됩니다.

마 젠토 1에서는 애매 모호 할 수 있지만 항상 소스 자체에서 분리 된 관습을 좋아했습니다.

번들로 사용할 수있는 타사 라이브러리 라이센스가 제공되는 경우 별도의 하위 라이브러리를 언팩하는 기본 메커니즘이 없기 때문에이를 풀고 확장 프로그램과 함께 다시 패키징해야합니다 (잘못되었을 수 있습니다).

이러한 자산의 위치는 파일의 유형과 내부 조직에 따라 다릅니다. 순수 JS 라이브러리는 아래에 있어야합니다 ./js/. 서버 측에서 실행되는 파일은 아래에 속하며, 아래의 ./lib/모든 PHP 클래스 ./lib/는 (본질적으로 PSR-0) 자동로드 체계 (Zend Framework 1 자동로드 규칙 참조)에 의해 자동로드 될 수 있습니다. ./lib/클라이언트를 통해 (아래 참조) 액세스 할 수있는 것은 없습니다 ./lib/.htaccess.


고마워 벤. 귀하의 답변은 이해가되지만 사이트 소유자는 인터페이스에 연결된 Magento 확장과 상관없이 타사 라이브러리를 최신 버전으로 쉽게 업그레이드 할 수 없습니다. 모든 것이 어떻게 연결되어 있는지 이해하지 않으면 올바른 비트에 모든 비트를 넣는 것이 고통입니다. 이것은 확장 버전과 타사 라이브러리 버전이 일관성을 유지한다는 점에서 축복이지만, 타사 라이브러리의 새 버전이 이전 버전과의 호환성을 계속 유지하면서 버그 수정 및 새로운 기능을 제공 할 때 어려움이 있습니다.
fris

1
"이것은 확장 버전과 타사 라이브러리가 일관성을 유지한다는 의미에서 축복입니다 ..." 이것이 티켓입니다! 그들의 변화는 당신의 변화입니다. 이것은 Composer 덕분에 Magento 2에서 조금 더 쉽습니다.
benmarks

1

따라서 확장을 만들고 싶고 확장을 위해 외부 리소스 / 패키지를 사용하고 있습니다. 내 생각에, 확장에 사용한 패키지가 무엇이든 확장은 Magento 모범 사례를 따라야합니다. 즉, 모든 js, css 이미지를 외부 자원과 분리해야하며 base\default테마 패키지 디렉토리에 배치해야합니다 .

즉, 타사 패키지 리소스를 배치하기위한 고유 한 위치가 없습니다. 궁극적으로 멋진 확장을 제공 할 때 확장과 관련된 모든 js, css 및 이미지는 다른 개발자가 일반적으로 보려고하는 장소에 보관해야하며 거의 모든 경우 base/default테마 패키지입니다.

한마디로

모든 확장 j가 있어야합니다.

skin\frontent\base\default\js\[your_extension]\[all_of_your_js_files]
skin\frontent\base\default\css\[your_extension]\[all_of_your_css_files]
skin\frontent\base\default\images\[your_extension]\[all_of_your_images]

//for third parties, you can create an inner directory, to specify it
skin\frontent\base\default\js\[your_extension]\[your_external_resource]\[resource_js_files]
skin\frontent\base\default\css\[your_extension]\[your_external_resource]\[resource_css_files]
skin\frontent\base\default\images\[your_extension]\[your_external_resource]\[resource_image_files]

이렇게하면 다른 개발자가 확장 프로그램의 js, css 및 이미지 (외부 리소스도)를 매우 쉽게 찾을 수 있습니다. 확장명 디렉토리 내부의 외부 자원 파일을 표시하기 위해 추가 서브 디렉토리를 사용하고 있으므로 확장명이 일부 써드 파티 패키지에 의존하고 있다는 사실을 다른 사람들에게 알릴 수 있습니다.

따라서 다른 개발자가 쉽게 종속성을 찾을 수 있도록 외부 패키지를 분리하여 확장의 일부로 만드는 것이 좋습니다. :-)

편집-1

사이트 소유자에게 확장 부담을주지 않아야합니다. 확장을 올바르게 맞추면 이러한 어려움을 피할 수 있습니다. 즉, 모든 관련 파일을 지정된 디렉토리 위치에 저장하면 모든 사이트 소유자가해야 할 일은 확장명을 잡고 응용 프로그램 루트 디렉토리에서 확장명을 병합하는 것입니다. 즉, 확장 장치를 올바르게 정렬하십시오. 이렇게 보일 것입니다.

/app
|_____code\community\Namespace\Module\...
|_____design
|        |_____frontend\base\defalt\...
|        |_____adminhtml\base\defalt\...

/skin
|_____frontend\base\default\js|css|images\[your_extension]\all_theme_related_files
|_____frontend\base\default\js|css|images\[your_extension]\all_theme_related_files

편집-2

모든 Magento 응용 프로그램 (예 : 자바 스크립트 라이브러리 또는 PHP 패키지 등)에서 공유해야하는 일부 패키지가 있으면 \lib디렉토리에 넣을 수 있습니다 .

두 개의 확장자가 동일한 자원 패키지에 의존하는 경우 중복 파일이 존재할 수 있습니다. 동일한 리소스 패키지의 다른 버전도 사용할 수 있습니다. 그러나 기본적으로 확장은 확장의 리소스 만 사용해야하며 기본 Magento의 리소스에 의존 할 수 있어야하며 확장이 타사 확장의 "확장 버전"이 아닌 한 다른 확장의 리소스에 의존해서는 안됩니다.


감사합니다. 귀하의 답변은 사이트 소유자가 아닌 개발자의 관점을 선호합니다. 하지만 그것이 마 젠토에있는 방법 인 것 같아요? 타사 아카이브 / 라이브러리의 압축을 풀 장소에 동의 한 다른 CMS를 알고 있으며 모든 파일을 원본과 동일하게 유지합니다.
fris

1
예. 패키지 리소스를 분리하는 것이 실망 스럽다는 것을 알고 있습니다. 마 젠토가 요구합니다. 쉬운 방법은 없습니다. 마 젠토 모범 사례 "당신은 모두를 유지해야한다고 말했습니다 js, css, images에서 base\default패키지". 또한 편집 코드 참조
Rajeev K Tomy

안녕하세요 Rajeev ... 외부 리소스 / lib 파일을 "your_extension"아래에 놓은 결과는 resource / lib를 사용하는 다른 확장명과는 공유 할 수 없다는 것입니다. 따라서 동일한 페이지에 여러 사본, 다른 CLASHING 버전이로드 될 수 있습니다. 아야!
fris

내 편집 내용을 참조하십시오
Rajeev K Tomy

0

Magento에는 Magento Connect라는 자체 패키지 관리자가 있습니다. 패키지가 어떻게 보이는지 완전히 이해하려면 공식 문서 에서이 안내서 를 확인 해야합니다. 구조를 이해하면 Magento 설치에서 모듈을 포장 할 수 있습니다.


귀하의 답변에 감사드립니다. 그러나 그것은 내가 요구 한 것이 아닙니다. 내 확장을 패키지하는 방법이 아니라 Magento 파일 트리에서 핵심 또는 내 확장의 일부가 아니지만 시스템의 일부로 포함되어야하는 타사 파일을 넣을 위치를 나타냅니다. 사용자에게 해당 파일을 어디에 두어야합니까? 타사 파일에 대한 표준 지점이 있습니까?
fris

실제로 내가 보낸 링크와 관련이 있습니다. JS와 CSS에는 다른 확장 파일과 마찬가지로 패키지를위한 자체 폴더가 있습니다. PHP 파일은 루트 lib 폴더 아래 또는 lib 폴더 내의 모듈 폴더 내에있을 수 있습니다.
mbalparda

알았어 고마워 답은 다음과 같습니다. 예 Magento 사이트 빌더는 타사 아카이브의 압축을 풀고 해당 아카이브에서 PHP, JS, HTML 및 CSS 부분을 꺼내고 해당 파일을 Magento 파일 트리의 해당 슬롯에 다시 배포해야합니다. 사이트 빌더가이 목적으로 지정된 일반적으로 동의 한 일부 디렉토리에서 전체 타사 아카이브를 압축 해제하여 필요한 경우 관련 확장이 타사 파일을 포함 할 수 있도록하는 것은 모범 사례로 간주되지 않습니다.
fris

예. 설명 된 모든 내용은 설명서에 설명 된 포장 과정에서 이미 다룹니다.
mbalparda

글쎄, 그 문서를 읽었지만 내 질문에 대해서는 아무 말도하지 않습니다. 그것은 당신이 개발하고 패키징하려는 확장의 일부인 파일에 대해서만 이야기합니다. 캘린더, 이미지 갤러리 또는 차트 패키지와 같이 확장에 속하지 않은 타사 파일을 어디에 둘 것인지는 밝히지 않습니다. 개발중인 확장 프로그램과 함께 이들을 패키징하지 않고 독립적으로 업데이트 할 수 있습니다. 그러면 제 3 자 파일을 어디에 두어야합니까? 가장 좋은 방법은 무엇입니까?
fris

0

기본적으로 젠토 보류에 자신의 구조를 사용 .php, .phtml, js, css, images파일.

magento 확장 개발자의 경우 magento 방식을 따르는 것이 매우 중요합니다. 이 링크를 확인하십시오 .

그래서,

  1. 귀하의 .php파일은 아래에 가야 app/code/community폴더
  2. 귀하의 js파일을 갈 수 js폴더 또는에서 skin/frontend or adminhtml/your_theme_pack/your_theme/js폴더
  3. 귀하의 css파일을 갈 수 skin/frontend or adminhtml/your_theme_pack/your_theme/css폴더
  4. 귀하의 images파일을 갈 수 skin/frontend or adminhtml/your_theme_pack/your_theme/images폴더
  5. 'html files should go toapp / design / frontend 또는 adminhtml / template` 폴더

PS 프론트 엔드는 확장이 프론트 스토어 용이고 adminthml은 확장이 관리 영역 인 경우를 의미합니다.

이러한 파일을 magento에 보관하는 특정 방법이 있으므로 따라야합니다.

또한 원하는 / 복사 기능이 이미 magento / zend 프레임 워크에서 사용 가능한지 확인합니다. 예를 들어 pdf 작성, 이메일 전송, xml 읽기 등은 이미 magento에 빌드되어 있습니다.

도움이 되었기를 바랍니다.

업데이트 1

파일을 어딘가에 보관하려면 어디에서나 보관할 수 있습니다. magento 루트 내에 새 폴더를 만들 수도 있습니다. 그러나 이것은 파일을 실행할 때 서버를로드하는 magento에 대한 모범 사례가 아닙니다. https://magentotherightway.com/ 에서 확인하고 싶습니다.


링크와 설명에 감사드립니다. 그러나 나는 확장 자체에 대해 묻지 않습니다. 확장 프로그램에 포함되지 않은 타사 코드를 넣을 위치를 묻고 있습니다. 일반적으로 합의 된 단일 위치가 있습니까?
fris

파일을 어딘가에 보관하려면 어디에서나 보관할 수 있습니다. magento 루트 내에 새 폴더를 만들 수도 있습니다. 그러나 이것은 파일을 실행할 때 서버를로드하는 magento에 대한 모범 사례가 아닙니다. 이 magentotherightway.com
Adarsh ​​Khatri

분산 확장은 코드 풀에 설치 하지local 않아야합니다.
benmarks
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.