安裝我的應用程序時我創建了一個腳本標記(通過shopify API)。我只對在產品視圖頁面上運行此腳本感興趣。檢查腳本是否由產品查看頁面運行的可靠方法是什麼?我應該讓商家手動將一些東西放入液體文件中嗎?如何確定我的腳本在哪個頁面上運行
回答
這應該工作,在您的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];
}
您可以傳遞一個額外的函數參數,指定從何處調用該函數。我在一些項目中使用了這種編程,取得了巨大的成功。例如:
function foo(data, moarData, caller) {
if(caller != 'productPage') { return false; }
...
}
並且可以指定從產品視圖頁上的函數調用調用者的變量:
var page = 'productPage';
foo('sharks', 'games', this.page);
感謝。我不確定自己明白。當我創建一個腳本標記時,我給它一個URL,當商店呈現頁面時將會調用它。我無法控制url將會收到什麼參數。你能澄清嗎? – akonsu
啊,我現在看到你的意思了。但是,是的,你對此有一些控制。你可以之後。如果您可以控制WHERE該函數被稱爲FROM,那麼您肯定可以控制發送額外值。 – L0j1k
當我安裝一個腳本標記時,我的網址從店鋪的每一頁被調用。他們傳遞給URL的唯一參數是商店的名稱。打個電話就像你建議我需要讓店主把這個腳本輸入到頁面中。換句話說,店主需要修改店鋪的產品視圖模板文件。我試圖避免這一點。我希望能夠檢查DOM,以確定我在哪個頁面上。如果可能的話。 – akonsu
在Shopify的產品頁面總是有它的形式,增加了產品購物車,所以你可以做這樣的事情(假設jQuery可用):
jQuery("form[action='/cart/add']").each(function() {
console.log("I'm in ur product page");
});
寫一些通用的Javascript來查詢當前的URL在瀏覽器中。您可以輕鬆判斷您是否在網頁,產品或集合中。嘗試一個簡單的RegExp來做到這一點。自從Shopify託管後,一家商店很難搞清網址結構。
這是一個很好的建議,謝謝。你的意思是即使店鋪使用自定義域名,URL路徑也保持不變?我也需要知道當前頁面上顯示的產品ID。你將如何獲取? – akonsu
使用相同的技術,您可以從URL解析產品的句柄。使用它,您的代碼可以使用Ajax API來請求產品,並且這會給您ID。同樣,完全有可能使用通用Javascript,但也很笨拙,因爲您真的不必向服務器詢問產品,因爲您已經將它交給了一個盤片。不幸的是,除非腳本使用Liquid來提取產品的JSON,否則獲取ID並不簡單。也許你可以在你的注入腳本中做到這一點。 var product = {{product | json}}; VAR ID =的product.id –
- 1. 更改頁面上的運行腳本
- 2. 如何在域的所有頁面上運行javascript腳本?
- 3. 如何確保我的腳本在Open Shift上運行?
- 4. 如何確定我的python腳本是否正在運行?
- 5. WordPress的如何確定哪個頁面的頁面上的分頁列表
- 6. 頁面上運行Ruby腳本刷新
- 7. Pjax運行頁面特定腳本
- 8. 如何確定一個線程運行在哪個CPU上?
- 9. 如何在特定頁面中運行腳本 - jQuery
- 10. 如何確定在PHP-FPM過程中執行哪個腳本
- 11. 確定哪個版本的Mono在Linux上運行?
- 12. 如何找到哪個腳本在網站上運行?
- 13. 如何停止腳本在wordpress中的特定頁面上運行?
- 14. 如何在一個頁面上運行Zepto.js的多個版本?
- 15. 重定向URL並在該頁面上運行腳本
- 16. 確定在哪個頁面上執行查詢
- 17. 在每個頁面加載運行我的腳本,*包括* AJAX頁面加載?
- 18. 如何確定哪個版本的gtk +我在centos上有?
- 19. 我如何確定哪個平臺正在運行?
- 20. 如何確定R在哪個平臺上運行?
- 21. 如何使腳本不在特定頁面上執行?
- 22. 確定運行腳本時傳遞哪個參數
- 23. 如何確定我的GlassFish服務器在哪個端口上運行?
- 24. 如何確定我的應用程序在哪個iPhone上運行?
- 25. 如何確定我的.NET Windows Forms程序運行在哪個監視器上?
- 26. 如何指定哪些內容腳本將在all_frames上運行,哪些不會?
- 27. 在頁面加載時運行腳本
- 28. 在.net頁面中運行PHP腳本
- 29. 在頁面加載運行角腳本
- 30. 在html頁面運行PHP腳本
這一具體問題: - 我應該問商家手動裝上去他們的流動性文件? 我的回答: - 請問,我求求你:不。儘可能不要添加任何內容,以後再不能刪除主題的文件,也不要(甚至更少)要求客戶編輯主題。 –