Добавление разных размеров thumnail к продуктам в magento - PullRequest
1 голос
/ 04 марта 2011

У меня есть магазин magento, в котором продаются очки, одежда и т. Д. Проблема в том, что мне бы хотелось, чтобы в моих очках были миниатюры размером 300px X 100px, а в одежде - миниатюры 300px X 300px.

Я могу придумать несколько разных маршрутов, которые я могу выбрать, но я не уверен в том, какое значение каждый маршрут будет иметь для возможности обновления моего магазина.(в настоящее время использую Magento 1.4.2, поскольку я пока не верю в 1.5.x)

Маршрут 1) Добавление дополнительных размеров изображения к продуктам

Так что по этому маршруту я быкаким-то образом добавьте дополнительное изображение к моим продуктам в области администратора, и каждый продукт будет иметь большой палец размера очков и большой палец размера одежды.

Маршрут 2) Изменение размера эскиза в зависимости от набора атрибутов

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

Если у кого-то есть какие-либо другие идеи относительнокак это может быть достигнуто, будет высоко оценено!

1 Ответ

2 голосов
/ 04 марта 2011

Использование разных наборов атрибутов для каждого продукта (очки и одежда) - очень хорошая идея для такого рода магазинов.Однако вы также можете попробовать использовать отдельный атрибут с указанием типа продукта (между glasses и clothing).

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

public function resizeImage($imageName, $width=NULL, $height=NULL, $imagePath=NULL) {
    $imagePath = str_replace("/", DS, $imagePath);
    $imagePathFull = Mage::getBaseDir('media') . DS . $imagePath . DS . $imageName;

    if ($width == NULL && $height == NULL) {
        $width = 100;
        $height = 100;
    }
    $resizePath = $width . 'x' . $height;
    $resizePathFull = Mage::getBaseDir('media') . DS . $imagePath . DS . $resizePath . DS . $imageName;

    if (file_exists($imagePathFull) && !file_exists($resizePathFull)) {
        $imageObj = new Varien_Image($imagePathFull);
        $imageObj->constrainOnly(TRUE);
        $imageObj->keepAspectRatio(TRUE);
        $imageObj->resize($width, $height);
        $imageObj->save($resizePathFull);
    }

    $imagePath = str_replace(DS, "/", $imagePath);
    return Mage::getBaseUrl("media") . $imagePath . "/" . $resizePath . "/" . $imageName;
}

Вам, безусловно, потребуется внести некоторые изменения в различные измерения, которыеВы хотите предоставить, но все же это очень хороший кусок кода ( доступен здесь ), который много раз спас мою спину.

Надеюсь, это поможет.

...