Получить атрибут продукта из другого атрибута продукта?
У нас есть проблемы с редактором 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 для получения дополнительной информации о переписывании.
Удачи!
Сет