从另一个产品属性中获取产品属性?

时间:2012-05-16 16:31:44

标签: php magento wysiwyg

我们遇到了WYSIWYS编辑器弄乱我们的视频嵌入代码的问题。

我们提出的一个解决方案是使嵌入代码成为自己的属性,然后在产品描述中调用该属性。

这甚至可能吗?

我们不想将其添加到.phtml中,我们宁愿将其放在说明中。

1 个答案:

答案 0 :(得分:1)

实际上,如果您计划在没有任何代码修改的情况下进行此操作,则不可能

但是,如果你想通过在Mage_Catalog_Model_Product中调用一个全新的函数来处理描述中的某些内容,比如

$_product = Mage::getModel('catalog/product');
$_product->getProcessedDescription(); // assuming this is the function you will be using in stead of $_product->getDescription(); in your PHTML files

然后说你喜欢你的产品描述:

Lorem Ipsum Dolor Test Description
See our video below!
[[video]]

其中video是自定义产品属性

您可以重写Mage_Catalog_Model_Product类以获取新功能。为此,请创建一个模块!

应用程序的/ etc /模块/ Electricjesus_Processeddescription.xml:

<?xml version="1.0"?>
<config>
  <modules>
    <Electricjesus_Processeddescription>
      <active>true</active>
      <codePool>local</codePool>
      <version>0.0.1</version>
    </Electricjesus_Processeddescription>
  </modules>
</config>

应用程序/代码/本地/ Electricjesus / Processeddescription的/ etc / config.xml中

<?xml version="1.0"?>
<config>
  <modules>
    <Electricjesus_Processeddescription>
      <version>0.0.1</version>
    </Electricjesus_Processeddescription>
  </modules>
  <global>
    <models>
      <catalog>
        <rewrite>
            <product>Electricjesus_Processeddescription_Model_Product</product>
        </rewrite>
      </catalog>
    </models>
  </global>
</config> 

应用程序/代码/本地/ Electricjesus / Processeddescription /型号/ Product.php:

<?php
class Electricjesus_Processeddescription_Model_Product extends Mage_Catalog_Model_Product {
    public function getProcessedDescription() {
        $desc = $this->getDescription();
        return preg_replace("/\[\[video\]\]/", $this->getVideo(), $desc);
    }
 }
//NEVER close <?php tags in Magento class files!

然后您应该可以在.phtml文件中使用$_product->getProcessedDescription()

显然有很多东西丢失了,而且似乎它几乎都是黑客攻击(我甚至不确定我的preg_replace语句)但是你明白了。我们在这里做的是制作一个模块,仅仅是为了重写一个magento核心类来做更多的处理!

此外,您可能还想获得Magento Cheatsheet的副本,以获取有关重写的更多信息。

祝你好运!

赛斯