2012-09-27 88 views
3

安裝我的應用程序時我創建了一個腳本標記(通過shopify API)。我只對在產品視圖頁面上運行此腳本感興趣。檢查腳本是否由產品查看頁面運行的可靠方法是什麼?我應該讓商家手動將一些東西放入液體文件中嗎?如何確定我的腳本在哪個頁面上運行

回答

2

這應該工作,在的JavaScript:

// 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

啊,我現在看到你的意思了。但是,是的,你對此有一些控制。你可以之後。如果您可以控制WHERE該函數被稱爲FROM,那麼您肯定可以控制發送額外值。 – L0j1k

+0

當我安裝一個腳本標記時,我的網址從店鋪的每一頁被調用。他們傳遞給URL的唯一參數是商店的名稱。打個電話就像你建議我需要讓店主把這個腳本輸入到頁面中。換句話說,店主需要修改店鋪的產品視圖模板文件。我試圖避免這一點。我希望能夠檢查DOM,以確定我在哪個頁面上。如果可能的話。 – akonsu

0

在Shopify的產品頁面總是有它的形式,增加了產品購物車,所以你可以做這樣的事情(假設jQuery可用):

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

寫一些通用的Javascript來查詢當前的URL在瀏覽器中。您可以輕鬆判斷您是否在網頁,產品或集合中。嘗試一個簡單的RegExp來做到這一點。自從Shopify託管後,一家商店很難搞清網址結構。

+0

這是一個很好的建議,謝謝。你的意思是即使店鋪使用自定義域名,URL路徑也保持不變?我也需要知道當前頁面上顯示的產品ID。你將如何獲取? – akonsu

+0

使用相同的技術,您可以從URL解析產品的句柄。使用它,您的代碼可以使用Ajax API來請求產品,並且這會給您ID。同樣,完全有可能使用通用Javascript,但也很笨拙,因爲您真的不必向服務器詢問產品,因爲您已經將它交給了一個盤片。不幸的是,除非腳本使用Liquid來提取產品的JSON,否則獲取ID並不簡單。也許你可以在你的注入腳本中做到這一點。 var product = {{product | json}}; VAR ID =的product.id –

相關問題