2017-09-11 30 views
0

Shopifyショップでは、お客様が選択した配送日から注文を検索できるようになります。私が見つけることができる唯一の実行可能なことは、注文をタグ付きでタグ付けし、タグから注文をフィルタすることでした。私の質問は、注文が作成されたときに顧客に納品日を指定して注文をタグ付けする適切な方法があるかどうかです。 (私は許可されていないよ使用任意の有料アプリ/プラグイン)Shopify - クライアント側の注文タグ付け

あり、私は管理者の受注のAPIを見つけ出すことができ二つのアプローチがありますが、両方とも問題があり、

  1. ウェブフックを書く(用注文の確認イベント)を外部サーバーに送信し、注文のタグを付けるために管理注文APIを呼び出して注文をタグ付けします。問題は注文をタグ付けするためだけのサーバーを維持するためのオーバーヘッドです。管理APIではCORSがこれを実行可能にすることはできませんか? (店主が有料のプラグインを支払うことさえも望んでいないので、サーバのメンテナンスも実用的ではない)

  2. 注文が確定した後、クライアント側からadmin APIを呼び出します。私はこれを試して、それが期待どおりに動作しますが、私の知る限り、クライアント側のJavaScriptに格納された注文とトランザクションの管理API資格情報は、まったく良い習慣ではありません。

カート属性を使用して、クライアント側の順序についての詳細を作成することができます、と彼らは同様に管理オーダーのページに示されているが、Shoifyがカート-属性を使用して注文を検索することはできません

注文に追加されました。

誰かがこれについての解決策を提案できる場合、私は感謝します。

+1

私はあなたの正確な質問に答えるが、あなたはShopifyアプリケーションを作成する場合があることではありませんよ管理者ページには、サーバー側の言語が必要なため、独自のサーバーまたはホスティングが必要です。また、セキュリティ上の理由から、クライアント側から管理APIを呼び出すべきではありません。また、Shopify Adminの埋め込みページとしてレポートを検討して作成する必要があります。これを参照してください:[ESDK](https://help.shopify.com/api/sdks/shopify-apps/embedded-app-sdk) –

+0

あなたは管理ページを持つことによって何を意味するのは、管理ページを制御することですか?また、shopfyは、すでにshopifyで管理されている管理ページも提供しています。 –

+0

管理ページを作成している場合は、管理ページをサーバーでホストする必要があります。もう1つの話は、あなたのテーマを変更する、つまり顧客ページであり、それを管理に使用しないでください。テーマに新しいページを作成しようとしていますか? ESDKを使用すると、管理者に新しいページを追加できます。 –

答えて

1

実際には、サーバーサイドの要件がないChromeプラグイン(または実際には複雑なブックマークレット)を使用してこれを行うことができます。 https://developer.chrome.com/extensions/overview

あなたのapi呼び出しは次のPOCスクリプトのようになります。 API callsは、タグで注文を検索しないので、あなたのテーマの.liquidコードで設定したnote_attributeでそれをスキップしてフィルタすることができます。あなたのクロムプラグインは未処理の注文を表示し、納品日までに表示します。

は、既存の秩序を取得し、その音符の属性を更新します。

jQuery.get('/admin/orders/5803440262.json').then(function(d) { 
    console.log(d.order); 
    var so = { 
     id: d.order.id, 
     note_attributes: [{ 
      name: 'Test Value', 
      value: 'Test' 
     }] 
    }; 
    jQuery.ajax({ 
     url: '/admin/orders/' + so.id + '.json', 
     type: 'PUT', 
     data: JSON.stringify({ 
      order: so 
     }), 
     contentType: 'application/json' 
    }).then(function(d) { 
     console.log(JSON.stringify(d, null, ' ')); 
    }); 
}); 

と注文を読ん:

jQuery.get('/admin/orders.json?limit=250').then(function(d) { 
    var count = 0; 
    d.orders.forEach(function(so) { 
     if (so.tags.indexOf('__amazon_pending') != -1) count++; 
    }); 
    console.log(count + ' matching orders'); 
}); 
+0

ありがとうございます。プラグインを書くことは、私ができなかった良い新しいアプローチです。しかし、それはまだ私が理解しているようにいくつかの問題があります。 1)デバイスを変更するたびにクライアントにプラグインをインストールさせ、いつでもどこでもブラウザーの自由度を制限し、新しいデバイスであればプラグインをインストールする必要があります。 2)すべてのブラウザ用のプラグインを作成する必要があるかもしれません。なぜなら、使用される唯一のクロムが3)、そのプラグインが注文のリストを示す別のページになることは確かですが、それはshopify管理者の注文ページ自体で行われました。 –

+1

これらの要件をお持ちの場合は、ホストされたアプリを使用する方がよいでしょう。 私の知る限り、拡張機能はChromeモバイルブラウザではサポートされていません。 – bknights

+0

そして私はあなたが私の問題を完全に理解していないと感じているように、私はノート属性(メモ属性とカート属性は同じものを指していると思います)を顧客が選択した時点で納期の注文を得ることに成功しました。管理者の注文ページにも表示されます。しかし問題は、それらの属性によって注文を検索する方法を見つけることができなかったことです。だから、私は管理ページで注文をフィルタリングすることができる注文にタグを付けることを考えました(私の問題はクライアント側の注文にタグを付ける方法でしたが、注文APIを使ってタグで注文を検索する方法ではありませんでした) –

関連する問題