2012-04-27 9 views
2

私は以下のことを試みています:標準のHTML/PHPウェブサイトを構築しています。私たちはサイト上に製品を持っています。誰かが「カートに追加」をクリックすると、ユーザーは製品情報でShopifyに誘導され、その製品はカートに追加されます(これまでのところ問題ありません)。彼らがブラウザに戻ってサイトに戻ってきたら(Shopifyカートを残して)、サイトの商品情報をヘッダに表示できるようにする必要があります。 "5製品| $ 168.00"のようなものは基本的にサイト訪問者(shopifyにはないが、私たちが構築したHTMLサイト)にカートの値を表示し、いつでもカートをチェックアウトしたり、カートを見ることができます。Shopify Cartの表示方法ウェブサイト(Shopifyのウェブサイト以外)にあるページの値

私はこれに出くわした:http://api.shopify.com/cart.html#show

私はJSONで初心者くさいのビットだと私がやろうとし、それらを見ていないよ何の例を探していました。

誰かの助言や正しい方向に私を向ける誰かが素晴らしいだろう。

答えて

1

これらの2つのページはあなたを助ける必要があります。

Adding to the Cart from a remote website

私はあなたが今カートに追加するために何をしているのかわからないんだけど、これはそれを行うための「正しい」方法です。あなたがすでにこの仕事をしているのを見て、私はあまり心配しません。

カートを入手するには、AJAX APIを使用してください。このAPIを使用すると、リンク先のRESTバージョンを使用せずに現在のユーザーのカートを引き出すことができます。これは、より重い持ち上げを行うように設計されています(たとえば、現在アクティブなカートをすべて手に入れるなど)。 AJAXのバージョンははるかに簡単でフロントエンド用に特別に設計されています。簡単に言えば、ちょうど

http://[the-shop].myshopify.com/cart.js

を呼び出して、あなたはJSONで現在のセッションのカートの内容が返されます。それはこのようなものを見てみましょう:

{ 
"items": [ 
    { 
     "handle": "aquarius", 
     "line_price": 6000, 
     "requires_shipping": true, 
     "price": 2000, 
     "title": "aquarius - medium", 
     "url": "/products/aquarius", 
     "quantity": 3, 
     "id": 30104042, 
     "grams": 181, 
     "sku": "", 
     "vendor": "the candi factory", 
     "image": "http://static.shopify.com/s/files/1/0040/7092/products/aquarius_1.gif?1268045506", 
     "variant_id": 30104042 
    }, 
    { 
     "handle": "amelia", 
     "line_price": 4000, 
     "requires_shipping": true, 
     "price": 2000, 
     "title": "amelia - medium", 
     "url": "/products/amelia", 
     "quantity": 2, 
     "id": 30104012, 
     "grams": 200, 
     "sku": "", 
     "vendor": "the candi factory", 
     "image": "http://static.shopify.com/s/files/1/0040/7092/products/2766315_da1b.png?1268045506", 
     "variant_id": 30104012 
    } 
], 
"requires_shipping": true, 
"total_price": 10000, 
"attributes": null, 
"item_count": 5, 
"note": null, 
"total_weight": 947 

}

+0

ありがとうございます。私たちは先週、これをしばらく続けました。私たちが直面してきた問題は、作業をしていない私たち自身のサイトに情報を引き出すことです。 Shopifyには、その情報(カートに入っているもの)をリモートサイトに引き込むことを防ぐセキュリティ機能がありますか? – flinx777

+0

[同じ原産地政策](http://en.wikipedia.org/wiki/Same_origin_policy)の問題に遭遇するかもしれませんが、データは利用可能でなければなりません。 –

7

Shopifyは実際にあなたが同じドメインから来ていると仮定するとJSONP形式のファイルを提供します(個別のユーザーを識別Shopifyのクッキーにアクセスするため)。言い換えれば

はのは、Wordpressのサイトがwww.example.com

に住んでいると付随する「ショップサイトは」このドメインはあなたであることを確認してください(shop.example.comに住んで言ってみましょうあなたのWordpressのサイトからカートにアクセスし、呼び出すことができ、あなたのテンプレートやページにjQueryを使ってそれを処理するためにShopify側のプライマリドメイン)

jQuery.ajax({ 

    url: "//shop.example.com/cart.json", 
    dataType: "jsonp", 
    success: function(data) { 
     /* Template Code here */ 
    }, 
    error: function(jxhr, status, err) { 
     console.log("Error, status = " + status + ", err = " + err); 
    } 

}); 

JSONP形式のファイルでは、クロスドメインのAJAX呼び出しをいくつかのJavaScriptのトリッキーで行うことができます。

+0

私はこの特定の質問に対する多くの答えを見て、 '$ .ajax' /' $ .get'/'$ .getJSON'とあなたの答えに' method: 'get''を追加して多くの順列を試しました。私のためにトリックをしたものです。ありがとうございました! – ntdb

1

誰にも同じ問題がある場合。 カメロンの答えが私の問題を解決しました。 dataTypeを "jsonp"と設定する場合は、 ".js"を ".json"に変更してください。

+0

たとえば、/cart/clear.jsで何をしますか?/cart/clear.jsonのバージョンはありません –

関連する問題