所以,我开始破解一些Magento代码。我正在尝试在购物车页面上跟踪计算运费的代码。我正在查看一个名为 shipping.phtml
in /your_theme/template/checkout/cart/
的文件。
邮政编码输入框:
<li>
<label for="postcode"<?php if ($this->isZipCodeRequired()) echo ' class="required"' ?>><?php if ($this->isZipCodeRequired()) echo '<em>*</em>' ?><?php echo $this->__('Zip/Postal Code') ?></label>
<input class="input-text validate-postcode<?php if ($this->isZipCodeRequired()):?> required-entry<?php endif;?>" type="text" id="postcode" name="estimate_postcode" value="<?php echo $this->htmlEscape($this->getEstimatePostcode()) ?>" />
</li>
计算运费按钮:
<div class="buttons-set">
<button type="button" onclick="coShippingMethodForm.submit()" class="button"><span><span><?php echo $this->__('Get a Quote') ?></span></span></button>
</div>
Javascript:
<script type="text/javascript">
//<![CDATA[
var coShippingMethodForm = new VarienForm('shipping-zip-form');
var countriesWithOptionalZip = <?php echo $this->helper('directory')->getCountriesWithOptionalZip(true) ?>;
coShippingMethodForm.submit = function () {
var country = $F('country');
var optionalZip = false;
for (i=0; i < countriesWithOptionalZip.length; i++) {
if (countriesWithOptionalZip[i] == country) {
optionalZip = true;
}
}
if (optionalZip) {
$('postcode').removeClassName('required-entry');
}
else {
$('postcode').addClassName('required-entry');
}
return VarienForm.prototype.submit.bind(coShippingMethodForm)();
}
//]]>
</script>
现在,我不知道它从这里走向何方。有人可以给我一些提示,说明这将从这里开始吗?
编辑:
我应该补充一点,我正在寻找接收物品重量并计算 USPS 运费的代码。我读过一个名为 Usps.php 的文件是计算此费率的方法,但即使修改了核心文件,我也无法更改成本在网站上的显示方式,所以我想自己找出这确实是计算运费的代码。
这不是计算运费的代码 - 它只是提交请求的表单。 从那里开始的最简单方法可能是在嗅探HTTP请求时提交表单(即通过浏览器开发人员工具的网络选项卡),并查看请求的去向 - 然后找到在该URL上处理请求的控制器。
如果您想知道该文件中的$this引用了哪个类,那么最可靠的方法可能是从模板中回显get_class($this)
。 但是,这可能不是找到所需内容的最直接方法。