0

这是我用于获取购物车物品及其属性的标准代码,仅在客户未登录时才有效。一旦我使用我的帐户登录,此脚本就会停止工作并且不会返回购物车中的物品。购物车项目数也是 0。但只要我关闭浏览器(会话结束..),脚本就会正确返回购物车项目!很奇怪,一直查不出原因。请指导,有人吗?

require_once('../app/Mage.php') ;
umask(0);
Mage::app();
Mage::getSingleton('core/session', array('name'=>'frontend'));

$session = Mage::getSingleton('checkout/session');
$items = $session->getQuote()->getAllVisibleItems();
foreach ($items as $item) {
//$canProceed=0;
echo $productname = $item->getName();   //HERE IS THE COMPLETE CODE:<?php 
ini_set('display_errors',true);
require_once('../app/Mage.php') ;
Mage::setIsDeveloperMode(true);
umask(0);
Mage::app();


  //Getting buyer's country label

 $bcountry1 =  $_REQUEST['country']; //gets country code

$_countries = Mage::getResourceModel('directory/country_collection')
                                ->loadData()
                                ->toOptionArray(false);

foreach($_countries as $_country){
if ($_country['value']==$bcountry1){$bcountry = $_country['label'];}
}
//Fetching vendor for each product

$config  = Mage::getConfig()->getResourceConnectionConfig("default_setup");

$dbinfo = array("host" => $config->host,
        "user" => $config->username,
        "pass" => $config->password,
        "dbname" => $config->dbname    );

$hostname = $dbinfo["host"];
$user2 = $dbinfo["user"];
$password = $dbinfo["pass"];
$dbname = $dbinfo["dbname"];


$dbhandle = mysql_connect($hostname,$user2,$password) or die("Unable to connect"); 
$selected = mysql_select_db("myart2",$dbhandle);


$Proceed=0;

//Getting all products in the cart
//echo $cart = Mage::getSingleton('checkout/cart')->getItemsCount();
// Secret Sauce - Initializes the Session for the FRONTEND
// Magento uses different sessions for 'frontend' and 'adminhtml'
Mage::getSingleton('core/session', array('name'=>'frontend'));

$session = Mage::getSingleton('checkout/session');
$items = $session->getQuote()->getAllVisibleItems();
foreach ($items as $item) {
//$canProceed=0;
$productname = $item->getName();

$product = Mage::getModel('catalog/product')->loadByAttribute('sku',     $item->getSku(), array('manufacturer'));
    $manufacturer =   $product->getResource()->getAttribute('manufacturer')->getFrontEnd()->getValue($product);


 $qry="select * from vendors WHERE company_name='$manufacturer'";
$result =  mysql_query($qry) or die("Unable to run select query");
  $row = mysql_fetch_array($result) or die("Unable to fetch data");

if( strcasecmp($row['country'],$bcountry)!=0 && $row['ships_abroad']!=1)
{$Proceed=1;$productnames[]=$productname;}
}

if($Proceed==1)
{
echo implode(',',$productnames);
}
else {echo 1; }
?>
4

1 回答 1

1

我已经测试了以下四个主要排列,并且代码在所有情况下都适用于股票 CE1.7 实例:

  • 创建客人报价
  • 通过登录将客人报价转换为客户报价
  • 通过登录实例化现有客户报价
  • 通过登录将客人报价与客户报价合并

如下调整服务器和应用程序环境参数以查看并排除任何错误(编辑 - 添加完整脚本;注意关闭“}”

<?php

error_reporting(E_ALL | E_STRICT);
ini_set('display_errors',true);
require_once('../app/Mage.php') ;
Mage::setIsDeveloperMode(true);
umask(0);
Mage::app();

$session = Mage::getSingleton('checkout/session');
$items = $session->getQuote()->getAllVisibleItems();

foreach ($items as $item) {
    //$canProceed=0;
    echo $productname = $item->getName();
}
于 2012-12-31T16:38:03.503 回答