Есть ли способ изменить этот tracking.phtml в администраторе magento?
Когда мы выбираем один из вариантов ниже, поле "заголовок" автоматически заполняется выбранным значением из опций носителя.
Я хочу сделать то же самое для поля "число", оно будет заполнено чем-то, когда я выберу свой пользовательский носитель. Есть ли способ изменить эту форму отслеживания? Если да, то как?
Заранее спасибо
2 ответа
Добавьте следующий наблюдатель в 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>
Посмотри в файле 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>