установить изображение в категорию программно в Magento - PullRequest
5 голосов
/ 02 июня 2011

Я пытаюсь добавить категорию в magento по этому коду:

$_cat = new Mage_Catalog_Model_Category();
$_cat->setName($nom);
$_cat->setUrlKey($nom);
$_cat->setIsActive(1);

$parentCategory = Mage::getModel('catalog/category')->load(2);
$_cat->setPath($parentCategory->getPath());             
$mediaAttribute = array ('thumbnail');
$_cat->addImageToMediaGallery($other_file, $mediaAttribute, true, false);
$_cat->save();

работает, но изображение не вставлено, мне нужно знать, какой правильный код для вставки изображения категории программно,

Спасибо тебе.

Ответы [ 5 ]

1 голос
/ 08 февраля 2016

Вот рабочий пример:

$newCategory = Mage::getModel('catalog/category');
$newCategory->setName('Category name');
$newCategory->setUrlKey('category-name');
$newCategory->setIsActive(1);

$parentCategory = Mage::getModel('catalog/category')->load(2);
$newCategory->setPath($parentCategory->getPath());             
$newCategory->setImage('file_name.jpg');
$newCategory->save();

Убедитесь, что изображение вашей категории 'file_name.jpg' загружено в media / catalog / category / file_name.jpg

Кстати, любой ответупоминание «addImageToMediaGallery» неверно.Этот метод существует только для продукта, а не для категории.Также правильное имя атрибута для категории - «изображение», а не «миниатюра».

1 голос
/ 03 июня 2011

хорошо, я решил, чтобы добавить дополнительные данные, напишите:

$data['display_mode'] = 'PRODUCTS_AND_PAGE';
$data['page_layout'] = 'one_column';
$data['thumbnail'] = $path; // path to your image 
$_cat->addData($data);  

и поместите ваше изображение в YOUR_MAGENTO / media / catalog / category / NAME_OF_IMAGE.jpg

Cheers.

0 голосов
/ 19 мая 2015

Я использую следующий фрагмент кода на основе Mage_Catalog_Model_Product_Attribute_Backend_Media и Mage_Catalog_Model_Category_Attribute_Backend_Image, чтобы скопировать изображение из внешнего пути в свойство эскиза, включая суффикс _1, если необходимо.

$attr = 'thumbnail';
$new_file = ...; // absolute path to your file
$category = ...; // your category  model

$path = Mage::getBaseDir('media') . DS . 'catalog' . DS . 'category' . DS;
if (md5_file($new_file) != md5_file($path.$category->getData($attr)) {
    $ioObject = new Varien_Io_File();
    try {
        $ioObject->open(array('path'=>$path));
    } catch (Exception $e) {
        $ioObject->mkdir($path, 0777, true);
        $ioObject->open(array('path'=>$path));
    }
    $destFile = $path . Mage_Core_Model_File_Uploader::getNewFileName($path . basename($new_file));
    $ioObject->cp($new_file, $destFile);
    $category->setData($attr, basename($destFile));
}
0 голосов
/ 03 июня 2011

ElGabbu, в вашем коде я получаю эту ошибку:

   PHP Fatal error:  Uncaught exception 'Varien_Exception' with message 'Invalid method Mage_Catalog_Model_Category::addImageToMedia                                                 Gallery(Array
    (
        [0] => image.jpg
        [1] => Array
            (
                [0] => thumbnail
            )

        [2] => 1
        [3] =>
    )
    )' in /home/www/magento/lib/Varien/Object.php:569

что мой код, который работал на меня:

$_cat = new Mage_Catalog_Model_Category();
$_cat->setName($nom);
$_cat->setUrlKey($nom);
$_cat->setIsActive(1);
$parentCategory = Mage::getModel('catalog/category')->load(2);
$_cat->setPath($parentCategory->getPath());     
$_cat->setIsAnchor(1);
$data['display_mode'] = 'PRODUCTS_AND_PAGE';
$data['page_layout'] = 'one_column';
$data['thumbnail'] = $path;
$_cat->addData($data);                                          
$_cat->save();
0 голосов
/ 03 июня 2011

Вы могли бы также сделать его более чистым и читабельным:

$parentCategory = Mage::getModel('catalog/category')->load(2);

$newCategory = Mage::getModel('catalog/category');
$newCategory->setName($nom);
$newCategory->setUrlKey($nom);
$newCategory->setIsActive(1);    
$newCategory->setPath($parentCategory->getPath());
$newCategory->addImageToMediaGallery($other_file, array ('thumbnail'), true, false);
$newCategory->setDisplayMode('PRODUCTS_AND_PAGE');
$newCategory->setPageLayout('one_column');
$newCategory->setThumbnail($path); // path to your image 
$newCategory->save();

Что вы думаете?

...