tr-opencart

     
avatar Şuanki Zaman: 12-20-2024, 08:20 AMHoşgeldin Misafir !
  Şifremi Hatırlat   kayıt ol
opencart temaları

Opencart'ı Anlamak Bölüm 4 Basit Bir Eklenti Yazalım

Konuyu görüntüleyenler: 1 Misafir
 
Değerlendir:
  • 1 Oy - 5 Yüzde
  • 1
  • 2
  • 3
  • 4
  • 5
%
Konu Kapalı  Gönder 
v  v
Yazar  sabitertan - Görüntüleme - Okunma  22487 - Yorum  2

sabitertanv
Süper Moderator
******
Süper Moderator user avatar
Çevrimdışı

Mesajlar: 290
Konular: 31
Katılma Tarihi: Dec 2011
Rep Puanı: 21
Teşekkürler: 22
127 Mesajına, 601 Teşekkür edildi.



Kişisel Bilgileri: v
Konu Tarihi: 08-24-2013 11:33 AM

Opencart ta bir eklenti yazmadan önce, aşağıdaki adımları takip etmemiz programlama aşamasında bizlere yardımcı olacaktır. Burada aynı zamanda örnek eklentimizi de tasarlayacağız.
1. Eklentinin Amacını belirleyelim. Benim eklentimin amacı yönetim panelinden gireceğim bir yazıyı sitenin herhangi bir yerinde gösterebilmek.
2. Eklentim kurulurken bir veritabanı tablosuna ihtiyaç duyacak mı? Hayır, opencart ın varsayılan eklenti kaydetme ve yönetme sistemi bu eklenti için yeterli. Daha sonra ek bir veritabanı tablosuna ihtiyaç duyacak bir örnek daha yapacağız.
3. Eklenti her konum ve bölüm için kullanılabilir olacak mı? Evet, eklentimde CSS ile hiçbir sabit genişlik ya da yükseklik değeri ya da sabit bir konum belirlemeyeceğim. Tamamen temanın seçimine bırakacağım.
4. Eklentinin bir başlığı olacak mı? Benim Eklentimin bir başlığı olacak "Günün İletisi", bu başlığa uygun şekilde bir Controller ismi seçmemiz gerek, eğer sadece Türk kullanıcılar hedef alınacaksa "GununIletisi" şeklinde seçilebilir, ama Diğer ülke kullanıcıları da söz konusuysa bir İngilizce isim seçmekte fayda var("MessageOfTheDay" gibi). Ben eklentimi diğer ülke kullanıcıları da anlayabilsin diye ingilizce bir isim seçeceğim ancak biraz kısaltacağım (MotDay).
5. Eklenti farklı dillere destek verecek mi? Benim eklentim farklı dillere destek verecek. Dolayısıyla dil dosyalarım olacak ve yönetim tarafından farklı dillerde yazı ekleyebileceğim.

Dikkat ederseniz aslında yukarıda

2. adım MODEL ,
3. adım VIEW,
4. adım CONTROLLER,
5. adım LANGUAGE

bölümlerimi nasıl oluşturacağımın temel fikrini vermektedir. İşte bu şekilde sizlerde bir eklenti oluşturmak istediğinizde, temel olarak MVC+L yapınızı kafanızda oluşturmalı ve bir yere not almalısınız ki amacınızdan sapmayın ve sonuca kısa sürede ulaşın.
Gelelim eklentimizin dizin yapısını oluşturmaya. Dizin yapısı yukarıda belirlediğim özelliklere göre oluşacak.
1. ek bir veritabanı işlevine ihtiyacım olmadığından model dizinlerim olmayacak.
2. controller/module dizinlerim olacak
3. view dizinlerim olacak, çünkü bu sadece bir işlev gerçekleştiren bir eklenti değil aynı zamanda sonuçları sitede görünecek bir eklenti.
4. language dizinlerim olacak çünkü çok dilli bir eklentim olsun istiyorum.
Bu ön belirlemeler ışığında dizin ve dosya yapım şu şekilde olacaktır.
Kod:
/admin/controller/module/motday.php
/admin/language/turkish/module/motday.php
/admin/language/english/module/motday.php
/admin/view/template/module/motday.tpl

/catalog/controller/module/motday.php
/catalog/language/turkish/module/motday.php
/catalog/language/english/module/motday.php
/catalog/view/theme/default/template/module/motday.tpl
Dileyen arkadaşlar Hoşgeldiniz modülünün bir kopyasını oluşturan ekli zip dosyasını indirip cm.bat dosyasındaki modname değişkenini yerine istediğiniz eklenti ismini yazın, kaydedin ve cm.bat dosyasını çalıştırın, cm.bat otomatik olarak istediğiniz modül adında gerekli dosya ve klasörleri oluşturacaktır. Oluşan admin ve catalog dizinlerini istediğiniz siteye kopyalayabilirsiniz.
Not: cm.bat kodların tam olarak doğru yerleştirildiğini garanti etmez. Benim için tek amacı gerekli dizin ve dosya yapısını oluşturmasıdır. Lütfen bu batch dosyası ile alakalı sorular sormayınız cevap verilmeyecektir.


Ekli Dosya(lar)
.zip simple_create.zip Eklentiyi indir...
Boyut: 12.45 KB İndirme: 172
Telif Hakkı için Rapor Edin...
sabitertan
Forumuna sahip çık! .:|Bağış Yap|:.
Paylaş!
 Teşekkür Edenler: nokta , osdem66 , adsl , eka7a , unblanced , karaer , sembolpc
sabitertanv
Süper Moderator
******
Süper Moderator user avatar
Çevrimdışı

Mesajlar: 290
Konular: 31
Katılma Tarihi: Dec 2011
Rep Puanı: 21
Teşekkürler: 22
127 Mesajına, 601 Teşekkür edildi.



Kişisel Bilgileri: v
Konu Tarihi: 08-24-2013 06:53 PM
Eklentimizi tasarlamaya başlayalım.
Adım adım sınıflarımızı ve işlevlerimizi oluşturalım
/admin/controller/module/motday.php

İlk olarak Controller sınıfımızı oluşturacağız. Sınıf adının bulunduğu dizinle ve dosya adıyla oluşturmamız gerekmetedir
PHP Kod:
<?php
class ControllerModuleMotday extends Controller {

Görüldüğü gibi sınıfımız Controller ana sınıfına genişletilmekte dolayısıyla Opencart Controller özelliklerinin tamamını kullanabilecek haldedir. Şimdi sıra geldi bir index işlevi oluşturup buraya View Model ve Language değişkenlerini ve işlevlerini atamaya.

PHP Kod:
<?php
class ControllerModuleMotday extends Controller {
private 
$error = array(); //hata yakalayıcı için tanımlanan değişken
public function index() {
$this->language->load('module/motday'); //Language
$this->load->model('setting/setting'); //Model
$this->template 'module/motday.tpl';//View
}

yukarıda görüldüğü gibi Controller sınıfımız tüm diğer parçaları birleştirmektedir. Dil dizisini çağırmakta, ardından gerekli Model'i çağırmakta ve son olarak View yani görüntüleme sayfasını çağırmaktadır.
Veritabanına ek bir tablo eklemediğimiz için Opencart ın yerleşik modellerinden setting/setting modelini çağırdık, bundan sonra artık settting/setting modelinin bize sağladığı tüm işlevleri kullanabiliriz.
sabitertan
Forumuna sahip çık! .:|Bağış Yap|:.
Paylaş!
 Teşekkür Edenler: e-ticaretdersleri , unblanced , karaer
sabitertanv
Süper Moderator
******
Süper Moderator user avatar
Çevrimdışı

Mesajlar: 290
Konular: 31
Katılma Tarihi: Dec 2011
Rep Puanı: 21
Teşekkürler: 22
127 Mesajına, 601 Teşekkür edildi.



Kişisel Bilgileri: v
Konu Tarihi: 08-25-2013 09:35 AM
Opencart modül ve güvenlik yapısını korumak için onaylama işlevini ekleyelim (validate) ve setting/setting modelinin editSetting işlevini çağıralım ki eklentimizin ayarları kaydedilebilsin, çünkü bizim kendimiz yazdığımız bir model yok bu nedenle setting/setting modelinin işlevlerini kullacağız.
PHP Kod:
<?php
class ControllerModuleMotday extends Controller {
    private 
$error = array(); //hata yakalayıcı için tanımlanan değişken
    
public function index() {
        
$this->language->load('module/motday'); //Language
        
$this->load->model('setting/setting'); //Model
        
if (($this->request->server['REQUEST_METHOD'] == 'POST') && $this->validate()) {
            
$this->model_setting_setting->editSetting('motday'$this->request->post);
        }
        
$this->template 'module/motday.tpl';//View
    
}
    
    protected function 
validate() {
        if (!
$this->user->hasPermission('modify''module/motday')) { //kulanıcının bu eklentiyi düzenleme yetkisinin olup olmadığını sorguluyoruz.
            
$this->error['warning'] = $this->language->get('error_permission');
        }
        
        if (!
$this->error) {
            return 
true;
        } else {
            return 
false;
        }    
    }

?>
Yukarıda görüldüğü gibi eğer tarayıcıdan Veri Gönderme(POST)* isteği yapılmışsa ve gelen veri onay işlevinde belirtilen kuralları tamamen sağlıyorsa editSetting(AyarlarıDüzenle) işlevine tarayıcıdan gelen veriyi (POST verisi) gönderiyoruz, böylece ayarlarımızın düzgün bir şekilde Opencart yapısına uygun kaydedilmesini sağlamaktayız.
*(Varsayılan olarak tarayıcılar GET işlevi kullanırlar, örneğin kullanıcı adı ve şifre gibi bir veri gönderilmesi söz konusu olursa POST işlevi kullanılır.)

Oluşacak hataları kullanıcıya göstermek için gerekli eklemeleri de yapalım, ve eğer ayarları düzgün kaydedersek kullanıcıyı nereye yönlendireceğimizi belirtelim.
PHP Kod:
<?php
class ControllerModuleMotday extends Controller {
    private 
$error = array(); //hata yakalayıcı için tanımlanan değişken
    
public function index() {
        
$this->language->load('module/motday'); //Language
        
$this->load->model('setting/setting'); //Model
        
        
if (($this->request->server['REQUEST_METHOD'] == 'POST') && $this->validate()) { //bir POST çağrısı varsa bunu editSetting işlevine yönlendiriyoruz.
            
$this->model_setting_setting->editSetting('motday'$this->request->post);
            
$this->session->data['success'] = $this->language->get('text_success'); //kullanıcıya kayıt başarılı iletisini gösteriyoruz.
            
$this->redirect($this->url->link('extension/module''token=' $this->session->data['token'], 'SSL')); // işlem tamamlandıktan sonra gidilecek sayfayı belirtiyoruz.
        
}
        
// buradan sonra göreceğimiz "data" ile başlayan değişken tanımları index.php de $registry = new Registry(); ile oluşturulan "data" dizisine eklenmektedir. Bu değişkenleri daha sonra View bölümünde yani motday.tpl de doğrudan kullanabiliriz.
        
if (isset($this->error['warning'])) { //eğer validate işlevi error['warning'] değişkenini oluşturmuşsa data dizisine error_warning değişkenini atıyoruz.
            
$this->data['error_warning'] = $this->error['warning']; 
        } else {
            
$this->data['error_warning'] = '';
        }
        
$this->template 'module/motday.tpl';//View
    
}
    
    protected function 
validate() {
        if (!
$this->user->hasPermission('modify''module/motday')) { //kulanıcının bu eklentiyi düzenleme yetkisinin olup olmadığını sorguluyoruz.
            
$this->error['warning'] = $this->language->get('error_permission');
        }
    
        if (!
$this->error) {
            return 
true;
        } else {
            return 
false;
        }    
    }

?>

Artık VIEW içerisinde kullanacağımız değişkenleri ekleyebiliriz. Böylelikle tüm çerçeveyi tamamlamış olacağız. Bu noktadan sonra VIEW yani .tpl dosyamızı tasarlayabiliriz. Aşağıda CONTROLLER dosyamızın son halini açıklamalarıyla veriyorum. Lütfen açıklamaları da dikkatlice okuyunuz.
PHP Kod:
<?php
class ControllerModuleMotday extends Controller {
    private 
$error = array(); //hata yakalayıcı için tanımlanan değişken
    
public function index() {
        
$this->language->load('module/motday'); //Language
        
$this->load->model('setting/setting'); //Model
        
$this->document->setTitle($this->language->get('heading_title'));// sayfa başlığımızın oluşturulmasını sağlıyoruz
        
if (($this->request->server['REQUEST_METHOD'] == 'POST') && $this->validate()) { //bir POST çağrısı varsa bunu editSetting işlevine yönlendiriyoruz.
            
$this->model_setting_setting->editSetting('motday'$this->request->post);
            
$this->session->data['success'] = $this->language->get('text_success'); //kullanıcıya kayıt başarılı iletisini gösteriyoruz.
            
$this->redirect($this->url->link('extension/module''token=' $this->session->data['token'], 'SSL')); // işlem tamamlandıktan sonra gidilecek sayfayı belirtiyoruz.
        
}
        
// buradan sonra göreceğimiz "data" ile başlayan değişken tanımları index.php de $registry = new Registry(); ile oluşturulan "data" dizisine eklenmektedir. Bu değişkenleri daha sonra View bölümünde yani motday.tpl de doğrudan kullanabiliriz.
        
        // Dil-Çeviri değişkenleri, burada anlaşılır değişkenler kullanmaya özen gösterin
        
$this->data['heading_title'] = $this->language->get('heading_title');
        
/* Burada olduğu gibi opencart sadece bir yazı ise 'text', 
            bir girdi ise(input,select,textarea gibi) 'entry'
            bir tuş ise 'button' ile başlamıştır. 
            Yani buradaki çeviri değişkenleri aslında bunları nerede kullanacağımızın da fikrini vermelidir.*/
        
$this->data['text_enabled'] = $this->language->get('text_enabled');
        
$this->data['text_disabled'] = $this->language->get('text_disabled');
        
$this->data['text_content_top'] = $this->language->get('text_content_top');
        
$this->data['text_content_bottom'] = $this->language->get('text_content_bottom');        
        
$this->data['text_column_left'] = $this->language->get('text_column_left');
        
$this->data['text_column_right'] = $this->language->get('text_column_right');
        
        
$this->data['entry_description'] = $this->language->get('entry_description');
        
$this->data['entry_layout'] = $this->language->get('entry_layout');
        
$this->data['entry_position'] = $this->language->get('entry_position');
        
$this->data['entry_status'] = $this->language->get('entry_status');
        
$this->data['entry_sort_order'] = $this->language->get('entry_sort_order');
        
        
$this->data['button_save'] = $this->language->get('button_save');
        
$this->data['button_cancel'] = $this->language->get('button_cancel');
        
$this->data['button_add_module'] = $this->language->get('button_add_module');
        
$this->data['button_remove'] = $this->language->get('button_remove');
        
// Dil-Çeviri değişkenleri sonu
        
if (isset($this->error['warning'])) { //eğer validate işlevi error['warning'] değişkenini oluşturmuşsa data dizisine error_warning değişkenini atıyoruz.
            
$this->data['error_warning'] = $this->error['warning']; 
        } else {
            
$this->data['error_warning'] = '';
        }
        
// kaydet tuşunun yönlendirileceği bağlantıyı tanımlıyoruz.
        
$this->data['action'] = $this->url->link('module/motday''token=' $this->session->data['token'], 'SSL');
        
// vazgeç tuşunun yönlendirileceği bağlantıyı tanımlıyoruz.
        
$this->data['cancel'] = $this->url->link('extension/module''token=' $this->session->data['token'], 'SSL');
        
// oturuma(session) özgü bir güvenlik girdisi(token) tanımlıyoruz.
        
$this->data['token'] = $this->session->data['token']; // login.php de $this->session->data['token'] = md5(mt_rand()); ile tanımlanan rasgele değer
        // eklentimizin değişkenlerini içerecek olan modules dizisini tanımlıyoruz
        
$this->data['modules'] = array();
        
        if (isset(
$this->request->post['motday_module'])) { //eğer tarayıcıdan motday_module etiketli bir POST değişkeni gelmişse modules dizisine bu değeri atıyoruz.
            
$this->data['modules'] = $this->request->post['motday_module'];
        } elseif (
$this->config->get('motday_module')) { // eğer POST değil GET isteği yapılmışsa motday_module ayarlarını veritabanında bulunan setting tablosundan alıyoruz.
            
$this->data['modules'] = $this->config->get('motday_module');
        }    
        
//desing/layout modelini çağırıyoruz.        
        
$this->load->model('design/layout'); 
        
// Bölümlerin seçilebilmesini sağlayabilmek için tüm bölümleri 'layouts' değişkenine atıyoruz.
        
$this->data['layouts'] = $this->model_design_layout->getLayouts(); 
        
/* Çoklu dil desteği verebilmek için 'localisation/language' modelini çağırıyoruz.
           Burada dikkat edilmesi gereken bu model bir Yerelleştirme modelidir. MVC+L de gördüğümüz +L(Language) değildir.
           Bu modelin verileri bir dosyada değil, veritabanında saklanır.*/
        
$this->load->model('localisation/language');
        
// Yerelleştirme sayfasında tanımladığımız Dillerin tamamını veritabanından alıp 'languages' değişkenine atıyoruz.
        
$this->data['languages'] = $this->model_localisation_language->getLanguages();

        
$this->template 'module/motday.tpl'//VIEW, eklentimizin HTML sayfasını oluşturacak bölümü içe aktarıyoruz.
        //eklentimizin düzgün görünebilmesi için header ve footer ın yüklenmesini sağlıyoruz.
        
$this->children = array(
            
'common/header'
            
'common/footer' 
        
);
        
// Tüm işlevler tamamlandıktan sonra kullanıcıya dönüş yapacak işlevi çağırıyoruz.    
        
$this->response->setOutput($this->render());
    }
    
    protected function 
validate() {
        if (!
$this->user->hasPermission('modify''module/motday')) { //kulanıcının bu eklentiyi düzenleme yetkisinin olup olmadığını sorguluyoruz.
            
$this->error['warning'] = $this->language->get('error_permission');
        }
    
        if (!
$this->error) {
            return 
true;
        } else {
            return 
false;
        }    
    }

?>
sabitertan
Forumuna sahip çık! .:|Bağış Yap|:.
Paylaş!
 Teşekkür Edenler: unblanced , karaer , sembolpc , abiani , alikral , sakaryanotebook , h-bilo

« Önceki | Sonraki »
Konu Kapalı  Gönder 

Opencart'ı Anlamak Bölüm 4 Basit Bir Eklenti Yazalım Konusunun Linki Direk Link
Opencart'ı Anlamak Bölüm 4 Basit Bir Eklenti Yazalım Konusunun HTML Kodu HTML Link
Opencart'ı Anlamak Bölüm 4 Basit Bir Eklenti Yazalım Konusu BBCode Linki BBCode Link
Opencart'ı Anlamak Bölüm 4 Basit Bir Eklenti Yazalım Konusunu Paylaş Sosyal Paylaş

Benzeyen Konular
Konu: Yazar Cevaplar: Gösterim: Son Mesaj
  [Video] Opencart 1.5.x Seo Link Sadece Ürün İsmi Olsun e-ticaretdersleri 5 14,954 10-17-2017 05:34 PM
Son Mesaj: fotoğrafçı
  Opencart 2 Afiş Boyutları tolozgun 2 16,079 02-02-2016 08:04 PM
Son Mesaj: tolozgun
  Opencart 1.5.x tüm versiyonlarda Slayt ve afiş(banner)oluşturmak (resimli anlatım) osdem66 9 23,298 01-26-2015 04:18 PM
Son Mesaj: can.55
  Opencart'ı Anlamak Bölüm 3 Opencartta MVC +L sabitertan 2 18,297 08-22-2013 09:54 AM
Son Mesaj: unsound
  Opencart'ı Anlamak Bölüm 2- system dizini ve startup.php sabitertan 3 19,914 07-28-2013 01:19 PM
Son Mesaj: GokhanKorkut
  Opencart'ı Anlamak Bölüm 1- index.php sabitertan 3 15,353 07-14-2013 05:20 PM
Son Mesaj: sabitertan

Opencart'ı Anlamak Bölüm 4 Basit Bir Eklenti Yazalım indir, Opencart'ı Anlamak Bölüm 4 Basit Bir Eklenti Yazalım Videosu, Opencart'ı Anlamak Bölüm 4 Basit Bir Eklenti Yazalım online izle, Opencart'ı Anlamak Bölüm 4 Basit Bir Eklenti Yazalım Bedava indir, Opencart'ı Anlamak Bölüm 4 Basit Bir Eklenti Yazalım Yükle, Opencart'ı Anlamak Bölüm 4 Basit Bir Eklenti Yazalım Hakkında, Opencart'ı Anlamak Bölüm 4 Basit Bir Eklenti Yazalım nedir, Opencart'ı Anlamak Bölüm 4 Basit Bir Eklenti Yazalım Free indir, Opencart'ı Anlamak Bölüm 4 Basit Bir Eklenti Yazalım oyunu, Opencart'ı Anlamak Bölüm 4 Basit Bir Eklenti Yazalım download


Forum Atla: