Magento Создает Атрибут Продукта, Который Является Целым Числом


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

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

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

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

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

Author: Josh Pennington, 2010-09-08

4 answers

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

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

 5
Author: Alan Storm, 2010-09-08 02:56:09

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

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

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

Надеюсь, это поможет, Джей Ди

 3
Author: Jonathan Day, 2010-09-08 02:53:21

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

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

Твое здоровье, Джонатан

 0
Author: Jonathan Day, 2010-09-08 02:57:57

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

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

Позже вы должны создать установочный файл 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
Author: Łukasz L., 2010-11-30 16:52:05