我们有一个会计软件填充magento网上商店的名称字段,问题是有30个字符的限制,名称总是倾向于更多地针对我们的内部操作而不是SEO或UI。
我想知道为某些magento产品创建“替代名称”的最佳方法,但只有当它退出时,否则会回到常规名称字段。
最好的方法是创建一个新的Product Attribute(alternate_name)并在前端调用if else语句吗?
<?php if($_product->getAttributeText(’alternate_name’)) {
echo $_product->getAttributeText(’alternate_name’)
} else {
echo $_product->getName();
} ?>
我是否需要在布局文件夹中的几个位置更改它?或者是否有一个更容易的地方来覆盖此方法一次,并且每次调用$ product-&gt; getName()时都可以使用它?
答案 0 :(得分:1)
如果您只需要在前端进行阅读/查看,则可以覆盖核心模型getName()
的{{1}}方法,以执行以下操作:
Mage_Catalog_Model_Product
}
通过这种方式,您只需提供一个变更点,即可为所有产品public function getName()
{
if (Mage::app()->getStore()->isAdmin()) {
return $this->getData('name');
}
return (
($this->getData('alternate_name')
? $this->getData('alternate_name')
: $this->getData('name')
);
电话提供服务,无论他们来自哪里。
请注意,在编辑/保存getName()
属性时,这样做会导致问题。
这是因为例如Magento后端还会使用您的name
来填充产品修改getName()
的{{1}}字段,因此登陆此name
的值字段可以是<form>
或<input>
属性之一。
保存更改可能会导致在alternate_name
属性中保存name
值,这是您最不希望的。
为避免这种情况,上述方法始终返回alternate_name
属性的值,以防呼叫来自管理区域。这应该足以捕获管理员编辑表单,但当然不能捕获其他可能的情况,其中name
用于提供name
次调用。