0

我已经挣扎了2个小时,到处寻找解决方案。

我正在使用 Zen-Cart 安装,我决定使用一些动态横幅。基本上我使用jQuery.get() 从banner1.php 加载一个URL -banner1.php 有一个由几个url(它们是产品页面)组成的数组,它从数组中回显一个随机url。

一旦 jQuery 加载了随机 URL,我就使用 jQuery.load() 函数来加载产品的图像、产品的价格和产品的名称。

所有这些工作都很好,但问题是 load() 函数似乎干扰了我的 Zen-Cart “重定向”函数。假设您正在查看产品,我们将其称为“产品 A” - 您决定通过单击“登录”按钮从该页面登录 - 发生的情况是您被带到登录页面,输入您的登录详细信息,然后点击“提交”。标准结果是,如果您成功登录,您将返回“产品 A”页面。但是使用我的小动态 jQuery 横幅混合物,它不是重定向回“产品 A”,而是加载 jQuery.load() 用于生成随机横幅的页面之一。我有 3 个横幅,每个动态加载一个随机 url,但这里是横幅 1 的示例:

<script type="text/javascript">


$.get("banner1.php", function(getbannerlink1) {

$( document ).ready(function() {


$("#banner1").load(getbannerlink1+ " #globalproductimage"); 

$('#banner1name').load(getbannerlink1+ " #productName", function(result) {
var banner1text = $('#banner1name').html();
banner1text = jQuery(banner1text).text();
$("#banner1name").html(banner1text);

});

$('#banner1price').load(getbannerlink1+ " #productPrices", function(result) {
var banner1prices = $('#banner1price').html();
banner1prices = jQuery(banner1prices ).text();
$("#banner1price").html(banner1prices );

});


var bannerlink1 = $("<a>").attr("href", getbannerlink1);
$("#banner1name").wrap(bannerlink1);
$("#banner1price").wrap(bannerlink1);
$("#banner1").wrap(bannerlink1);
});

});
</script>

问题是我不太担心客户登录后的错误重定向,当客户真正结帐时,问题也最令人失望。例如,如果他们的购物篮中有产品,点击结帐按钮,然后要求他们登录,一旦他们登录,而不是继续使用标准的购物车功能,将他们带到结帐的第一步过程中,它将它们重定向到动态横幅已加载的页面之一。我不知道如何解决这个问题,我尝试了一些奇怪的事情无济于事。为了便于参考,可能需要这样做,这是 Zen-Cart 处理登录后重定向的函数:

if (sizeof($_SESSION['navigation']->snapshot) > 0) {
      //    $back = sizeof($_SESSION['navigation']->path)-2;
      //if (isset($_SESSION['navigation']->path[$back]['page'])) {
      //    if (sizeof($_SESSION['navigation']->path)-2 > 0) {
      $origin_href = zen_href_link($_SESSION['navigation']->snapshot['page'], zen_array_to_string($_SESSION['navigation']->snapshot['get'], array(zen_session_name())), $_SESSION['navigation']->snapshot['mode']);
      //            $origin_href = zen_back_link_only(true);
      $_SESSION['navigation']->clear_snapshot();
      zen_redirect($origin_href);
    } else {
      zen_redirect(zen_href_link(FILENAME_DEFAULT, '', $request_type));
    } 

请帮忙!也许有一种更简单的方法我应该这样做:/

我注意到它加载的页面始终是 jQuery.load() 加载的最后一个横幅。就像我提到的那样,总共有 3 个横幅,所以如果横幅 2 的价格是最后一个加载的,那就是在重定向中加载的 URL。

编辑:banner1.php(这只是从数组中生成一个随机 url,但目前出于测试目的,我在数组中只有一个 URL):

<?php
$strings = array('http://example.com/index.php?main_page=product_info&cPath=3&products_id=104');
echo $strings[array_rand($strings)];
?>
4

1 回答 1

0

横幅页面似乎正在设置快照 href。我假设您在设置会话导航快照的横幅 url 中包含一些 Zen 购物车库。您也许可以设置一些东西来忽略快照的 url。

添加横幅代码可能有助于解决此问题。

虽然我不推荐它,但您可以添加逻辑以在登录后不重定向到某些页面。

于 2013-07-16T00:15:14.153 回答