我有一个Magento商店,使用我购买的模板,我想添加其他产品标签提示。例如,目前我们有' Sale'和'新'作为标准。但是我想在库存中添加'或任何可能提出行动号召的其他内容。
以下是' labels.php'控制标签的文件(据我所知)。我想知道在设置产品属性(例如in_stock是/否)之后是否可以添加更多标签来获得额外的标签。
<?php
class Infortis_Ultimo_Helper_Labels extends Mage_Core_Helper_Abstract
{
/**
* Get product labels (HTML)
*
* @return string
*/
public function getLabels($product)
{
$html = '';
$isNew = false;
if (Mage::getStoreConfig('ultimo/product_labels/new'))
{
$isNew = $this->isNew($product);
}
$isSale = false;
if (Mage::getStoreConfig('ultimo/product_labels/sale'))
{
$isSale = $this->isOnSale($product);
}
if ($isNew == true)
{
$html .= '<span class="sticker-wrapper top-left"><span class="sticker new">' . $this->__('New') . '</span></span>';
}
if ($isSale == true)
{
$html .= '<span class="sticker-wrapper top-right"><span class="sticker sale">' . $this->__('Sale') . '</span></span>';
}
return $html;
}
/**
* Check if "new" label is enabled and if product is marked as "new"
*
* @return bool
*/
public function isNew($product)
{
return $this->_nowIsBetween($product->getData('news_from_date'), $product->getData('news_to_date'));
}
/**
* Check if "sale" label is enabled and if product has special price
*
* @return bool
*/
public function isOnSale($product)
{
$specialPrice = number_format($product->getFinalPrice(), 2);
$regularPrice = number_format($product->getPrice(), 2);
if ($specialPrice != $regularPrice)
return $this->_nowIsBetween($product->getData('special_from_date'), $product->getData('special_to_date'));
else
return false;
}
protected function _nowIsBetween($fromDate, $toDate)
{
if ($fromDate)
{
$fromDate = strtotime($fromDate);
$toDate = strtotime($toDate);
$now = strtotime(Mage::app()->getLocale()->date()->setTime('00:00:00')->toString(Varien_Date::DATETIME_INTERNAL_FORMAT));
if ($toDate)
{
if ($fromDate <= $now && $now <= $toDate)
return true;
}
else
{
if ($fromDate <= $now)
return true;
}
}
return false;
}
}
非常感谢任何帮助。
非常感谢
答案 0 :(得分:0)
我设法通过向Magento&#39;库存中添加新的产品日期属性来粗略地做到这一点。并复制新的代码,编辑名称的更改。很高兴知道我是否能够做到这一点同样是肯定的,我认为将查询从日期更改为直接是/否相对简单但是我不知道语法。
<?php
class Infortis_Ultimo_Helper_Labels extends Mage_Core_Helper_Abstract
{
/**
* Get product labels (HTML)
*
* @return string
*/
public function getLabels($product)
{
$html = '';
$isNew = false;
if (Mage::getStoreConfig('ultimo/product_labels/new'))
{
$isNew = $this->isNew($product);
}
$isSale = false;
if (Mage::getStoreConfig('ultimo/product_labels/sale'))
{
$isSale = $this->isOnSale($product);
}
$isInstock = false;
if (Mage::getStoreConfig('ultimo/product_labels/new'))
{
$isInstock = $this->isInstock($product);
}
if ($isNew == true)
{
$html .= '<span class="sticker-wrapper top-left"><span class="sticker new">' . $this->__('New') . '</span></span>';
}
if ($isSale == true)
{
$html .= '<span class="sticker-wrapper top-right"><span class="sticker sale">' . $this->__('Sale') . '</span></span>';
}
if ($isInstock == true)
{
$html .= '<span class="sticker-wrapper top-right"><span class="sticker sale">' . $this->__('In Stock') . '</span></span>';
}
return $html;
}
/**
* Check if "new" label is enabled and if product is marked as "new"
*
* @return bool
*/
public function isNew($product)
{
return $this->_nowIsBetween($product->getData('news_from_date'), $product->getData('news_to_date'));
}
public function isInstock($product)
{
return $this->_nowIsBetween($product->getData('in_stock_from'), $product->getData('in_stock_to'));
}
/**
* Check if "sale" label is enabled and if product has special price
*
* @return bool
*/
public function isOnSale($product)
{
$specialPrice = number_format($product->getFinalPrice(), 2);
$regularPrice = number_format($product->getPrice(), 2);
if ($specialPrice != $regularPrice)
return $this->_nowIsBetween($product->getData('special_from_date'), $product->getData('special_to_date'));
else
return false;
}
protected function _nowIsBetween($fromDate, $toDate)
{
if ($fromDate)
{
$fromDate = strtotime($fromDate);
$toDate = strtotime($toDate);
$now = strtotime(Mage::app()->getLocale()->date()->setTime('00:00:00')->toString(Varien_Date::DATETIME_INTERNAL_FORMAT));
if ($toDate)
{
if ($fromDate <= $now && $now <= $toDate)
return true;
}
else
{
if ($fromDate <= $now)
return true;
}
}
return false;
}
}
答案 1 :(得分:0)
第1步:首先,您必须创建新属性。为此,请登录Magento Admin面板。转到目录&gt;&gt;属性&gt;&gt;管理属性&gt;&gt;创建新属性。
在属性下,在属性代码中输入“new”在商店的目录输入类型中选择“是/否”。
单击左侧的Manage Label / Options选项卡,输入名称,例如Admin字段中的“New label”和Save Attribute。
第2步:现在您必须分配属性。
转到目录&gt;&gt;属性&gt;&gt;管理属性集。
选择您的属性集。
从右侧的“未分配的属性”部分中选择新的和/或销售属性,然后将其拖到左侧的“组”部分。 单击“保存属性集”。
导航至目录 - &gt;在“常规”选项卡下,管理产品,选择产品并将新添加的属性(新增和销售)设置为“是”,然后单击“保存”。