Yeni Cevap 
 
Konuyu Değerlendir
  • 2 Oy - 3 Ortalama
  • 1
  • 2
  • 3
  • 4
  • 5
Opencart Shipping(Kargo,Taşıma) Modülü Hazırlanması
Yazar Mesaj
duzgun Çevrimdışı
Hizmetinizde
*******

Mesajlar: 2,322
Katılım: Jul 2008
Rep Puanı: 17
Mesaj: #1
Opencart Shipping(Kargo,Taşıma) Modülü Hazırlanması
Opencart Shipping(Kargo,Taşıma) Modülü Hazırlanması

Opencart Kargo modülü hazırlama işlemin nasıl yapılcağını açıklamak için Sabit Kargo yada flat ile adlandırılan kargo modülünden yola çıkabiliriz. Kargo modülü yazılması için shipping dizin ve dosya sistemi oluşturmalıyız.

1. admin/controller/shipping/flat.php
2. admin/language/turkish/shipping/flat.php
3. admin/view/template/shipping/flat.tpl
4. catalog/model/shipping/flat.php
5. catalog/language/turkish/shipping/flat.php

Shipping modüllerinin admin bölümünde düzenlenmesini sağlayan controller admin/controller/extension/shipping.php dir.
admin/index.php?route=extension/shipping ile yapılan eylem bu kontroller i çalıştırmaktadır. shipping controller, Order total controller ile aynı temel yapıya sahiptir.

1. admin/controller/shipping/flat.php -> Fiyat,Vergi Oranı, Bölgesi, Durum ve Sıramala veri tanımlarının yapılabilmesi için oluşturulmuştur. Bu veriler flat.tpl deki form aracılıyla post edileceğinden ve flat.tpl çıktısında gerekli olan veriler data dizisine aktarılmaktadır.

Aşağıdaki kodlarda flat_cost, flat_tax_class_id, flat_geo_zone_id, flat_status, flat_sort_order data dizisi anahtar değer tanımları kaydet eylemiyle formdan post edilmiş değerleri yada config diğer adıyla modül değişkenlerinin db de setting tablosunda kayıtlı değerlerinin alınması şeklindedir.
PHP Kod:
if (isset($this->request->post['flat_cost'])) 
{
$this->data['flat_cost'] = $this->request->post['flat_cost'];
} else {
$this->data['flat_cost'] = $this->config->get('flat_cost');
}
if (isset(
$this->request->post['flat_tax_class_id'])) {
$this->data['flat_tax_class_id'] = $this->request->post['flat_tax_class_id'];
} else {
$this->data['flat_tax_class_id'] = $this->config->get('flat_tax_class_id');
}
if (isset(
$this->request->post['flat_geo_zone_id'])) {
$this->data['flat_geo_zone_id'] = $this->request->post['flat_geo_zone_id'];
} else {
$this->data['flat_geo_zone_id'] = $this->config->get('flat_geo_zone_id');
}

if (isset(
$this->request->post['flat_status'])) {
$this->data['flat_status'] = $this->request->post['flat_status'];
} else {
$this->data['flat_status'] = $this->config->get('flat_status');
}
if (isset(
$this->request->post['flat_sort_order'])) {
$this->data['flat_sort_order'] = $this->request->post['flat_sort_order'];
} else {
$this->data['flat_sort_order'] = $this->config->get('flat_sort_order');


Bunun dışında Vergi ve Bölge listeleri tax_classes, geo_zones data dizisi tanımlarına aşağıdaki şekilde aktarılmaktadır. $this->data['tax_classes'] ve $this->data['geo_zones'] değişkenlerine dizi şeklinde vergi ve bölge verileri aktarılacağından flat.tpl de dropdown listesindeki option lara foreach ile yazdırılacaktır.

PHP Kod:
$this->load->model('localisation/tax_class');
$this->data['tax_classes'] = $this->model_localisation_tax_class->getTaxClasses();

$this->load->model('localisation/geo_zone');
$this->data['geo_zones'] = $this->model_localisation_geo_zone->getGeoZones(); 

Diğer dil tanılarıyla birlikte data dizindeki anhtar kelimeler local değişkenlere dönüştürülerek flat.tpl dosyası çalıştırılmaktadır.

PHP Kod:
<?php echo $header?>
<?php 
if ($error_warning) { ?>
<div class="warning"><?php echo $error_warning?></div>
<?php ?>
<div class="box">
  <div class="left"></div>
  <div class="right"></div>
  <div class="heading">
    <h1 style="background-image: url('view/image/shipping.png');"><?php echo $heading_title?></h1>
    <div class="buttons"><a onclick="$('#form').submit();" class="button"><span><?php echo $button_save?></span></a><a onclick="location = '<?php echo $cancel?>';" class="button"><span><?php echo $button_cancel?></span></a></div>
  </div>
  <div class="content">
    <form action="<?php echo $action?>" method="post" enctype="multipart/form-data" id="form">
      <table class="form">
        <tr>
          <td><?php echo $entry_cost?></td>
          <td><input type="text" name="flat_cost" value="<?php echo $flat_cost?>" /></td>
        </tr>
        <tr>
          <td><?php echo $entry_tax?></td>
          <td><select name="flat_tax_class_id">
              <option value="0"><?php echo $text_none?></option>
              <?php foreach ($tax_classes as $tax_class) { ?>
              <?php if ($tax_class['tax_class_id'] == $flat_tax_class_id) { ?>
              <option value="<?php echo $tax_class['tax_class_id']; ?>" selected="selected"><?php echo $tax_class['title']; ?></option>
              <?php } else { ?>
              <option value="<?php echo $tax_class['tax_class_id']; ?>"><?php echo $tax_class['title']; ?></option>
              <?php ?>
              <?php ?>
            </select></td>
        </tr>
        <tr>
          <td><?php echo $entry_geo_zone?></td>
          <td><select name="flat_geo_zone_id">
              <option value="0"><?php echo $text_all_zones?></option>
              <?php foreach ($geo_zones as $geo_zone) { ?>
              <?php if ($geo_zone['geo_zone_id'] == $flat_geo_zone_id) { ?>
              <option value="<?php echo $geo_zone['geo_zone_id']; ?>" selected="selected"><?php echo $geo_zone['name']; ?></option>
              <?php } else { ?>
              <option value="<?php echo $geo_zone['geo_zone_id']; ?>"><?php echo $geo_zone['name']; ?></option>
              <?php ?>
              <?php ?>
            </select></td>
        </tr>
        <tr>
          <td><?php echo $entry_status?></td>
          <td><select name="flat_status">
              <?php if ($flat_status) { ?>
              <option value="1" selected="selected"><?php echo $text_enabled?></option>
              <option value="0"><?php echo $text_disabled?></option>
              <?php } else { ?>
              <option value="1"><?php echo $text_enabled?></option>
              <option value="0" selected="selected"><?php echo $text_disabled?></option>
              <?php ?>
            </select></td>
        </tr>
        <tr>
          <td><?php echo $entry_sort_order?></td>
          <td><input type="text" name="flat_sort_order" value="<?php echo $flat_sort_order?>" size="1" /></td>
        </tr>
      </table>
    </form>
  </div>
</div>
<?php echo $footer?>

Opencart ta admin paneldeki confirgurasyon tanımlarının yapılabilmesi için yine mvc mimarisi ile manual olarak kodların yazıldığını görebilmektesiniz. Diğer e-ticaret sistemlerinin bir kısmında bu işlem tanımlandığı gibi otomatik olabilmektedir. Bu nedenle bu yapı diğerleriyle karıştırılmamalıdır. Bunun yanında modüller bulundukları üst dizinin adına göre ayırt edilmektedirler. shippingdizinindeki modüller kargo, total dizinindekiler order total(şipariş toplamı) gibi.

4. catalog/model/shipping/flat.php

Sipariş esnasında /index.php?route=checkout/shipping eylemi ile birlikte catalog/controller/checkout/shipping.php controller in catalog/model/shipping/ dizinindeki modülleri sırayla yüklemesi sonucu çalışır.

catalog/controller/checkout/shipping.php içinde $shipping_address değişkenine tanımlı bilgiler modüllerdeki getQuote($address) metoduna parametre olarak gönderilir. Kargo seçimi yapıldıktan sonra tercih edilen taşıma yönteminin değerleri $this->session->data['shipping_method'] otorumuna kaydedilir.
PHP Kod:
$this->load->model('account/address');
$shipping_address $this->model_account_address->getAddress($this->session->data['shipping_address_id']);
$this->tax->setZone($shipping_address['country_id'], $shipping_address['zone_id']); 

Shipping modüleride aşağıdaki biçimde bir yapıya sahip olması gerekir.

PHP Kod:
<?php
class ModelShippingXxxx extends Model {
function 
getQuote($address) {
$method_data = array();
return 
$method_data;
}



flat.php shipping ödülü aşağıdaki gibidir.

PHP Kod:
<?php
class ModelShippingFlat extends Model {
    function 
getQuote($address) {
        
$this->load->language('shipping/flat');

        if (
$this->config->get('flat_status')) {
              
$query $this->db->query("SELECT * FROM " DB_PREFIX "zone_to_geo_zone WHERE geo_zone_id = '" . (int)$this->config->get('flat_geo_zone_id') . "' AND country_id = '" . (int)$address['country_id'] . "' AND (zone_id = '" . (int)$address['zone_id'] . "' OR zone_id = '0')");

              if (!
$this->config->get('flat_geo_zone_id')) {
                
$status TRUE;
              } elseif (
$query->num_rows) {
                
$status TRUE;
              } else {
                
$status FALSE;
              }
        } else {
            
$status FALSE;
        }

        
$method_data = array();

        if (
$status) {
            
$quote_data = array();

              
$quote_data['flat'] = array(
                
'id'           => 'flat.flat',
                
'title'        => $this->language->get('text_title'),
                
'cost'         => $this->config->get('flat_cost'),
                
'tax_class_id' => $this->config->get('flat_tax_class_id'),
                
'text'         => $this->currency->format($this->tax->calculate($this->config->get('flat_cost'), $this->config->get('flat_tax_class_id'), $this->config->get('config_tax')))
              );

              
$method_data = array(
                
'id'         => 'flat',
                
'title'      => $this->language->get('text_title'),
                
'quote'      => $quote_data,
                
'sort_order' => $this->config->get('flat_sort_order'),
                
'error'      => FALSE
              
);
        }
    
        return 
$method_data;
    }
}
?>

Bu modülde shipping değerleri olarak gönderilen sonuç $method_data değişkenidir.

PHP Kod:
$quote_data = array();
$quote_data['flat'] = array(
'id'           => 'flat.flat',
'title'        => $this->language->get('text_title'),
'cost'         => $this->config->get('flat_cost'),
'tax_class_id' => $this->config->get('flat_tax_class_id'),
'text'         => $this->currency->format($this->tax->calculate($this->config->get('flat_cost'), $this->config->get('flat_tax_class_id'), $this->config->get('config_tax')))
);

$method_data = array(
'id'         => 'flat',
'title'      => $this->language->get('text_title'),
'quote'      => $quote_data,
'sort_order' => $this->config->get('flat_sort_order'),
'error'      => FALSE
); 


quote burada fiyatlandırmak anlamına gelmektedir. Bir kargo modülünde bir çok fiyatlandırma yapılabilmesi için $quote_data dizi değişkeni kullanımaktadır. kategori, altkategori şekinde bunu düşünebilirsiniz. Bir modülde iki seçenek olmayacaksa yukarıdaki şekilde $quote_data tanılaması yapılır $quote_data['flat'],'id'=> 'flat.flat' gibi
Yukrıdaki bu kullanım biçimi aşağıdaki şekildede çoğaltılarak yazılabilir.

PHP Kod:
$quote_data = array();
$quote_data['flat'] = array(
'id'           => 'flat.flat',
'title'        => $this->language->get('text_title'),
'cost'         => $this->config->get('flat_cost'),
'tax_class_id' => $this->config->get('flat_tax_class_id'),
'text'         => $this->currency->format($this->tax->calculate($this->config->get('flat_cost'), $this->config->get('flat_tax_class_id'), $this->config->get('config_tax')))
);
$quote_data['extraflat'] = array(
'id'           => 'flat.extraflat',
'title'        => $this->language->get('text_title'),
'cost'         => $this->config->get('flat_cost'),
'tax_class_id' => $this->config->get('flat_tax_class_id'),
'text'         => $this->currency->format($this->tax->calculate($this->config->get('flat_cost'), $this->config->get('flat_tax_class_id'), $this->config->get('config_tax')))
);

$method_data = array(
'id'         => 'flat',
'title'      => $this->language->get('text_title'),
'quote'      => $quote_data,
'sort_order' => $this->config->get('flat_sort_order'),
'error'      => FALSE
); 

Yukarıdaki şekliylede flat modülümüzün içinde kargo seçeneği olarak extraflat adında bir değerlendirme seçeneği eklemiş olmaktayız. flat.extraflat şeklinde yazımıda flat modülünün extraflat seçeneği gibi anlaşılmaktadır. "." işareti modül ve değerlendirme seçeneği arasındaki ayrıştırma karakteridir.

5. catalog/language/turkish/shipping/flat.php

Dosyası ise çoklu dil değişkenlerini tutmaktadır. Modül içinde kullanımı order total yazımızda anlattığımız şekliyle aynıdır. Shipping modülleri ile kargo değerlendimesi yapılarak bu değer opencart ın $this->session->data['shipping_method'] oturum nesnesine aktarılmaktadır.

©duzgun.com Harici yayınlanması yasaktır.
16-03-2011 02:29
Bu kullanıcının gönderdiği tüm mesajları bul Bu mesajı alıntı yap
nurettin Çevrimdışı
Junior Member
**

Mesajlar: 4
Katılım: Dec 2011
Rep Puanı: 0
Mesaj: #2
RE: Opencart Shipping(Kargo,Taşıma) Modülü Hazırlanması
Teşekkurler birde kargom nerede eklendiginde çok güzel olur
03-01-2012 10:33
Kullanıcının websitesini ziyaret et Bu kullanıcının gönderdiği tüm mesajları bul Bu mesajı alıntı yap
pscpthdr Çevrimdışı
Junior Member
**

Mesajlar: 4
Katılım: Mar 2012
Rep Puanı: 0
Mesaj: #3
RE: Opencart Shipping(Kargo,Taşıma) Modülü Hazırlanması
Bu modül tam olarak ne işe yarıyor acaba
02-03-2012 22:11
Bu kullanıcının gönderdiği tüm mesajları bul Bu mesajı alıntı yap
ismedya Çevrimdışı
Member
***

Mesajlar: 10
Katılım: Jan 2012
Rep Puanı: 0
Mesaj: #4
RE: Opencart Shipping(Kargo,Taşıma) Modülü Hazırlanması
teşekkürler .
22-03-2012 14:22
Bu kullanıcının gönderdiği tüm mesajları bul Bu mesajı alıntı yap
sporrow Çevrimdışı
Member
***

Mesajlar: 10
Katılım: Feb 2012
Rep Puanı: 0
Mesaj: #5
RE: Opencart Shipping(Kargo,Taşıma) Modülü Hazırlanması
Teşekkürler
16-05-2012 10:09
Bu kullanıcının gönderdiği tüm mesajları bul Bu mesajı alıntı yap
serdarsa Çevrimdışı
Junior Member
**

Mesajlar: 3
Katılım: Feb 2012
Rep Puanı: 0
Mesaj: #6
RE: Opencart Shipping(Kargo,Taşıma) Modülü Hazırlanması
Bu modülün tam olarak ne işe yaradığını söz konusu kodları nereye ne şekilde yapıştıracağımızı anlatabilecek bir arkadaş var mı?
23-05-2012 18:40
Bu kullanıcının gönderdiği tüm mesajları bul Bu mesajı alıntı yap
MaRZoCHi Çevrimdışı
MWS Administrator
**

Mesajlar: 2
Katılım: Aug 2012
Rep Puanı: 0
Mesaj: #7
RE: Opencart Shipping(Kargo,Taşıma) Modülü Hazırlanması
Teşekkürler yakında OpenCart için modül yazmaya başlayacağım Smile Bir DLE entegresi de yapabilirim.
26-12-2012 11:52
Kullanıcının websitesini ziyaret et Bu kullanıcının gönderdiği tüm mesajları bul Bu mesajı alıntı yap
oki Çevrimdışı
Member
***

Mesajlar: 11
Katılım: Feb 2013
Rep Puanı: 0
Mesaj: #8
RE: Opencart Shipping(Kargo,Taşıma) Modülü Hazırlanması
(16-03-2011 02:29)duzgun demiş ki:  Opencart Shipping(Kargo,Taşıma) Modülü Hazırlanması

Opencart Kargo modülü hazırlama işlemin nasıl yapılcağını açıklamak için Sabit Kargo yada flat ile adlandırılan kargo modülünden yola çıkabiliriz. Kargo modülü yazılması için shipping dizin ve dosya sistemi oluşturmalıyız.

1. admin/controller/shipping/flat.php
2. admin/language/turkish/shipping/flat.php
3. admin/view/template/shipping/flat.tpl
4. catalog/model/shipping/flat.php
5. catalog/language/turkish/shipping/flat.php

Shipping modüllerinin admin bölümünde düzenlenmesini sağlayan controller admin/controller/extension/shipping.php dir.
admin/index.php?route=extension/shipping ile yapılan eylem bu kontroller i çalıştırmaktadır. shipping controller, Order total controller ile aynı temel yapıya sahiptir.

1. admin/controller/shipping/flat.php -> Fiyat,Vergi Oranı, Bölgesi, Durum ve Sıramala veri tanımlarının yapılabilmesi için oluşturulmuştur. Bu veriler flat.tpl deki form aracılıyla post edileceğinden ve flat.tpl çıktısında gerekli olan veriler data dizisine aktarılmaktadır.

Aşağıdaki kodlarda flat_cost, flat_tax_class_id, flat_geo_zone_id, flat_status, flat_sort_order data dizisi anahtar değer tanımları kaydet eylemiyle formdan post edilmiş değerleri yada config diğer adıyla modül değişkenlerinin db de setting tablosunda kayıtlı değerlerinin alınması şeklindedir.
PHP Kod:
if (isset($this->request->post['flat_cost'])) 
{
$this->data['flat_cost'] = $this->request->post['flat_cost'];
} else {
$this->data['flat_cost'] = $this->config->get('flat_cost');
}
if (isset(
$this->request->post['flat_tax_class_id'])) {
$this->data['flat_tax_class_id'] = $this->request->post['flat_tax_class_id'];
} else {
$this->data['flat_tax_class_id'] = $this->config->get('flat_tax_class_id');
}
if (isset(
$this->request->post['flat_geo_zone_id'])) {
$this->data['flat_geo_zone_id'] = $this->request->post['flat_geo_zone_id'];
} else {
$this->data['flat_geo_zone_id'] = $this->config->get('flat_geo_zone_id');
}

if (isset(
$this->request->post['flat_status'])) {
$this->data['flat_status'] = $this->request->post['flat_status'];
} else {
$this->data['flat_status'] = $this->config->get('flat_status');
}
if (isset(
$this->request->post['flat_sort_order'])) {
$this->data['flat_sort_order'] = $this->request->post['flat_sort_order'];
} else {
$this->data['flat_sort_order'] = $this->config->get('flat_sort_order');


Bunun dışında Vergi ve Bölge listeleri tax_classes, geo_zones data dizisi tanımlarına aşağıdaki şekilde aktarılmaktadır. $this->data['tax_classes'] ve $this->data['geo_zones'] değişkenlerine dizi şeklinde vergi ve bölge verileri aktarılacağından flat.tpl de dropdown listesindeki option lara foreach ile yazdırılacaktır.

PHP Kod:
$this->load->model('localisation/tax_class');
$this->data['tax_classes'] = $this->model_localisation_tax_class->getTaxClasses();

$this->load->model('localisation/geo_zone');
$this->data['geo_zones'] = $this->model_localisation_geo_zone->getGeoZones(); 

Diğer dil tanılarıyla birlikte data dizindeki anhtar kelimeler local değişkenlere dönüştürülerek flat.tpl dosyası çalıştırılmaktadır.

PHP Kod:
<?php echo $header?>
<?php 
if ($error_warning) { ?>
<div class="warning"><?php echo $error_warning?></div>
<?php ?>
<div class="box">
  <div class="left"></div>
  <div class="right"></div>
  <div class="heading">
    <h1 style="background-image: url('view/image/shipping.png');"><?php echo $heading_title?></h1>
    <div class="buttons"><a onclick="$('#form').submit();" class="button"><span><?php echo $button_save?></span></a><a onclick="location = '<?php echo $cancel?>';" class="button"><span><?php echo $button_cancel?></span></a></div>
  </div>
  <div class="content">
    <form action="<?php echo $action?>" method="post" enctype="multipart/form-data" id="form">
      <table class="form">
        <tr>
          <td><?php echo $entry_cost?></td>
          <td><input type="text" name="flat_cost" value="<?php echo $flat_cost?>" /></td>
        </tr>
        <tr>
          <td><?php echo $entry_tax?></td>
          <td><select name="flat_tax_class_id">
              <option value="0"><?php echo $text_none?></option>
              <?php foreach ($tax_classes as $tax_class) { ?>
              <?php if ($tax_class['tax_class_id'] == $flat_tax_class_id) { ?>
              <option value="<?php echo $tax_class['tax_class_id']; ?>" selected="selected"><?php echo $tax_class['title']; ?></option>
              <?php } else { ?>
              <option value="<?php echo $tax_class['tax_class_id']; ?>"><?php echo $tax_class['title']; ?></option>
              <?php ?>
              <?php ?>
            </select></td>
        </tr>
        <tr>
          <td><?php echo $entry_geo_zone?></td>
          <td><select name="flat_geo_zone_id">
              <option value="0"><?php echo $text_all_zones?></option>
              <?php foreach ($geo_zones as $geo_zone) { ?>
              <?php if ($geo_zone['geo_zone_id'] == $flat_geo_zone_id) { ?>
              <option value="<?php echo $geo_zone['geo_zone_id']; ?>" selected="selected"><?php echo $geo_zone['name']; ?></option>
              <?php } else { ?>
              <option value="<?php echo $geo_zone['geo_zone_id']; ?>"><?php echo $geo_zone['name']; ?></option>
              <?php ?>
              <?php ?>
            </select></td>
        </tr>
        <tr>
          <td><?php echo $entry_status?></td>
          <td><select name="flat_status">
              <?php if ($flat_status) { ?>
              <option value="1" selected="selected"><?php echo $text_enabled?></option>
              <option value="0"><?php echo $text_disabled?></option>
              <?php } else { ?>
              <option value="1"><?php echo $text_enabled?></option>
              <option value="0" selected="selected"><?php echo $text_disabled?></option>
              <?php ?>
            </select></td>
        </tr>
        <tr>
          <td><?php echo $entry_sort_order?></td>
          <td><input type="text" name="flat_sort_order" value="<?php echo $flat_sort_order?>" size="1" /></td>
        </tr>
      </table>
    </form>
  </div>
</div>
<?php echo $footer?>

Opencart ta admin paneldeki confirgurasyon tanımlarının yapılabilmesi için yine mvc mimarisi ile manual olarak kodların yazıldığını görebilmektesiniz. Diğer e-ticaret sistemlerinin bir kısmında bu işlem tanımlandığı gibi otomatik olabilmektedir. Bu nedenle bu yapı diğerleriyle karıştırılmamalıdır. Bunun yanında modüller bulundukları üst dizinin adına göre ayırt edilmektedirler. shippingdizinindeki modüller kargo, total dizinindekiler order total(şipariş toplamı) gibi.

4. catalog/model/shipping/flat.php

Sipariş esnasında /index.php?route=checkout/shipping eylemi ile birlikte catalog/controller/checkout/shipping.php controller in catalog/model/shipping/ dizinindeki modülleri sırayla yüklemesi sonucu çalışır.

catalog/controller/checkout/shipping.php içinde $shipping_address değişkenine tanımlı bilgiler modüllerdeki getQuote($address) metoduna parametre olarak gönderilir. Kargo seçimi yapıldıktan sonra tercih edilen taşıma yönteminin değerleri $this->session->data['shipping_method'] otorumuna kaydedilir.
PHP Kod:
$this->load->model('account/address');
$shipping_address $this->model_account_address->getAddress($this->session->data['shipping_address_id']);
$this->tax->setZone($shipping_address['country_id'], $shipping_address['zone_id']); 

Shipping modüleride aşağıdaki biçimde bir yapıya sahip olması gerekir.

PHP Kod:
<?php
class ModelShippingXxxx extends Model {
function 
getQuote($address) {
$method_data = array();
return 
$method_data;
}



flat.php shipping ödülü aşağıdaki gibidir.

PHP Kod:
<?php
class ModelShippingFlat extends Model {
    function 
getQuote($address) {
        
$this->load->language('shipping/flat');

        if (
$this->config->get('flat_status')) {
              
$query $this->db->query("SELECT * FROM " DB_PREFIX "zone_to_geo_zone WHERE geo_zone_id = '" . (int)$this->config->get('flat_geo_zone_id') . "' AND country_id = '" . (int)$address['country_id'] . "' AND (zone_id = '" . (int)$address['zone_id'] . "' OR zone_id = '0')");

              if (!
$this->config->get('flat_geo_zone_id')) {
                
$status TRUE;
              } elseif (
$query->num_rows) {
                
$status TRUE;
              } else {
                
$status FALSE;
              }
        } else {
            
$status FALSE;
        }

        
$method_data = array();

        if (
$status) {
            
$quote_data = array();

              
$quote_data['flat'] = array(
                
'id'           => 'flat.flat',
                
'title'        => $this->language->get('text_title'),
                
'cost'         => $this->config->get('flat_cost'),
                
'tax_class_id' => $this->config->get('flat_tax_class_id'),
                
'text'         => $this->currency->format($this->tax->calculate($this->config->get('flat_cost'), $this->config->get('flat_tax_class_id'), $this->config->get('config_tax')))
              );

              
$method_data = array(
                
'id'         => 'flat',
                
'title'      => $this->language->get('text_title'),
                
'quote'      => $quote_data,
                
'sort_order' => $this->config->get('flat_sort_order'),
                
'error'      => FALSE
              
);
        }
    
        return 
$method_data;
    }
}
?>

Bu modülde shipping değerleri olarak gönderilen sonuç $method_data değişkenidir.

PHP Kod:
$quote_data = array();
$quote_data['flat'] = array(
'id'           => 'flat.flat',
'title'        => $this->language->get('text_title'),
'cost'         => $this->config->get('flat_cost'),
'tax_class_id' => $this->config->get('flat_tax_class_id'),
'text'         => $this->currency->format($this->tax->calculate($this->config->get('flat_cost'), $this->config->get('flat_tax_class_id'), $this->config->get('config_tax')))
);

$method_data = array(
'id'         => 'flat',
'title'      => $this->language->get('text_title'),
'quote'      => $quote_data,
'sort_order' => $this->config->get('flat_sort_order'),
'error'      => FALSE
); 


quote burada fiyatlandırmak anlamına gelmektedir. Bir kargo modülünde bir çok fiyatlandırma yapılabilmesi için $quote_data dizi değişkeni kullanımaktadır. kategori, altkategori şekinde bunu düşünebilirsiniz. Bir modülde iki seçenek olmayacaksa yukarıdaki şekilde $quote_data tanılaması yapılır $quote_data['flat'],'id'=> 'flat.flat' gibi
Yukrıdaki bu kullanım biçimi aşağıdaki şekildede çoğaltılarak yazılabilir.

PHP Kod:
$quote_data = array();
$quote_data['flat'] = array(
'id'           => 'flat.flat',
'title'        => $this->language->get('text_title'),
'cost'         => $this->config->get('flat_cost'),
'tax_class_id' => $this->config->get('flat_tax_class_id'),
'text'         => $this->currency->format($this->tax->calculate($this->config->get('flat_cost'), $this->config->get('flat_tax_class_id'), $this->config->get('config_tax')))
);
$quote_data['extraflat'] = array(
'id'           => 'flat.extraflat',
'title'        => $this->language->get('text_title'),
'cost'         => $this->config->get('flat_cost'),
'tax_class_id' => $this->config->get('flat_tax_class_id'),
'text'         => $this->currency->format($this->tax->calculate($this->config->get('flat_cost'), $this->config->get('flat_tax_class_id'), $this->config->get('config_tax')))
);

$method_data = array(
'id'         => 'flat',
'title'      => $this->language->get('text_title'),
'quote'      => $quote_data,
'sort_order' => $this->config->get('flat_sort_order'),
'error'      => FALSE
); 

Yukarıdaki şekliylede flat modülümüzün içinde kargo seçeneği olarak extraflat adında bir değerlendirme seçeneği eklemiş olmaktayız. flat.extraflat şeklinde yazımıda flat modülünün extraflat seçeneği gibi anlaşılmaktadır. "." işareti modül ve değerlendirme seçeneği arasındaki ayrıştırma karakteridir.

5. catalog/language/turkish/shipping/flat.php

Dosyası ise çoklu dil değişkenlerini tutmaktadır. Modül içinde kullanımı order total yazımızda anlattığımız şekliyle aynıdır. Shipping modülleri ile kargo değerlendimesi yapılarak bu değer opencart ın $this->session->data['shipping_method'] oturum nesnesine aktarılmaktadır.

©duzgun.com Harici yayınlanması yasaktır.

anlatım harika olmuş. emeğine sağlık
20-02-2013 12:38
Bu kullanıcının gönderdiği tüm mesajları bul Bu mesajı alıntı yap
Yeni Cevap 


Benzer Konular...
Konu: Yazar Cevaplar: Gösterim: Son Mesaj
  Opencart Ücretli Destek ve Özel Tema Tasarımı oscommerce2626 1 2,628 02-06-2017 18:03
Son Mesaj: wax123
  Opencart 2.0 Gün yüzüne Çıktı gulendam 5 5,064 28-12-2014 22:22
Son Mesaj: gulendam
  OpenCart Action Temel Sınıfı(Base Class) duzgun 4 5,249 27-08-2014 17:52
Son Mesaj: Düzgün Reyiz Üşüyoruz
  OpenCart Registry duzgun 2 4,467 04-08-2014 17:18
Son Mesaj: uveybaba
  Opencart 1.5 Attribute & Options Table DB Diagram duzgun 6 6,948 04-08-2014 17:17
Son Mesaj: uveybaba
  Opencart Ön Kontrol(Front Controller) duzgun 1 3,739 02-06-2014 14:13
Son Mesaj: rezaradmehr

Foruma Git:


Bu konuyu görüntüleyen kullanıcı(lar): 1 Ziyaretçi