Получить атрибут продукта из другого атрибута продукта?

У нас есть проблемы с редактором WYSIWYS, который испортил наши коды для вставки видео.

Одно из решений, которое мы придумали, - сделать код для встраивания своим собственным атрибутом, а затем вызвать этот атрибут из описания продукта.

Это вообще возможно?

Мы не хотим добавлять его в.phtml, мы бы лучше разместили его в описании.

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, чтобы получить новую функцию. Для этого создайте модуль!

приложение / и т.д. / модули /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/ и т.д. /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!

Тогда вы должны быть в состоянии использовать $_product->getProcessedDescription() в ваших.phtml файлах.

Очевидно, что чего-то не хватает, и все кажется, что это в значительной степени хак (я даже не уверен насчет моего заявления preg_replace), но вы поняли идею. Здесь мы создали модуль исключительно для того, чтобы переписать базовый класс magento для дальнейшей обработки!

Кроме того, вы можете также получить копию Magento Cheatsheet для получения дополнительной информации о переписывании.

Удачи!

Сет

Другие вопросы по тегам