1

大量の商品(5,000個)を持っているため、インポートエクスポートの使用を控えたい

基本的に、私はクライアントのために非常に大規模な方法でカタログを表示するために、テンプレートのいくつかの重い構成を行いました.ログインしない限り、フォーマットは貿易のみであるため、登録することはできません。したがって、基本的にすべての製品にはグループ化された製品があり、フレーバーはこの製品に関連付けられた単純な製品として設定されます。

これは時々物事を行うための最良の方法ではないことを理解していますが、いわば法案に適合していました。問題は、マスター カテゴリ (ブランド) をクリックするとすべての単純な製品が表示されることですが、グループ化された製品のみを表示したいということです。

API を使用して、Magento ですべての単純な製品を見つけて、可視性を個別に非表示に変更する方法を説明できますか? この方法では、マスターの一部としてのみ表示されます。

添付のフォーマットを理解するためにどのように見えるかを参照してください。 これが私たちが見ている方法です

ただし、これは、ユーザーが商品を検索したときに起こることです (これらは、MASS で非表示にする必要がある単純な商品です)。 ここに画像の説明を入力

システム内のすべての単純な製品を通過し、可視性を個別に非表示に設定する API ループを作成する方法を教えてください。

4

1 に答える 1

0

これを試してみてください。SOAP-API を使用していないことはわかっていますが、Magento に直接ハングアップします。

require_once($_SERVER['DOCUMENT_ROOT'] . '/app/Mage.php');
umask(0);

// Retrieve store-codes
$storelist = Mage::app()->getStores();
$storelang = array();
foreach ($storelist as $id => $s) {
    $storelang[$id] = substr(Mage::getStoreConfig('general/locale/code', $id), 0, 2);
}
...
$storeId = Mage::app()->getStore()->getId();
Mage::app()->setCurrentStore(Mage_Core_Model_App::ADMIN_STORE_ID);
$pModel = Mage::getModel('catalog/product');
$products = $pModel->getCollection();
foreach ($products as $product) {
    if ($product->isConfigurable()) {
        $childProducts = Mage::getModel('catalog/product_type_configurable')
                ->getUsedProducts(null, $product);
        foreach ($childProducts as $child) {
            foreach ($storelang as $lang_key => $lang_value) {
                $child->setStoreId(Mage::app()->getStore($lang_value)->getId());

                // 1 = not visible individually
                // 2 = catalog
                // 3 = search
                // 4 = catalog + search

                $child->setVisibility(1);
                try {
                    $child->save();
                } catch (Exception $e) {
                    echo $e->getMessage();
                }
            }
        }
    }

ご不明な点がございましたら、お気軽にお問い合わせください。これが役立つことを願っています。ではごきげんよう。

于 2014-05-09T09:10:31.747 に答える