Shopify скрыть бестселлеры

#shopify #liquid

#Shopify #жидкость

Вопрос:

Я пытаюсь скрыть доступ от конкурентов, просматривающих бестселлеры, в частности, используя URL-адрес, подобный этому:

www.store.myshopify.com/collections/all?sort_by=best-selling

Я пробовал {% if collection.url contains 'sort_by=best-selling' %} , но это не работает. Есть ли какой-либо способ настроить таргетинг на URL с прикрепленной строкой запроса?

Если нет, какие-либо предложения?

Спасибо!

Ответ №1:

К сожалению collection.url , не возвращает строку запроса, в вашем примере она выводила бы /collections/all

Я не думаю, что в Liquid есть способ получить текущую строку запроса url. Вы можете установить только тип сортировки по умолчанию с collection.default_sort_by : 'price' помощью или переопределить всю сортировку с помощью {% assign products = collection.products | sort: 'price' %}

Вы можете переопределить параметр sort_by строки запроса с помощью jQuery для замены best-selling на price :

 <script type="text/javascript">
    $.urlParam = function(name){
        var results = new RegExp('[?amp;]'   name   '=([^amp;#]*)').exec(window.location.href);
        return results[1] || 0;
    }

    var sort_by = $.urlParam('sort_by');
    if(sort_by == "best-selling") {
        var url = window.location.href;
        url = url.replace("best-selling", "price"); // override to sort by price
        window.location.href = url; // redirect to url
    }
<script>
  

Используя этот код в вашем примере, он автоматически перенаправит страницу www.store.myshopify.com/collections/all?sort_by=best-selling на www.store.myshopify.com/collections/all?sort_by=price

Но имейте в виду, что ваши конкуренты могут отключить этот JS-код и все равно получить доступ к самым продаваемым товарам.