有什么办法可以在 magento admin 上修改这个 tracking.phtml 吗?
Is there any way to modify this tracking.phtml on magento admin?
当我们选择以下选项之一时,字段 'title' 会自动填充从运营商选项中选择的值。
我想对 'number' 字段做同样的事情,当我选择我的自定义承运人时,它会填充一些东西。有什么办法可以修改这个跟踪表吗?如果是,如何?
提前致谢
查看文件app/design/adminhtml/default/default/layout/sales.xml
,tracking.phtml被多次使用。如果此更改是针对模块的,则创建布局文件 'yourmodule.xml' 并从配置文件中启用它。否则将其命名为 'local.xml'。它的内容必须是这样的更新:
<?xml version="1.0"?>
<layout>
<adminhtml_sales_order_shipment_new>
<reference name="shipment_tracking">
<action method="setTemplate">
<template>your/new/tracking.phtml</template>
</action>
</reference>
</adminhtml_sales_order_shipment_new>
</layout>
此外,如果您想尽量减少复制粘贴布局语句的数量,您可以使用
<update handle="handle_name" />
在不同的控制器动作句柄中。例如:
<my_handle_name>
<reference name="shipment_tracking">
<action method="setTemplate">
<template>your/new/tracking.phtml</template>
</action>
</reference>
</my_handle_name>
<adminhtml_sales_order_shipment_new>
<update handle="my_handle_name"/>
</adminhtml_sales_order_shipment_new>
在您模块的config.xml
中添加以下观察者
<events>
<adminhtml_block_html_before>
<observers>
<add_script_on_shipment>
<class>yourmodule/observer</class>
<method>addScript</method>
</add_script_on_shipment>
</observers>
</adminhtml_block_html_before>
</events>
将以下代码放入Observer.php
public function addScript($observer) {
$block = $observer->getEvent()->getBlock();
if (($block instanceof Mage_Adminhtml_Block_Sales_Order_Shipment_View_Tracking) && $block->getType() != 'core/template' /*&& is your carrier active*/) {
$shipment = $block->getShipment();
$_child = clone $block;
$_child->setType('core/template');
$block->setChild('calling_block', $_child);
$block->setTemplate('yourmodule/custom_script.phtml');
}
}
在 custom_script.phtml
中添加以下代码并进行必要的修改
<?php echo $this->getChildHtml('calling_block');?>
<script type="text/javascript">
/*your custom javascript code to bind onchange event*/
</script>
当我们选择以下选项之一时,字段 'title' 会自动填充从运营商选项中选择的值。
我想对 'number' 字段做同样的事情,当我选择我的自定义承运人时,它会填充一些东西。有什么办法可以修改这个跟踪表吗?如果是,如何?
提前致谢
查看文件app/design/adminhtml/default/default/layout/sales.xml
,tracking.phtml被多次使用。如果此更改是针对模块的,则创建布局文件 'yourmodule.xml' 并从配置文件中启用它。否则将其命名为 'local.xml'。它的内容必须是这样的更新:
<?xml version="1.0"?>
<layout>
<adminhtml_sales_order_shipment_new>
<reference name="shipment_tracking">
<action method="setTemplate">
<template>your/new/tracking.phtml</template>
</action>
</reference>
</adminhtml_sales_order_shipment_new>
</layout>
此外,如果您想尽量减少复制粘贴布局语句的数量,您可以使用
<update handle="handle_name" />
在不同的控制器动作句柄中。例如:
<my_handle_name>
<reference name="shipment_tracking">
<action method="setTemplate">
<template>your/new/tracking.phtml</template>
</action>
</reference>
</my_handle_name>
<adminhtml_sales_order_shipment_new>
<update handle="my_handle_name"/>
</adminhtml_sales_order_shipment_new>
在您模块的config.xml
中添加以下观察者 <events>
<adminhtml_block_html_before>
<observers>
<add_script_on_shipment>
<class>yourmodule/observer</class>
<method>addScript</method>
</add_script_on_shipment>
</observers>
</adminhtml_block_html_before>
</events>
将以下代码放入Observer.php
public function addScript($observer) {
$block = $observer->getEvent()->getBlock();
if (($block instanceof Mage_Adminhtml_Block_Sales_Order_Shipment_View_Tracking) && $block->getType() != 'core/template' /*&& is your carrier active*/) {
$shipment = $block->getShipment();
$_child = clone $block;
$_child->setType('core/template');
$block->setChild('calling_block', $_child);
$block->setTemplate('yourmodule/custom_script.phtml');
}
}
在 custom_script.phtml
中添加以下代码并进行必要的修改<?php echo $this->getChildHtml('calling_block');?>
<script type="text/javascript">
/*your custom javascript code to bind onchange event*/
</script>