Невозможно получить полный URL страницы на странице входа в Shopify - PullRequest
0 голосов
/ 15 февраля 2019

Я работал над перенаправлением пользователя на какой-то URL-адрес в зависимости от страницы, на которой он нажимает, для входа.

Итак, у меня есть страница регистрации и обычная страница, обе кнопки входа в систему.Поэтому, когда пользователь щелкает страницу входа со страницы регистрации, он / она должен быть перенаправлен на другую страницу, а в случае обычной страницы он / она должен быть перенаправлен на страницу учетной записи.

Что у меня естьсделано, я добавил параметры в URL, когда пользователь переходит на страницу входа со страницы регистрации, чтобы дифференцировать его.Теперь окончательная доработка остается, так как параметры добавляются, но я хочу, чтобы пользователь перенаправлялся на желаемый URL-адрес на основе URL-адреса на странице входа в систему.

Я знаю, как перенаправить пользователя на какой-то определенныйместоположение с помощью этого.

<input type="submit" class="btn" value="{{ 'customer.login.sign_in' | t }}">
<input type="hidden" name="checkout_url" value="YOUR URL" />

Но я хочу такую ​​проверку, если URL-адрес X , тогда <input type="submit" class="btn" value="{{ 'customer.login.sign_in' | t }}"> это должно повлиять на значение

<input type="submit" class="btn" value="{{ 'customer.login.sign_in' | t }}">
<input type="hidden" name="checkout_url" value="YOUR URL" />

Теперь проблема в том, что япытался получить URL-адрес, но теперь получаю его.Я выполнил операцию следующим образом:

{% if page.url == 'X'%}
    OPERATION 1
{% else %}
    OPERATION 2
{% endif %}

Теперь проблема в том, что проверка вообще не работает, и каждый раз, когда она выполняет условие else.

Я использовал только еслиусловие также для того, чтобы проверить, работает ли оно, например, размещение фиктивного текста внутри условия if, например:

{% if page.url == 'X'%}
   <p>Working!!</p>
{% endif %}

ПРИМЕЧАНИЕ: Я не использовал домен, все, что я использовалэто часть кроме домена, то есть /account/login?params=hello

Выяснилось, что текст вообще не виден.Я также использовал site.url , но не работает.

Мне нужна ваша помощь, поскольку page.url должен работать, но в этом случае он совсем не работает.

Я сделал одну функцию javascript, чтобы получитьпараметры на странице, но я не знаю, как поместить это в {% if %}!

JAVASCRIPT

<script>
  function GetURLParameter(sParam){
    var sPageURL = window.location.search.substring(1);
    var sURLVariables = sPageURL.split('&');
    for (var i = 0; i < sURLVariables.length; i++){
      var sParameterName = sURLVariables[i].split('=');
        if (sParameterName[0] == sParam){
          return sParameterName[1];
        }
      }
    }
    document.getElementById("name").innerHTML = window.GetURLParameter('params'); 
</script>

Я мог бы получить значение внутри моего HTML , но не знаете, как это сделать в ЕСЛИ

<p id="name"></p>

Пожалуйста, помогите, если какое-либо из решений вам подходит.Мне просто нужна дополнительная помощь от вас, ребята, и я закончу.

1 Ответ

0 голосов
/ 15 февраля 2019

Нет встроенного метода Liquid для возврата значений строки запроса в URL с Shopify Liquid.Обходной путь определяется здесь с использованием content_for_header .Однако вы можете просто сделать это, используя JavaScript.Проверьте комментарии к коду и адаптируйтесь соответственно.

document.addEventListener("DOMContentLoaded", function() {

    // uncomment below line to get actual url from browser
    //var url_string = window.location.href;
    var url_string = "http://www.example.com/?source=diff-page";
    var url = new URL(url_string);
    
    // Get the param value if exist
    var source = url.searchParams.get("source");
    
    // Get input elements by nmae
    var input = document.getElementsByName("checkout_url");
    
    // check if any input element with that name exist
    if (input.length > 0) {
    
        // check if returned param is not empty and equal to our condition
        if (source !== null && source == "diff-page") {
            // change the value
            input[0].value = "something different";
        } else {
            input[0].value = "something default";
        }
        // log for testing purpose
        console.log(input[0].value);
    }

});
<input type="hidden" name="checkout_url" value="YOUR URL" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...