Не уверен, с чего начать в этом и какое решение было бы лучшим. Мне нужно иметь атрибут продукта, который поддерживает загрузку файлов, для цели изображения.
Я не ищу код, просто несколько советов о том, как лучше всего это сделать.
Не уверен, с чего начать в этом и какое решение было бы лучшим. Мне нужно иметь атрибут продукта, который поддерживает загрузку файлов, для цели изображения.
Я не ищу код, просто несколько советов о том, как лучше всего это сделать.
Я думаю, вы захотите создать свою собственную «вкладку» на странице «Управление» -> «Продукты» в приложении администратора, а затем внутри этого вы захотите использовать метод, подобный указанному здесь для загрузчика:
http://www.magentocommerce.com/boards/viewthread/11667/P0/ а>
Фактический процесс сохранения ссылки в качестве атрибута продукта может быть либо настраиваемым атрибутом, который вы определяете для продукта, а затем egt/set на этой новой вкладке администратора, либо вы можете расширить существующую модель продукта, создав свой собственный класс модели. и управление сохранением новой модели путем подключения к событиям сохранения продукта.
Чтобы добавить пользовательскую вкладку на страницу «Управление->Продукт», я начал с этого примера:
http://fishpig.co.uk/custom-tabs-magento-product-admin/
создайте новый атрибут и сохраните там путь к файлу, а в графическом интерфейсе предложите поле загрузки файла для этого
если вы хотите добавить загрузку файла для клиента/продукта. просто создайте для этого связанный атрибут, и в админке вы найдете опцию и будете работать правильно, а для внешнего интерфейса просто создайте ввод файла. загрузите его через загрузчик файлов magento в любой каталог и просто сохраните путь к файлу в атрибуте. Мой код для атрибута файла клиента для справки:
<label for="certificate"><?php echo $this->__('Re-Sale Certificate') ?></label>
<div class="input-box">
<input type="file" name="designer_certificate" title="<?php echo $this->__('certificate') ?>" id="designer_certificate" />
</div>
установщик атрибута файла
$installer = $this;
$installer->startSetup();
//$installer->getConnection()->addColumn($installer->getTable('customer/entity'), 'certificate', 'varchar(100)');
$installer->removeAttribute('customer', 'designer_certificate');
$installer->addAttribute("customer", "designer_certificate", array(
"type" => "varchar",
"backend" => "",
"label" => "Designer Certificate",
"input" => "file",
"source" => "",
"visible" => true,
"required" => false,
"default" => "",
"frontend" => "",
"unique" => false,
"note" => ""
));
$attribute = Mage::getSingleton("eav/config")->getAttribute("customer", "designer_certificate");
$used_in_forms=array();
$used_in_forms[]="adminhtml_customer";
$used_in_forms[]="checkout_register";
$used_in_forms[]="customer_account_create";
$used_in_forms[]="customer_account_edit";
$used_in_forms[]="adminhtml_checkout";
$attribute->setData("used_in_forms", $used_in_forms)
->setData("is_used_for_customer_segment", true)
->setData("is_system", 0)
->setData("is_user_defined", 1)
->setData("is_visible", 1)
->setData("sort_order", 100)
;
$attribute->save();
$installer->endSetup();
конфигурация:
<global>
....
<resources>
<designercertificate_setup>
<setup>
<module>Renegade_Account</module>
<class>Mage_Customer_Model_Entity_Setup</class>
</setup>
<connection>
<use>core_setup</use>
</connection>
</designercertificate_setup>
<designercertificate_write>
<connection>
<use>core_write</use>
</connection>
</designercertificate_write>
<designercertificate_read>
<connection>
<use>core_read</use>
</connection>
</designercertificate_read>
</resources>
....
</global>
Теперь загрузите файл и просто сохраните как
.....
$path = Mage::getBaseDir('media') . DS .'customer'. DS . 'designer-certificates' . DS;
if (!is_dir($path)) {
mkdir($path, 0777, true);
}
$filename = str_replace(' ', '_', trim($_FILES['designer_certificate']['name']));
Add a comment to this line
$uploader->save($path, $filename);
$file = "/designer-certificates/" . $filename;
$customer->setDesignerCertificate($file);
.....
файл должен быть сохранен на носителе, папка клиента для атрибута файла клиента, если вы хотите использовать встроенные функции.
Прочтите этот блог.
Одна из самых ожидаемых и необходимых вещей в Magento — это Пользовательская опция загрузки файлов. Как обсуждалось в прошлом году на форуме Magento, он не завершен и не протестирован.
Теперь у Magento уже есть внешний интерфейс и административная часть опции загрузки файлов, реализованная в темах. Так как бэкенд часть по-прежнему отсутствует, понимаю, что это все равно не работает, однако, если вам интересно, как это выглядит, читайте дальше..
Фронтенд html находится в:
приложение/дизайн/интерфейс/по умолчанию/по умолчанию/шаблон/каталог/продукт/представление/параметры/тип/файл.phtml
Код javascript внешнего интерфейса в:
app/design/frontend/default/default/template/catalog/product/view/options.phtml
(объект js optionFileUpload = асинхронная загрузка iframe)
Вы можете включить пользовательскую опцию загрузки файлов, если добавите:
<file translate="label" module="adminhtml">
<label>File</label>
<render>adminhtml/catalog_product_edit_tab_options_type_file</render>
<types>
<file translate="label" module="adminhtml">
<label>File Upload</label>
</file>
</types>
</file>
внутренний узел:
config-›global-›catalog-›product-›options-›custom-›groups
in:
приложение/код/ядро/Маг/Каталог/и т.д./config.xml
Теперь у вас есть новая опция загрузки файлов, которую вы можете добавить к продукту!
Пока мы разрабатываем модуль с аналогичной функциональностью для одного из наших клиентов, но мы скрестили пальцы, чтобы увидеть эту опцию в следующей версии Magento!