プログラムによってカテゴリ属性を更新する


7

スクリプトを使用して何百ものカテゴリ属性を最適に更新する方法を理解できないようです。これに取り組む最良の方法として何か提案はありますか?インストーラーなどは使用しません。

回答:


10

多くのカテゴリがあり、いくつかの属性を更新したい場合は、以下のようなコードを使用できます。これは高速であり、更新するこれらの属性の値のみを保存します。このスクリプトはブラウザまたはターミナルから実行できます(ターミナルは、説明したような場合に適しています)。

<?php

require 'app/Mage.php';
Mage::app();

$resource = Mage::getResourceModel('catalog/category');

// here get category collection

foreach($collection as $category) {
    $category->setStoreId(0);    // 0 for default scope (All Store Views)
    $category->setData('attribute_code', $value);
    $resource->saveAttribute($category, 'attribute_code');
}

Magento 2でもほぼ同じように動作します
アントワーヌマーティン

0
<?php
//increase the max execution time
@ini_set('max_execution_time', -1);
//memory_limit
@ini_set('memory_limit', -1);

error_reporting(E_ALL);
ini_set('display_errors', '1');

// Start Despaly All Product Meta Title And Description
require_once('app/Mage.php'); //Path to Magento
umask(0);
Mage::app();

$categories = Mage::getModel('catalog/category')
                         ->getCollection()
                         // magic is prepared here..
                         ->addAttributeToSelect('*')
                         // then the magic happens here:
                         ->addAttributeToFilter('level', array('eq'=>4))
                         ->load();
    if (count($categories) > 0):

        foreach($categories as $category):

            $catId = $category->getId();
            $category = Mage::getModel('catalog/category')->load($catId);
            $resource = Mage::getResourceModel('catalog/category');
            //if($catId==1465):
                $CategoryName = $category->getName(); 
                $metaTitle = "Buy ".$CategoryName." Meta Title";
                $metaDescription = "Shop your favourite ".$CategoryName." Meta Description";
                //$category->setMetaTitle($metaTitle);
                //$category->setMetaDescription($metaDescription);
                //$category->save();

                $category->setData('meta_title', $metaTitle);
                $resource->saveAttribute($category, 'meta_title');
                $category->setData('meta_description', $metaDescription);
                $resource->saveAttribute($category, 'meta_description');

                $check = $category->getMetaTitle();
                echo "<pre>";
                print_r($catId);
                echo "<pre>";
                print_r($check);
                echo "\n";
            //endif; 

        endforeach;
     else: echo "No Results";
    endif;

?>`enter code here`
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.