2017-05-29 13 views
-2

私の場合、Shopify製品は5種類あります:Monday, Tuesday, Wednesday, Thursday, Friday。 48時間以内にバリアントを制限したいと思います。たとえば、次のようにShopify:バリアントの可用性を変更

月曜日 - 水曜日のためのWednesday, Thursday, Friday

- 金曜日Monday, Tuesday, Friday

- Monday, Tuesday, Wednesday, Thursday

私は標準の機能を使用できる場合、私は思ったんだけど。管理パネルまたはShopifyの内部構造を通じて。

+0

はい、あなたはjavascriptを – miglio

+0

にあなたがに製品を追加し、人々を気にするかどうかの回答の変化の複雑さを使用していることを行うことができます彼らのカートは月曜日にはチェックアウトされていませんが、金曜日までチェックアウトしません。 –

+0

カートの@DaveBセッションは毎日きれいになります – Lola

答えて

1

Liquidを使用して表示したくないバリアントを除外し、買い物客がそれらの商品をカートに追加できないようにすることができます。お使いの製品のテンプレートで

、この行の後に液体変数

に現在の曜日を保存するために{% assign day_of_week = 'now' | date: '%A' %}を追加し、この行の前の行に{% for variant in product.variants %}

を見つけ、フィルタリングするためのコードを追加しますあなたが見たくないバリアント(下記)。あなたが気にしている曜日ごとに、 'when'ステートメントが必要で、そのバリアントのいくつかのプロパティに対するチェックが続きます(私はバリアントタイトルを使用しました)。表示したくないバリアントの場合は、 'continue'ステートメントを使用してそのバリアントをスキップし、次のステートメントに進みます。

例:私の他の答えは別に

{% assign day_of_week = 'now' | date: "%A" %} 

{% for variant in product.variants %} 
<!-- Addition below to filter out products that customer shouldn't see --> 
    {% case day_of_week %} 
    {% when 'Monday' %} 
     {% if variant.title contains 'Monday' or variant.title contains 'Tuesday' %}{% continue %}{% endif %} 
    {% when 'Tuesday' %} 
     {% if variant.title contains 'Tuesday' or variant.title contains 'Wednesday' %}{% continue %}{% endif %} 

<!-- Repeat for each day of the week --> 
    {% endcase %} 
    <!-- Regular code from your variant loop --> 
+0

ありがとう、それは私が必要なものです – Lola

0

、あなたはまた、Javascriptを使用してバリアントをフィルタリングすることができます。私は一般に、Liquidを使用してプレフィルタリングバリアントを優先します.Javascriptを使用すると、コードが実行される前にバリアントが一時的に存在するため、ページの読み込みにちらつきが生じることがあります。

jQueryのページにすでにあると仮定すると、我々はこれを書くことができます:

<script> 
    jQuery(document).ready(function(){ 
    var variants_list = {{ product.variants | json }}; 
    var date = new Date(Date.now()).toDateString(); 

    for(var i=0; i < variants_list.length; i++){ 
     var variant = variants_list[i]; 
     if(variant.title == 'Monday' && (date.indexOf('Mon') > -1 || date.indexOf('Tue') > -1){ 
     jQuery('[value="' + variant.id + '"]').remove(); 
     //Note: If you theme uses swatches or anything like that, you may need to remove additional elements from the document as well. 
     } 
     if(variant.title == 'Tuesday' && (date.indexOf('Tue') > -1 || date.indexOf('Wed') > -1){ 
     jQuery('[value="' + variant.id + '"]').remove(); 
     } 
    } 
    //Lather-rinse-repeat for each day of the week that you care about 

} 
</script> 
関連する問題