Размер SKU в Magento - PullRequest
       12

Размер SKU в Magento

2 голосов
/ 19 января 2010

Как разрешить SKU быть длиннее 34 символов (для простых продуктов) для всех продуктов?

Когда я добавляю новый продукт (простой) и вводу более 34 символов, Magento сокращает его до 34 после сохранения.

В базе данных атрибуты 'sku' (для элемента квитирования, элемента заказа, элемента счета-фактуры, элемента отгрузки) из таблицы eav_attribute содержат varchar (255).Для Catalog_Product_Entity приписывается VarChar (64).В любом случае это больше 34 символов.Таким образом, я мог бы изменить SKU на 64 символа без внесения каких-либо изменений в базу данных, правильно?

Как мне это сделать?У меня есть хорошее понимание кода magento на стороне пользователя, но не на стороне администратора.Можете ли вы предложить мне хороший учебник по внесению изменений на стороне администратора, который мог бы помочь мне самому разобраться в этом вопросе.

Спасибо, Марготс

Ответы [ 3 ]

2 голосов
/ 17 января 2012

Это нечто большее, чем это даже ...

Изменить поле SKU в: catalog_product_entity на varchar (255) Изменить поле SKU в: catalog_product_flat_some_number на varchar (255)

И тогда вам нужно будет отредактировать Sku.php, чтобы проверка не вызывала администратора.

Изменение: const SKU_MAX_LENGTH = 64;

до: const SKU_MAX_LENGTH = 255;

Это позволит max_length быть 255 вместо 64 ... сделать все, что вы захотите.

1 голос
/ 23 марта 2010

@ latvian Вид модификации, которую вы предлагаете в качестве решения, не очень хорошая идея, поскольку он нарушает совместимость с установкой ядра и может привести к непредсказуемому поведению в будущем при обновлении ядра. Этот быстрый и грязный способ решения проблем только создаст проблемы в будущем.

Я рекомендую добавить в объект продукта пользовательский атрибут с именем custom_sku , который может быть строкой, и вы можете делать это сколько угодно. Вот ссылка о том, как добавить пользовательский атрибут в вашу установку.

0 голосов
/ 28 января 2010

Я получил это сам. Вот что я сделал.

Во-первых, я допустил ошибку, сосчитав выше. По умолчанию Magento позволяет SKU # быть длиной не более 64. Это связано с тем, что самый короткий из атрибутов SKU (в таблице catalog_product_entity) в БД имеет значение varchar (64).

  1. Измените атрибут SKU в таблице catalog_product_entity на varchar (255) или любую нужную длину. Если эта длина меньше 255, у вас все в порядке, в противном случае вам придется изменить другие атрибуты SKU, такие как Order SKU, Quote SKu и другие в DB

  2. Задавая слишком большую длину артикула, она разрушает сетку в Каталоге-> Управление продуктом. Одно из решений - вставить следующий код в /design/adminhtml/default/default/template/widget/grid.phtml строку 157 (после этой строки: <?php foreach ($this->getCollection() as $_index=>$_item): ?>)

    <?php //truncates SKU when too large
    $sku = $_item->getData('sku');
    if(strlen($sku)>60){
        $sku = substr($sku,0,60);
    }
    $_item->setData('sku',$sku);
    ?>
    

Теперь, несмотря на то, что вы не сможете увидеть полный номер SKU в Каталоге-> Управление продуктом, вы увидите полный номер SKU при двойном щелчке / редактировании продукта по отдельности.

Надеюсь, это было полезно.

Best

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