سؤال

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

كان عرض المنتج والحصول على روابط الإضافة الصحيحة إلى سلة التسوق على الصفحة أمرًا سهلاً نسبيًا:

$_productId = '498';
$_product   = Mage::getModel('catalog/product')->load($_productId);
$_url       = Mage::helper('checkout/cart')->getAddUrl($_product);

كان الحصول على سعر الكمية 1 بما في ذلك الضريبة والعملة وبعض التنسيق أمرًا سهلاً أيضًا:

$_price = Mage::helper('core')->currency(Mage::helper('tax')->getPrice($_product, $_product->getFinalPrice()));

وينتج عنه <span class="price">€15,00</span>

ومع ذلك، هدفي هو الحصول على جدول تسعير مثل:

┌───────────┬───────────┬───────────┐
│  Single   │ ValuePack │ FamilyPack│
├───────────┼───────────┼───────────┤
│   €15     │    €10    │    €7.50  │
├───────────┼───────────┼───────────┤
│  Qty 1    │   Qty 5   │   Qty 10  │ 
└───────────┴───────────┴───────────┘ 

لم يكن الحصول على سعر الكمية * X أمرًا صعبًا أيضًا:

$_qty = 5; 
$_price = Mage::helper('core')->currency(Mage::helper('tax')->getPrice($_product, $_product->getFinalPrice($_qty)));

وكما هو متوقع، فإن هذا يؤدي إلى <span class="price">€10,00</span>

ومع ذلك، على الرغم من أنني قمت بتغيير $_qty، فإن ناتج السعرين الآخرين هو دائمًا نفس السعر الأول.

توضيح:

$_price_1 = Mage::helper('core .... $_product->getFinalPrice(1))); النتائج في €15
$_price_2 = Mage::helper('core .... $_product->getFinalPrice(5))); النتائج في €15 أيضًا
$_price_3 = Mage::helper('core .... $_product->getFinalPrice(10)); النتائج في €15 أيضًا

أفترض أن هذا له علاقة بتخزين Magento لسعر المنتج مؤقتًا بعد البحث الأول.

هل لدى أي شخص فكرة عن كيفية إنشاء هذا الجدول بالطريقة الصحيحة؟

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

المحلول

تبين أن الحصول على تسعير الطبقة لم يكن بهذه الصعوبة أيضًا لأن هذا متوفر في مصفوفة $_product->getFormatedTierPrice() (لاحظ الإملاء غير الصحيح!).

تبدو هذه المصفوفة كما يلي:

Array
(
    [32000-2] => Array
        (
            [price_id] => 50
            [website_id] => 4
            [all_groups] => 1
            [cust_group] => 32000
            [price] => 21.95
            [price_qty] => 2.0000
            [website_price] => 24.95
            [formated_price] => € 18,95
        )

    [32000-4] => Array
        (
            [price_id] => 52
            [website_id] => 4
            [all_groups] => 1
            [cust_group] => 32000
            [price] => 23.95
            [price_qty] => 4.0000
            [website_price] => 23.95
            [formated_price] => € 17,95
        )

    [32000-10] => Array
        (
            [price_id] => 56
            [website_id] => 4
            [all_groups] => 1
            [cust_group] => 3200024.95
            [price] => 22.95
            [price_qty] => 10.0000
            [website_price] => 22.95
            [formated_price] => € 16,95
        )

    [32000-25] => Array
        (
            [price_id] => 57
            [website_id] => 4
            [all_groups] => 1
            [cust_group] => 32000
            [price] => 19.95
            [price_qty] => 25.0000
            [website_price] => 21.95
            [formated_price] => € 15,95
        )

    [32000-50] => Array
        (
            [price_id] => 58
            [website_id] => 4
            [all_groups] => 1
            [cust_group] => 32000
            [price] => 19.95
            [price_qty] => 50.0000
            [website_price] => 19.95
            [formated_price] => € 14,95
        )

)

أحتاج فقط إلى عنصرين من هذه المجموعة متعددة الأبعاد:[price_qty] و[formated_price].

لذلك انتهى بي الأمر بالكود التالي:

$_productId = '498';
$_product   = Mage::getModel('catalog/product')->load($_productId);
$_single = Mage::helper('core')->currency(Mage::helper('tax')->getPrice($_product, $_product->getFinalPrice())); // Just the single product price
$_prices = array_column($_product->getFormatedTierPrice(), 'formated_price', 'price_qty'); // Extract price_qty and formated_price from Array of formatted tier prices

وفي جدول التسعير لدي الآن:

<li class="price">
  <?php 
    $_qty = '10.0000'; 
    if (array_key_exists($_qty, $_prices)) { 
      echo $_prices[$_qty]; 
    } else { 
    echo $_single; 
    } 
  ?>
</li>

مع else { echo $_single;} أضمن أنه إذا قام شخص ما بتغيير كمية الطبقة في الواجهة الخلفية (يتم ترميز كمية الطبقة حاليًا في ملف HTML الخاص بي) فإنني على الأقل أخرج سعر المنتج الفردي بدلاً من عدم وجود سعر على الإطلاق.

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