Merhaba arkadaşlar opencart 2.x versiyonları için geliştirdiğim bir düzenleme, bu düzenleme sayesinde ürünlerimize artık teslim tarihi ekleyebileceğiz. Şuanlık tanıtım videosu akşama doğru makale ve ders videosuda gelecektir.



https://www.youtube.com/watch?v=F8WS-CDNy9s



Kurulum Makalesi



Merhaba arkadaşlar bugün sizlerle birlikte güzel bir modifikasyonu kurulumu ve kullanımı ile alakalı makalemizi birlikte inceleyeceğiz. Bu makalemizde opencart 2.2 versiyonlar için admin tarafından ürün eklenmesinde veyahut ürün düzenlenmesinde o ürüne ait olan müşteriye ürünün kargoya veriliş tarihini girilmesi ve bunun o ürün Detay da ziyaretçi veyahut müşteriye gün ay yıl şeklinde gösterimi sağlanacaktır. Örnek vermek gerekirse bu ürün 25 Haziran 2018 tarihinde kargoya verilecektir, şeklinde ziyaretçiye ürün Detay da gösterilmesi sağlanacaktır. Kuruluma geçmeden önce bu işlem hem veritabanından yapılacak eklemeler hem de model ve controller ayrıca tpl dosyalarında manuel değişim yapılacağından bu dosyalarımızı ve veritabanı mızı yedeklemenizi önemle belirtiriz.

Opencart 2.2.x Ürün Detayda Kargoya Veriliş Tarihi Ekleme

Evet arkadaşlar şimdi eklentimizin kurulumuna geçelim. Ilk işlemimiz veritabanı oluşturma ve bu veritabanına kayıt ve güncelleme gibi işlemlerin yapıldığı model dosyasında gerekli olan düzenlemeleri yapmaya.

Dosyamızı Açalım : admin/model/catalog/
product.php

Bulalım Bu Hem Update Hemde Insert Kısmında Mevcut:

sku = '" . $this->db->escape($data['sku']) . "',
VirgüldenSonrasına Ekle

teslim_tarihi = '" . $this->db->escape($data['teslim_tarihi']) . "',
Bulalım :

public function getProducts($data = array()) {
Alt Satıra Ekleyelim :

$exist = $this->db->query("SHOW COLUMNS FROM `" . DB_PREFIX . "product` WHERE Field = 'teslim_tarihi'"); if (count($exist->row) == 0) { $this->db->query("ALTER TABLE `" . DB_PREFIX . "product` ADD COLUMN `teslim_tarihi` VARCHAR(64) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL "); }
Burada arkadaşlar model dosyasında gerekli olan insert ve update kısımlarında gerekli olan eklemeler yanı sıra veri tabanında oluşturulacak olan tablo okuduğunda ekledikten sonra, sıra geldi gerekli olan bilgilerin geldikten sonra bu kısımlarda post etme olayına bunun içinse kontrollerde ustasından gerekli olan tanımlamaları yapmamız gerekmektedir

Dosyamızı Açalım :
admin/controller/catalog/

product.php

Bulalım :

$data['entry_sku'] = $this->language->get('entry_sku');
Alt Satıra Ekleyelim :

$data['entry_teslim_tarihi'] = $this->language->get('entry_teslim_tarihi');

Bulalım :


$data['help_sku'] = $this->language->get('help_sku');
</strong>

Alt Satıra Ekleyelim :


$data['help_teslim_tarihi'] = $this->language->get('help_teslim_tarihi');
</strong>

Bulalım :


if (isset($this->request->post['sku'])) {
</strong>

Üst Satıra EKleyelim :

if (isset($this->request->post['teslim_tarihi'])) { $data['teslim_tarihi'] = $this->request->post['teslim_tarihi']; } elseif (!empty($product_info)) { 
$data['teslim_tarihi'] = $product_info['teslim_tarihi']; } else { $data['teslim_tarihi'] = ''; }
Kontroller dosyasında da gerekli tanımlamalar yaptıktan sonra sıra geldi admin kullanıcısının form elemanlarını kullanarak da ürünü ekleme veyahut düzenleme esnasında kargoya verilme tarihini eklemesi için gerekli kodların eklenmesine.

Dosyamızı Açalım :
admin/view/template/catalog

product_form.tpl


Bulalım :


<div class="form-group"> <label class="col-sm-2 control-label" for="input-keyword"><span data-toggle="tooltip" title="<?php echo $help_keyword; ?>"><?php echo $entry_keyword; ?></span></label>
</strong>

Üst Satıra Ekleyelim :

<div class="form-group"> <label class="col-sm-2 control-label" for="input-teslim-tarihi"><span data-toggle="tooltip" title="<?php echo $help_teslim_tarihi; ?>"><?php echo $entry_teslim_tarihi; ?></span></label> <div class="col-sm-3"> <div class="input-group date"> <input type="text" name="teslim_tarihi" value="<?php echo $teslim_tarihi; ?>" placeholder="<?php echo $entry_teslim_tarihi; ?>" data-date-format="YYYY-MM-DD" id="input-teslim-tarihi" class="form-control" /> <span class="input-group-btn"> <button class="btn btn-default" type="button"><i class="fa fa-calendar"></i></button> </span></div> </div> </div>
Yapmış olduğumuz bu son düzenleme ile birlikte artık admin bölümünde gerekli olan bütün işlemleri başarılı bir şekilde gerçekleştirmiş olmaktayız. Şimdiki düzenleme işlemimiz ise arkadaşlar, yönetici kısmından gidilen teslim tarihini ziyaretçi tarafından ürün Detay da kullanıcı göstermeye. Şimdi biz o pankartın normal veritabanında bulunmayan 1 tablo eklediğinizden ötürü bunu sırasıyla model dosyasında kontroller dosyasında ve son olarak da tbl dosyasında göstermek için gerekli olan işlemleri yapmaya. Ilk önce model dosyamızı düzenliyoruz

Dosyamızı Açalım :
catalog/model/catalog/

product.php


Bulalım :


'sku' => $query->row['sku'],
</strong>

Alt Satıra Ekleyelim :


'teslim_tarihi' => $query->row['teslim_tarihi'],
</strong>

Şimdi işlemimiz bu eklediğimiz alanı controller dosyasında tanımlayıp işlevsel hale getirelim

Dosyamızı Açalım :
catalog/controller/product

product.php


Bulalım :


$data['points'] = $product_info['points'];
</strong>

Alt Satıra Ekleyelim :


$data['teslim_tarihi'] = $product_info['teslim_tarihi'];
</strong>

Son işleme geldik tpl dosyasından tanımlayıp bunu ürün detayda kullanıya gösterme işlemlerimize.


Dosyamızı Açalım :
catalog/view/theme/default/template/product

product.tpl


bulalım :


<button type="button" id="button-cart" data-loading-text="<?php echo $text_loading; ?>" class="btn btn-primary btn-lg btn-block"><?php echo $button_cart; ?></button> </div>
</strong>

Alt Satıra Ekleyelim :

<?php if ($teslim_tarihi) {?> <?php function turkcetarih($f, $zt = 'now'){ $z = date("$f", strtotime($zt)); $donustur = array( 'Monday' => 'Pazartesi', 'Tuesday' => 'Salı', 'Wednesday' => 'Çarşamba', 'Thursday' => 'Perşembe', 'Friday' => 'Cuma', 'Saturday' => 'Cumartesi', 'Sunday' => 'Pazar', 'January' => 'Ocak', 'February' => 'Şubat', 'March' => 'Mart', 'April' => 'Nisan', 'May' => 'Mayıs', 'June' => 'Haziran', 'July' => 'Temmuz', 'August' => 'Ağustos', 'September' => 'Eylül', 'October' => 'Ekim', 'November' => 'Kasım', 'December' => 'Aralık', 'Mon' => 'Pts', 'Tue' => 'Sal', 'Wed' => 'Çar', 'Thu' => 'Per', 'Fri' => 'Cum', 'Sat' => 'Cts', 'Sun' => 'Paz', 'Jan' => 'Oca', 'Feb' => 'Şub', 'Mar' => 'Mar', 'Apr' => 'Nis', 'Jun' => 'Haz', 'Jul' => 'Tem', 'Aug' => 'Ağu', 'Sep' => 'Eyl', 'Oct' => 'Eki', 'Nov' => 'Kas', 'Dec' => 'Ara', ); foreach($donustur as $en => $tr){ $z = str_replace($en, $tr, $z); } if(strpos($z, 'Mayıs') !== false && strpos($f, 'F') === false) $z = str_replace('Mayıs', 'May', $z); return $z; } ?> <div class="form-group" <ul class="alert alert-info" style="margin-bottom:10px;"> <li style="background:none;border:none;" class="list-group-item"><span class="glyphicon glyphicon-check " aria-hidden="true"></span> Ürün en geç <b> <?php echo turkcetarih('j F l Y ',$teslim_tarihi); ?> </b> tarihinde kargoya verilir</li> </ul> </div> <?php } ?>
İşlemimiz tamamdır. GüleGüle Kullanınız.