0

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

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

这甚至可能吗?

我们不想将它添加到 .phtml 中,我们宁愿将它放在描述中。

4

1 回答 1

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/modules/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/Model/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!

然后你应该能够$_product->getProcessedDescription()在你的 .phtml 文件中使用。

显然有很多东西丢失了,这一切似乎都是一个 hack(我什至不确定我的 preg_replace 声明),但你明白了。我们在这里所做的只是制作一个模块,只是为了重写一个 magento 核心类来做更多的处理!

此外,您可能还想获得一份Magento 备忘单,以获取有关重写的更多信息。

祝你好运!

赛斯

于 2012-05-16T18:30:38.073 回答