0

最近我将测试服务器上的 magento 从 1.4.1.1 升级到 1.7.0.2

以前所有产品都是虚拟产品,没有真正的发货。

我通过shell升级了magento,除了这个问题之外它很顺利:

旧产品不可见(无论是在前端还是后端),但在添加新产品时它们在交叉销售/相关产品中可见(所有产品仅在此处可见)

我可以通过访问 url index.php/admin/catalog_product/edit/id/[id] 来编辑任何产品

即使在保存/编辑产品之后,它在管理员/前端也是不可见的。

类别计数工作正常。

当我添加新产品时,它运行良好。(连续身份证)

尝试完全清除 var 文件夹及其内容,重置文件权限,清空数据库日志表并做了我所知道的一切,但没有任何用处。

大约有 4500 种产品我不能失去。请帮我正确显示。

一些改进:

将此数据库与新创建的数据库进行比较后,我发现表catalog_product_entity_int中没有与属性相关的条目visibility。手动将它们添加到存储 id 设置为 admin 的表中解决了问题。但是试图通过所有产品的php代码来做到这一点。尝试了以下代码但无法正常工作:

 <?php

 require_once("app/Mage.php");
 $store_id = '0';
 Mage::app()->setCurrentStore($store_id);

 $productModel = Mage::getModel('catalog/product');
 $products = $productModel->getCollection()->getAllIds();

 foreach($products as $productId)
 {
     $product = $productModel->load($productId);
     $product->setVisibility(4);
     $product->save();
     echo $productId.' Finished<br>';
 }

 ?>

但是上面的代码不起作用。有什么帮助吗???

由于某种原因,上面的代码不起作用。所以我使用自定义代码将值直接插入数据库。

<?php
$con = mysql_connect($host, $user, $pass);
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }
mysql_select_db($db, $con);


$sql=mysql_query("SELECT DISTINCT(entity_id) AS pid FROM magentocatalog_product_entity_int ORDER BY entity_id DESC;");
while($row = mysql_fetch_array($sql)) {
    if ($row['pid']<4152) { //Condition for Mangento 1.7.0.2 version products, below this pid, all are Magento 1.4.1.1. version products.
        $insquery=mysql_query("INSERT INTO `magentocatalog_product_entity_int` (`value_id`, `entity_type_id`, `attribute_id`, `store_id`, `entity_id`, `value`) VALUES ('', 4, 89, 0, ".$row['pid'].", 0);");//89 is attribute id and 4 is default value for showing in admin. Tested against newly created product which has these values.
        echo $row['pid']." Finished<br />";
    }
}


mysql_close($con);
?>

产品现在显示在管理中,但不在商店中。所以修改了上面的代码,为每个商店添加了值。问题已解决。但仍然想确定这是正确的方法吗?

注意:在我的 Magento 1.4.1.1 中,以上两个属性可以从属性集中删除,但在 Magento 1.7.0.2 中不能。

4

0 回答 0