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

次の 4 つの主要な順列をテストしました。コードは、すべてのケースでストック 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 に答える