Загрузка изображения клиента и изменение его размера в Magento - PullRequest
2 голосов
/ 21 марта 2012

Я использую версию Magento 1.11.2.0 и хочу добавить опцию, позволяющую клиентам загружать свое изображение на страницу Моя учетная запись.

Я добавил новый атрибут customer типа файла изображения в admin, и это работает довольно хорошо. Но у него есть только параметры Максимальная ширина изображения, Максимальная высота изображения для изображения. Я хотел бы добавить два других ввода, чтобы я мог указать ширину и высоту для изменения размера изображения при загрузке своего аватара.

Есть ли способ сделать это? Мне также любопытно, какой модуль / класс используется для атрибута загрузки изображения на клиентов.

1 Ответ

7 голосов
/ 02 октября 2012

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

$installer = new Mage_Customer_Model_Entity_Setup('core_setup');

$installer->startSetup();

$vCustomerEntityType = $installer->getEntityTypeId('customer');
$vCustAttributeSetId = $installer->getDefaultAttributeSetId($vCustomerEntityType);
$vCustAttributeGroupId = $installer->getDefaultAttributeGroupId($vCustomerEntityType, $vCustAttributeSetId);

$installer->addAttribute('customer', 'avatar', array(
        'label' => 'Avatar Image',
        'input' => 'file',
        'type'  => 'varchar',
        'forms' => array('customer_account_edit','customer_account_create','adminhtml_customer','checkout_register'),
        'required' => 0,
        'user_defined' => 1,
));

$installer->addAttributeToGroup($vCustomerEntityType, $vCustAttributeSetId, $vCustAttributeGroupId, 'avatar', 0);

$oAttribute = Mage::getSingleton('eav/config')->getAttribute('customer', 'avatar');
$oAttribute->setData('used_in_forms', array('customer_account_edit','customer_account_create','adminhtml_customer','checkout_register'));
$oAttribute->save();

$installer->endSetup();

Ключевым моментом здесь является установка input на file. Это приводит к тому, что система отображает загрузчик файлов на внутренней стороне и ищет загруженный файл при обработке формы. type - это varchar, потому что для хранения имени файла используется атрибут varchar.

После создания атрибута вам необходимо добавить элемент ввода в шаблон persistent/customer/form/register.phtml. Пример кода для этого выглядит следующим образом:

<label for="avatar"><?php echo $this->__('Avatar') ?></label>
<div class="input-box">
    <input type="file" name="avatar" title="<?php echo $this->__('Avatar') ?>" id="avatar" class="input-text" />
</div>

Здесь также важно отметить, что идентификатор и имя поля должны совпадать с кодом вашего атрибута. Также не забудьте добавить enctype="multipart/form-data" в тег <form>.

Это позволит пользователю загружать изображение аватара при регистрации. Впоследствии, когда изображение будет отображаться, вы захотите изменить его размер до подходящих размеров для вашего сайта. Кодовые помощники изображений Magento предназначены для работы с изображениями Продуктов, но в этом блоге покажет, как создавать вспомогательные функции, которые могут изменять размер изображения, и кэшировать измененный размер файла. Я использовал эти инструкции раньше, чтобы изменить размер изображения категории, и они хорошо работают.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...