Есть несколько шагов к процессу. Во-первых, вам нужно создать атрибут и добавить его в группы по умолчанию и набор атрибутов. Вот некоторый код, который можно добавить в скрипт установки для этого:
$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 предназначены для работы с изображениями Продуктов, но в этом блоге покажет, как создавать вспомогательные функции, которые могут изменять размер изображения, и кэшировать измененный размер файла. Я использовал эти инструкции раньше, чтобы изменить размер изображения категории, и они хорошо работают.