magento - пользовательский тип атрибута, загрузка файла - PullRequest
3 голосов
/ 11 февраля 2011

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

Я не ищу код, просто несколько советов о том, как лучше всего достичь этого

Ответы [ 4 ]

2 голосов
/ 31 мая 2011

Я думаю, что вы захотите создать свою собственную "вкладку" на странице "Управление-> Продукты" в приложении администратора, а затем внутри нее вы захотите использовать методику, такую ​​как ссылка здесь для загрузчика:

http://www.magentocommerce.com/boards/viewthread/11667/P0/

Фактический процесс сохранения ссылки в качестве атрибута на продукте может быть либо пользовательским атрибутом, который вы определяете на продукте, а затем egt / set на этой новой вкладке администратора или вы можете посмотретьрасширить существующую модель продукта, создав собственный класс модели и управляя сохранением новой модели, подключив события сохранения продукта.

Для добавления настраиваемой вкладки на страницу «Управление-> Продукт», с которой я началэтот пример:

http://fishpig.co.uk/custom-tabs-magento-product-admin/

1 голос
/ 03 марта 2016

, если вы хотите добавить загрузку файла для клиента / продукта. просто создайте связанный атрибут для этого, и в админке вы найдете опцию и будете работать правильно, а для внешнего интерфейса просто создайте файл ввода. загрузите его через 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);
    .....

файл должен быть сохранен на носителе, в папке клиента для атрибута файла клиента, если вы хотите использовать встроенные функции.

1 голос
/ 12 февраля 2011

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

0 голосов
/ 10 апреля 2014

Прочитайте это блог .

Из вышеприведенного блога:

Каким из наиболее ожидаемых и нужных вещей в Magento является File Upload Custom Option.Как обсуждалось в прошлом году на форуме Magento, он не завершен и не протестирован.

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

HTML-код веб-интерфейса находится в:

приложение / дизайн / интерфейс / по умолчанию / по умолчанию / шаблон / каталог / продукт / вид / опции / тип / file.phtml

код JavaScript внешнего интерфейса в:

app / design / frontend / default / default / template / catalog / product / view / options.phtml
(optionFileUpload js object = асинхронная загрузка 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:

app / code / core / Mage / Catalog / etc / config.xml

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

Мы кодируем модуль аналогичной функциональности для одного из наших клиентов, как мы говорим, но мы скрестили пальцы, чтобы увидеть эту опцию в следующем Magenдо версии!

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