Magento 1.5.0.1で、各製品の名前とSKUに基づいてすべての製品メタタイトルを更新するPHPスクリプトを作成しました。スクリプトは、SSH経由でPHPを呼び出すことによって実行されます。
スクリプトを実行した後、M2E Pro(eBay同期モジュール)で、すべての製品が無効になっているように見えることに気付きました。
実際の製品を見ると、それらは無効にされていないので、私のスクリプトはどういうわけかイベントを偽造しているようです。
ただし、3,000以上の製品のうち、1つが無効になり、その後M2EProがeBayからリストを削除しました。
これが私のスクリプトです:
<?php
set_time_limit(0);
define('MAGENTO', "/home/discount/public_html");
require_once MAGENTO . '/app/Mage.php';
error_reporting(E_ALL);
ini_set('display_errors', '1');
umask(0);
Mage::app()->setCurrentStore(Mage_Core_Model_App::ADMIN_STORE_ID);
$storeId = Mage::app()->getStore('default')->getId();
$products = Mage::getModel('catalog/product')
->getCollection()
->addAttributeToSelect('sku')
->addAttributeToSelect('name')
->addAttributeToSelect('meta_title');
$total = count($products);
$count = 1;
foreach ($products as $product)
{
$mt = sprintf("%s [%s]", $product->getName(), $product->getSku());
$sku = $product->getSku();
if ($product->getMetaTitle() != $mt)
{
$percent = $count / $total;
echo $sku." ".$percent."\n";
$product->setMetaTitle($mt);
$product->save();
}
}
?>
奇妙なイベントを引き起こさずにメタタイトルを正しく更新するためにスクリプトに何をする必要があるのか知りたいですか?