Magento Создать атрибут продукта, который является целым числом - PullRequest
3 голосов
/ 08 сентября 2010

Таким образом, очевидно, что поддержка, которую вы получаете от Varien при покупке Enterprise Edition, почти бесполезна, поэтому я надеюсь, что кто-то здесь может привести меня в правильном направлении.

В Magento я бы хотелсоздайте атрибут продукта типа int.Когда я создаю атрибут из панели администратора, он создает его как varchar.

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

Вариен сказал мне, что для того, чтобы получить целое число, мне нужно обновить базу данных.Мне кажется, что мне пришлось бы изменить столбец backend_type в таблице eav_attribute на int, и, надеюсь, следует переместить значения в таблицу catalog_product_entity_int вместо того, чтобы переходить в таблицу catalog_product_entity_varchar.Имеет ли это смысл?Кто-нибудь еще делал это раньше?

Теперь, когда у меня возник этот вопрос, стоит ли этого ожидать от поддержки Varien?Пока что их поддержка кажется довольно бесполезной.Кажется, что спросить, как сделать что-то такое простое, не будет большой проблемой (тем более, что я спросил их, как это сделать, а не делать это для меня)

Ответы [ 4 ]

5 голосов
/ 08 сентября 2010

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

Если бы вы могли начать все заново, я бы добавил программный атрибут к модели (вокруг заголовка «Окончательный массив пар значений ключа, определяющих атрибут»). Даже если вы не можете начать с нуля, программно создайте целочисленный атрибут и измените базу данных до и после, чтобы увидеть, что должно произойти на сервере для создания атрибута.

3 голосов
/ 08 сентября 2010

Вы на правильном пути, изменив backend_type в eav_attribute, однако это не приведет к автоматической миграции значений атрибута на catalog_product_entity_int, вам нужно будет выполнить запрос INSERT INTO SELECT , чтобы принять ваши значения от catalog_product_entity_varchar через.

Если вы создаете свой собственный модуль (который вам в любом случае потребуется для расчета общего объема продаж по каждому продукту), вы можете вставить новый атрибут типа int через файл mysql-install для этого сообщения в блоге . Кроме того, расширение для создателя модуля предоставит вам основу модуля для начала работы.

Другой вариант - оставить атрибут как varchar и изменить сортировку категории так, чтобы он пропускал атрибут как int. Но я думаю, что изменение типа безопаснее и эффективнее.

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

0 голосов
/ 30 ноября 2010

У меня была точно такая же проблема.Дополнительная проблема заключалась в том, что я не хотел терять значения атрибутов.

Прежде всего вам необходимо экспортировать продукты с атрибутом по системе потока данных magento (System / ImportExport / Profiles).Вам необходимо создать профиль для экспорта и пометить в Экспорте: «только сопоставленные поля».Вы можете использовать sku и атрибут, который вы хотите изменить для целого числа в базе данных.

Позже вы должны создать установочный файл sql в любом модуле для изменения базы данных:

mysql4-install-0.1.0.php

$installer->startSetup();
$installer->updateAttribute('catalog_product', '<<your_attribute_code>>', array(
'backend_type'    => 'int',
));
$this->endSetup();
?>

Позже очень важно переиндексировать product_attribute и product_flat_data.

Следующим шагом будет пометить все товары, которые используют этот атрибут, и с помощью действия «обновить атрибуты» вы должны установить значение, например, на 100.

Теперь переиндексируем снова !!!

и импорт файла другим профилем в потоке данных.

Удачи!

0 голосов
/ 08 сентября 2010

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

На их веб-странице прямо сказано, что Не включено = Разработка кода, Поддержка разработки, Пользовательские расширения и т. Д ...

Приветствия, Джонатан

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