سؤال

كيف يمكنني السماح لـ SKU أن تكون أطول من 34 حرفًا (للحصول على منتجات بسيطة) لجميع المنتجات؟

عندما أضيف منتجًا جديدًا (بسيطًا) وأدخل أكثر من 34 حرفًا ، يقوم Magento بقطعه إلى 34 بعد الادخار.

في قاعدة البيانات ، سمات "SKU" (لعنصر Quete ، عنصر الطلب ، عنصر الفاتورة ، عنصر الشحن) من جدول EAV_ATTribute Hold Varchar (255). لـ Catalog_product_entity المنسوبة هي Varchar (64). في كلتا الحالتين ، هو أكثر من 34 Charcter. وبالتالي ، يمكنني تغيير SKU إلى 64 حرفًا دون إجراء أي تغيير في قاعدة البيانات ، صحيح؟

كيف يمكنني فعل ذلك؟ لدي فهم جيد لرمز Magento جانب المستخدم ، ولكن ليس جانب المسؤول. هل يمكنك اقتراح تعليمي جيد حول إجراء تغييرات في جانب المشرف والتي يمكن أن تساعدني في تحديد هذا السؤال بنفسي.

شكرا لك يا مارغوت

هل كانت مفيدة؟

المحلول

latvian نوع التعديل الذي تقترحه كحل ليس فكرة جيدة جدًا لأنه يكسر التوافق مع التثبيت الأساسي وقد يخلق سلوكًا غير متوقع في المستقبل عند ترقية النواة. هذه سريع و قذر طريقة حل المشاكل ستخلق مشاكل فقط في المستقبل.

ما أوصي به هو إضافة سمة مخصصة إلى كائن المنتج المسمى Custom_sku يمكن أن تكون هذه سلسلة ويمكنك صنعها طالما تريد. هنا حلقة الوصل حول كيفية إضافة سمة مخصصة إلى التثبيت الخاص بك.

نصائح أخرى

هناك ما هو أكثر من هذا حتى ....

تغيير حقل 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 .. اجعله ما تريد.

لقد حصلت على هذا بنفسي. هذا ما فعلته.

أولاً ، ارتكبت خطأ في العد في ما سبق. بشكل افتراضي ، يتيح Magento Sku# أن يكون 64 كحد أقصى. وذلك لأن أقصر سمات SKU (في الجدول Catalog_product_entity) في DB يتم تعيينه على Varchar (64).

  1. قم بتغيير سمة SKU في جدول Catalog_Product_entity إلى Varchar (255) أو أي طول تريده. إذا كان هذا الطول أقل من 255 ، فأنت بخير وإلا يجب عليك تغيير سمات SKU الأخرى مثل Order SKU و QUOTE SKU وغيرها في DB

  2. من خلال ضبط طول SKU كبير جدًا ، فإنه يكسر الشبكة في إدارة المنتج. يتمثل أحد الحلول في إدراج التعليمات البرمجية التالية في/digign/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 الكامل في Catalog-

آمل أن يكون مفيدًا.

أفضل

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top