我目前正在使用以下代码创建变量标签,以便在Magento CMS中打印出产品的动态数据的各个部分:
<?php
$_product = Mage::getModel('catalog/product')->loadByAttribute('sku', $this->getData('sku'));
$_categories = Mage::getModel('catalog/category')->loadByAtribute('id', $this->getData('id'));
switch($this->getData('valuetype')){
case "retail":
echo number_format($_product->getPrice(), 2, '.', ',');
break;
default:
case "final":
echo number_format($_product->getFinalPrice(), 2, '.', ',');
break;
case "diffDollar":
$difference = $_product->getPrice() - $_product->getFinalPrice();
echo number_format($difference, 2, '.', ',');
break;
case "diffPercent":
$difference = (1 - ($_product->getFinalPrice() / $_product->getPrice())) * 100;
echo number_format($difference, 0, '.', ',');
break;
case "prodName":
echo ($_product->getName());
break;
case "urlPath":
$prodName = ($_product->getName());
$prodName = strtolower($prodName);
$path = explode(" ", $prodName);
$path = implode("-", $path);
echo $path;
break;
case "catName":
$catName = ($_categories->getName());
echo $catName;
break;
}
?>
在CMS内部,我将使用以下内容来引入$ _categories的数据:
{{block type="catalog/category" id="176" template="catalog/product/cmsprice.phtml" valuetype="catName"}}
对于$ _product我会使用:
{{block type="catalog/products" sku="1000145" template="catalog/product/cmsprice.phtml" valuetype="retail"}}
使用$ _product可以很好地工作但是当我尝试使用$ _categories打印出类别名称时,CMS中的页面不会在主页上呈现,但页面的其余部分会显示,并且不会显示任何错误。
我觉得我接近这个但却看不到我所缺少的东西。任何帮助将不胜感激
答案 0 :(得分:1)
您在开始时获取的模型看起来有点不对:
$_product = Mage::getModel('catalog/product')->loadByAttribute('sku', $this->getData('sku'));
$_categories = Mage::getModel('catalog/category')->loadByAtribute('id', $this->getData('id'));
看起来您正在尝试使用产品的ID加载类别模型? 您需要一个类别ID来加载类别实例。
另外,不确定您是否担心,但您如何应对多个类别的产品?
如果您已经有了产品实例,您想要找到它所在的所有类别名称, 这是我跑的地方:
$categories = $_product->getCategoryCollection()
->addAttributeToSelect('name')
->addAttributeToFilter('is_active', array('eq' => 1));
$value = array();
foreach($categories as $category) {
$value[] = $category->getName();
}