Bigcommerce - Как перенаправить пользователей на страницу входа с домашней страницы, если они не вошли в систему

Как сделать так, чтобы клиенты видели страницу входа вместо главной страницы, если они не вошли в систему? Я попытался использовать следующий код, но он перенаправляет на страницу входа, даже если клиент вошел в систему.

<script language="javascript" type="text/javascript">//<![CDATA[
if (window.location.href.toString() == "http://www.mywebsite.com/")
{
    window.location.assign("http://www.mywebsite.com/login.php");
}
//]]></script>

person user2958677    schedule 06.11.2013    source источник


Ответы (5)


Вы можете определить, вошел ли пользователь в систему, посмотрев приветственное сообщение, которое исходит от кода %%GLOBAL_LoginOrLogoutText%%.

Поэтому, если этот приветственный текст не отображается, перенаправьте их на страницу login.php.

Также обратите внимание, что вам нужна оговорка, что если они уже находятся на этой странице, вам не нужно перенаправлять их снова (и снова, и снова).

person developerscott    schedule 06.11.2013
comment
Можете ли вы привести пример использования %%GLOBAL_LoginOrLogoutText%% с JavaScript? - person user2958677; 06.11.2013
comment
Технически javascript не работает с переменной, поскольку она отображается Bigcommerce до того, как javascript ее увидит. Таким образом, вы имеете дело с результатами этого. Было бы несколько способов проверить это. Мне нравится использовать один из них, чтобы увидеть, содержит ли элемент текст «Выйти». - person developerscott; 07.11.2013

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

    //this will allow you to mention the cookie by index
    function getCookie(name) {
      var value = "; " + document.cookie;
      var parts = value.split("; " + name + "=");
      if (parts.length == 2) return parts.pop().split(";").shift();
    }
    //set variable that will check if login email exists
    var loggedIn = getCookie('LoginEmail');

    //logic that will output different content based on the loggedIn Status
    if(typeof loggedIn === 'undefined'){
        console.log("They are not logged in!");
        var notLoggedIn = '<ul><li><a href="/membership/">Become a Member</a></li></ul><p>Already a member? <a href="/login.php">Sign In >></a></p>';
        $(notLoggedIn).appendTo(".LandingInnerContent");
    }
    else{
        console.log("They are logged in! ");
        var isLoggedIn = '<ul><li><a href="/membership/">Shop Now</a></li></ul><p>Access <a href="/account.php">Account Page >></a></p>';
        $(isLoggedIn).appendTo(".LandingInnerContent");
    }

ссылка на репозиторий

Это позволит вам проверить его на основе файла cookie, и вы сможете отображать другой контент или перенаправлять на другую страницу.

person cmtzco    schedule 12.03.2015

К сожалению, переменная '%%GLOBAL_LoginOrLogoutText%%' обычно не работает, поэтому я придумал решение на JavaScript.

Сначала я проверяю значение %%GLOBAL_CurrentCustomerFirstName%%, затем заполняю логин или регистрацию или выход из системы 'li' соответственно с помощью jQuery.

<li class="login-register">
     <script type="text/javascript">
           var GlobalFname="%%GLOBAL_CurrentCustomerFirstName%%";

           if (GlobalFname !="" && GlobalFname!="Guest"){
               $('li.login-register').html('<a href="%%GLOBAL_ShopPath%%/login.php?action=logout">LOG OUT</a>');
           } else {
               $('li.login-register').html('<a href="%%GLOBAL_ShopPath%%/login.php">LOGIN</a> OR <a href="%%GLOBAL_ShopPath%%/login.php?action=create_account">REGISTER</a>');

          };
     </script>
</li>
person thannes    schedule 23.07.2015

Вы можете просто посмотреть на наличие текста «Выйти», как здесь. Этот код будет отображаться в разделе «Содержимое страницы» раздела «Сведения о веб-странице» для любой веб-страницы в Витрине — Веб-страницы. Вы должны использовать кнопку HTML в редакторе и вставить его как необработанный HTML.

<script type="text/javascript">
$(document).ready(function(){

if( $(".header").text().indexOf('Sign out') >= 0){
  //alert("Customer is logged in");
  $("#div_logged_in").show();
  $("#div_not_logged_in").hide();
} else {
  //alert("Customer is NOT logged in");
  $("#div_logged_in").hide();
  $("#div_not_logged_in").show();
}

});
</script>

<div id="div_logged_in">
    <p>The customer IS logged in.</p>
</div>
<div id="div_not_logged_in">
    <p>The customer IS NOT logged in</p>
</div>
person user994277    schedule 06.12.2018

если вы хотите сделать это в php и используете сеансы для хранения информации для входа, вы можете сделать что-то простое, например, в верхней части домашней страницы:

<?php
session_start();
//check if the user is already logged in.
if (!isset($_SESSION['user'])) {
    header('Location: login.php');
}

Надеюсь, это поможет.

person mangopeach    schedule 06.11.2013
comment
BigCommerce не поддерживает контент PHP. Есть ли другой способ? ссылка - person user2958677; 06.11.2013
comment
К сожалению, этот ответ демонстрирует нулевое знание Bigcommrece. - person flyingL123; 02.06.2016