我知道我看过很多帖子,但是我没有在下面的代码中找到错误: config.xml:
<events>
<core_block_abstract_to_html_after>
<observers>
<type>singleton</type>
<class>WebDirect_CustomPrice_Model_Observer</class>
<method>convertPricespanToInput</method>
</observers>
</core_block_abstract_to_html_after>
</events>
观察员类:
class WebDirect_CustomPrice_Model_Observer
{
const MODULE_NAME = 'WebDirect_CustomPrice';
public function convertPricespanToInput($observer = NULL)
{
if (!$observer) {
return;
}
if ('product.info.simple' == $observer->getEvent()->getBlock()->getNameInLayout()) {
if (!Mage::getStoreConfig('advanced/modules_disable_output/'.self::MODULE_NAME)) {
$transport = $observer->getEvent()->getTransport();
$block = new WebDirect_CustomPrice_Block_priceSpanToInput();
$block->setPassingTransport($transport['html']);
$block->toHtml();
}
}
return $this;
}
}
以及在产品视图页面中添加自定义javascript的类:
class WebDirect_CustomPrice_Block_priceSpanToInput extends Mage_Core_Block_Text {
//protected $_nameInLayout = 'selectify.qty_input_to_select';
//protected $_alias = 'qty_input_to_select';
public function setPassingTransport($transport)
{
$this->setData('text', $transport.$this->_generateQtyInputToSelectHtml());
}
private function _generatepriceSpanToInputHtml()
{
$price = Mage::registry('current_product')->getPrice();
$product_Id = Mage::registry('current_product')->getId();
return '
<script type="text/javascript">
//<![CDATA[
document.observe("dom:loaded", function() {
$("product-price-'.$product_Id.'").replace(\'<span class="price" id="product-price-'.$product_Id.'"> <input type="text" id="CP_ID" class="input-text price" name="custom_price" style="width:auto;" value="'.$price.'" onchange="onChangeCP(this);"/></span><input type="hidden" id="custom_price_total" name="custom_price_total" value="'.$price.'">\');
});
//]]>
</script>
';
}
}
该代码有错误吗?我看不到任何东西!
答案 0 :(得分:23)
问题在于在config.xml中定义观察者函数。
<events>
<core_block_abstract_to_html_after>
<observers>
<type>singleton</type>
<class>WebDirect_CustomPrice_Model_Observer</class>
<method>convertPricespanToInput</method>
</observers>
</core_block_abstract_to_html_after>
</events>
应替换为:
<events>
<core_block_abstract_to_html_after>
<observers>
<some_unique_identifier>
<type>singleton</type>
<class>WebDirect_CustomPrice_Model_Observer</class>
<method>convertPricespanToInput</method>
</some_unique_identifier>
</observers>
</core_block_abstract_to_html_after>
</events>
其中“some_unique_identifier”可以是任何唯一字符串。
答案 1 :(得分:-3)
在includes/config.php
路径中注释掉两个定义函数调用:
#define('COMPILER_INCLUDE_PATH', dirname(__FILE__).DIRECTORY_SEPARATOR.'src');
#define('COMPILER_COLLECT_PATH', dirname(__FILE__).DIRECTORY_SEPARATOR.'stat');