我正在开发Opencart的运输模块。
我已经查看了发货模块模板的源代码,如下所示。
<?php foreach ($shipping_method['quote'] as $quote) { ?>
<tr class="highlight">
<td><?php if ($quote['code'] == $code || !$code) { ?>
<?php $code = $quote['code']; ?>
<input type="radio" name="shipping_method" value="<?php echo $quote['code']; ?>" id="<?php echo $quote['code']; ?>" checked="checked" />
<?php } else { ?>
<input type="radio" name="shipping_method" value="<?php echo $quote['code']; ?>" id="<?php echo $quote['code']; ?>" />
<?php } ?></td>
<td><label for="<?php echo $quote['code']; ?>"><?php echo $quote['title']; ?></label></td>
<td style="text-align: right;"><label for="<?php echo $quote['code']; ?>"><?php echo $quote['text']; ?></label></td>
</tr>
<?php } ?>
但是,我不确定是否要添加新的送货方式,我应该在哪里设置/获取$ quote [&#39;代码&#39;]。
答案 0 :(得分:2)
运输代码在相应的运输方式的模型文件中设置,可在
中找到/catalog/model/shipping/your_shipping_name.php
OpenCart捆绑了许多方法,可以向您展示如何执行此操作。您需要特别查看$quote_data
变量。值得注意的是,如果您想要为您的运输类型提供多种方法,例如24小时,标准交付等,那么它会变得更复杂一些。这是一个例子
$quote_data['surface'] = array(
'code' => 'royal_mail.surface',
'title' => $title,
'cost' => $cost,
'tax_class_id' => $this->config->get('royal_mail_tax_class_id'),
'text' => $this->currency->format($this->tax->calculate($cost, $this->config->get('royal_mail_tax_class_id'), $this->config->get('config_tax')))
);
这是royal_mail.php
文件的送货方式(其中之一)。请特别注意代码键如何royal_mail
后跟.
将其与此特定方法surface
分开。您还会注意到surface
是$quote_data
中引号本身的数组键。这是区分方法的必要条件。例如,如果您希望向皇家邮政送货方式添加名为foo
的新送货方式,您可以这样做
$quote_data['foo'] = array(
'code' => 'royal_mail.foo',
'title' => $title,
'cost' => $cost,
'tax_class_id' => $this->config->get('royal_mail_tax_class_id'),
'text' => $this->currency->format($this->tax->calculate($cost, $this->config->get('royal_mail_tax_class_id'), $this->config->get('config_tax')))
);