الحصول على قيمة السمة المنسدلة عند استخدام إضافة تريبوتوسليكت

magento.stackexchange https://magento.stackexchange.com//questions/29167

  •  11-12-2019
  •  | 
  •  

سؤال

عند تحميل مجموعة كيف يمكنني الحصول على نص قيمة السمة (وليس فقط رقم الخيار) عندما تكون سمة قائمة منسدلة.

مثال:

$collection = Mage::getResourceModel('catalog/product');
$collection->addAttributeToSelect('color'); // color  is a dropdown attribute

عند استخدام هذا الرمز ، يتم عرض معرف الخيار لـ color مثل:123 ، 117 إلخ.وليس قيم النص (مثل:الأحمر والأخضر الخ.)

عادة ما نكرر من خلال كل منتج ونحصل على نص السمة ولكن بما أن هذا يتم استخدامه في كتالوج - > إدارة المنتجات الصفحة أنا أبحث عن حل بديل.

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

المحلول

أفترض أنك تستخدم أولا Mage_Catalog_Model_Resource_Product_Collection وليس مجرد المورد كما هو مذكور في سؤالك.

الآن أنا أيضا على افتراض أن كنت حلقات من خلال نتائج مجموعتك.

foreach($collection as $product) {}

بمجرد حصولك على كائن المنتج ، يمكنك استدعاء الوظيفة getAttributeText وحدد رمز السمة.سيؤدي هذا إلى تحميل السمة احصل على المصدر ثم نص الخيار بناء على بيانات السمة المخصصة للمنتج.

public function getAttributeText($attributeCode)
{
return $this->getResource()
    ->getAttribute($attributeCode)
        ->getSource()
            ->getOptionText($this->getData($attributeCode));
}

حتى إذا كنت حلقات من خلال جمع الخاصة بك تحتاج إلى استدعاء ببساطة:

foreach ($collection as $product) {
    $color_value = $product->getAttributeText('color');
}

نصائح أخرى

حاول إضافة "_Value" بعد اسم السمة مثل هذا: giveacodicetagpre.

إذا كنت تستخدم جداول مسطحة للمنتجات، يمكنك البحث في جدول قاعدة بيانات Catalog_product_flat_1 لرؤية السمات المتاحة، وأعتقد.

هل تحتاج إلى فرز حسب القيم?إذا لم يكن الأمر كذلك ، يمكنك تحديد جميع خيارات السمات كملف $colors تجزئة مع واحد (!) الاستعلام ثم عرضها على النحو التالي $colors[$product->getColor()]

ربما يكون أسرع من تحديد كل قيمة في الحلقة أو إنشاء روابط إضافية ، ولكنه لا يعمل لفرز المجموعة :(

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