2012-09-27 2 views
3

에 내 스크립트가 실행되는 페이지를 결정하는 방법 스크립트 태그 (shopify API를 통해)를 만듭니다. 나는 제품보기 페이지에서이 스크립트를 실행하는 데에만 관심이 있습니다. 스크립트가 제품보기 페이지에서 실행되는지 여부를 확인할 수있는 확실한 방법은 무엇입니까? 가맹점에 액체 파일에 수동으로 무언가를 넣어달라고 부탁해야합니까?내 앱이 설치 될 때

답변

2

당신의 자바 스크립트로 작동한다 :

// If we are on a product page 
if (window.location.pathname.indexOf('/products/') !== -1) { 
// What's the product handle? 
var productHandle = pathname.match(/\/products\/([a-z0-9\-]+)/)[1]; 
} 
+1

이 특정 질문 : - 상인에게 액체 파일에 수동으로 무언가를 넣어달라고 요청해야합니까? 내 대답 : - 제발, 나는 너에게 간청한다. 가능한 한 많이 제거하고 나중에 제거 할 수없는 테마의 파일에는 아무 것도 추가하지 말고 고객에게 자신의 테마를 편집하도록 요청하지 않습니다. –

0

함수가 호출 된 위치를 지정하는 추가 함수 매개 변수를 전달할 수 있습니다. 나는 큰 성공을 거둔 몇몇 프로젝트에서 이런 종류의 프로그래밍을 사용했다. 당신이 제품 뷰 페이지의 함수 호출에서 호출자의 변수를 지정할 수 있습니다

function foo(data, moarData, caller) { 
    if(caller != 'productPage') { return false; } 
    ... 
} 

그리고 : : 예를 들어

var page = 'productPage'; 
foo('sharks', 'games', this.page); 
+0

감사합니다. 나는 내가 이해하고 있는지 확신하지 못한다. 스크립트 태그를 만들 때 상점에서 페이지를 렌더링 할 때 호출 할 URL을 지정합니다. URL 매개 변수를 제어 할 권한이 없습니다. 분명히 해줄 수 있니? – akonsu

+0

아, 이제 무슨 뜻인지 알 겠어. 그러나 그렇습니다. 당신은 이것에 대한 통제권을 가지고 있습니다. . 함수가 FROM이라고하는 곳을 제어 할 수 있다면 추가 값을 확실히 보낼 수 있습니다. – L0j1k

+0

스크립트 태그를 설치하면 내 URL이 상점의 모든 페이지에서 호출됩니다. URL에 전달하는 유일한 매개 변수는 상점 이름입니다. 네가 전화를 걸려면 상점 주인에게이 스크립트를 페이지에 입력하도록 요청해야한다고 제안하십시오. 즉, 소유자는 상품보기를 위해 상점의 템플리트 파일을 수정해야합니다. 나는 이것을 피하려고 노력하고있다. DOM을 검사하여 내가 어느 페이지에 있는지 확인할 수 있기를 원합니다. 가능하다면. – akonsu

0

Shopify의 제품 페이지는 항상에 제품을 추가 그것에 형태를 갖는다 당신이 뭔가를 할 수 있도록 카트 (jQuery를 사용할 수있는 가정) :

jQuery("form[action='/cart/add']").each(function() { 
    console.log("I'm in ur product page"); 
}); 
0

브라우저에서 현재 URL을 조회 할 몇 가지 일반적인 자바 스크립트를 작성합니다. 페이지, 제품 또는 컬렉션에 있는지 쉽게 알 수 있습니다. 간단한 RegExp를 사용해보십시오. Shopify가 호스팅 된 이후로 상점이 URL 구조를 엉망으로 만드는 것은 꽤 어려울 것입니다.

+0

좋은 제안입니다. 감사합니다. 상점에서 맞춤 도메인을 사용하는 경우에도 URL 경로가 동일하게 유지된다는 의미입니까? 또한 현재 페이지에 표시된 제품의 ID를 알아야합니다. 어떻게 그걸 가져올거야? – akonsu

+0

동일한 기술을 사용하면 URL에서 제품 핸들을 구문 분석 할 수 있습니다. 이것을 사용하면 코드가 Ajax API를 사용하여 제품을 요청할 수 있으며 이는 ID를 제공합니다. 다시 한번 말하지만, 일반적인 자바 스크립트로는 완전히 가능하지만, clunky도 가능합니다. 이미 서버에 제품을 요청할 필요가 없기 때문에 이미 플래터에 넘겨 줘야합니다. 불행하게도, ID를 얻는 것은 스크립트가 Liquid를 사용하여 제품의 JSON을 추출하지 않는 한 간단하지 않습니다. 아마도 여러분은 여러분이 삽입 한 스크립트에서 그렇게 할 수있을 것입니다. var product = {{product | json}}; var id = product.id –

관련 문제