1

我们有一个属性代码web_availability,用于向客户传达不同形式的产品可用性 - 示例:可用性“80”应该在搜索结果和/或产品详细信息页面上显示“仅限商店”。我们设置的每个可用性值都会在 magento 中自动分配一个选项值,如下所示:

<input type="text" class="input-text required-option" value="80" name="option[value][532][0]">

我将变量声明为:

    <?php
$_shipping_messaging = $_product->getShippingMessaging(); //looks for a value of "0" or "1" to assign either Free Shipping, or Plus Shipping Messaging
$_shipping_price = $_product->getShippingPrice(); //if product is plus shipping this messages the approximate shipping price on the product

$web_avail_options = $_product->getResource()->getAttribute('web_availability')) {
foreach ($web_avail_options as $web_avail_option) {
    if ($web_avail_option['value'] == $_product->getData('web_availability')) {
        $web_availability = $web_avail_option['label'];
        }
  }
  ?>

将以下内容放入 magento 的 price.phtml 中:

    <?php
  if ($shipping_messaging == 0) {
      echo '+ $' . number_format($_shipping_price, 2) . " Shipping"; // displays "+ $x.xx Shipping" on the product page
  } elseif ($_shipping_messaging == 1) {
      echo "Free Shipping"; // displays "Free Shipping" on the product page
  }
  else ($web_avail_option == '70' || '80' || '90'); {
      echo "In Store Only";
  }

  ?>

运输消息(“免费送货”或“+ 4.80 美元运费)显示为我所期望的那样,但是无论产品的可用性如何,它总是显示“仅限商店”消息。我已经尝试了所有可以想象的组合 ==, <, >,以及使用我在开头声明的初始变量的不同部分?

4

1 回答 1

0

请注意您的代码,尤其是 else 语句。

else ($web_avail_option == '70' || '80' || '90'); { echo "In Store Only"; }

else 语句格式错误,请注意下面的代码。您的 else 语句正在检查网络可用性选项是否为 70,但您没有elseif在 OR 运算符之后使用 and ,您正在检查 80。嗯.. 80 始终为真。

一个解决方案:您可能希望将正确的状态保存在一个数组中(例如:$correct_status = array(70,80,90);。如果这些代码保存在一个数组中,您可以使用下面的 else 语句。

elseif(in_array($web_avail_option, $correct_status)) { echo "In store only"; }

于 2012-07-27T19:31:20.323 回答