Opencart:如何获取送货方式的代码

时间:2014-06-20 07:40:07

标签: php opencart

我正在开发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;]。

1 个答案:

答案 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')))
                );