Nasıl OpenCart bir guru olmak?
Bazı apı kendi resmi forumlarında aramalar dışında hiçbir belge var gibi görünüyor. Çalışabilir çerçeve ve Codeıgniter çerçeve ile deneyimim var. Herhangi bir OpenCart ustalar benim ve zaman kısa sürede öğrenmek ustalaşmak için en iyi yol tavsiye edebilir misiniz? Bu büyük bir proje yapmak için erken.
CEVAP
OpenCart 1.5.X geliştirici hızlı yeni başlayanlar için başlangıç rehberi
Bu kılavuz, geliştiriciler PHP, OOP ve MVC mimarisi ile zaten tanıdık yazılır
Aşağıda, arabası Katalog taraf için örnekler göreceksiniz. Admin tarafında ilgili bölümünde belirtilen görüşleri dışında işlev aynıdır
Anlayış Kütüphaneler
Kütüphane tüm işlevsellik Denetleyicisi, Model ve Manzaralı $this->library_name
kullanarak erişilebilir. Bunların hepsi /system/library/
klasöründe bulunabilir. Örneğin, mevcut alışveriş sepeti ürünleri erişmek için /system/library/cart.php
ve erişilebilir $this->cart->getProducts()
kullanılarak yapılabilir Cart
sınıf kullanmanız gerekir
Sık kullanılan öğeleri
customer.php
- Müşteri ile ilgili işlevleriuser.php
kullanıcı ilgili işlevleri Admincart.php
ile ilgili fonksiyonları Sepeticonfig.php
- Tüm bu ayarları yüklenirurl.php
- URL oluşturma fonksiyonları
Rota anlayış parametre
OpenCart çerçevesinde sorgu dizesi parametresi route=aaa/bbb/ccc
yük için kullanır, ve her sayfa için düzenlemek için ihtiyacınız olan dosyaları bulmak için temel özelliğidir. En route aslında tek kullanım aaa/bbb
olacaktır görüldüğü gibi iki bölümden, ancak bazı içeren üç bölümden aaa/bbb/ccc
ilk bölüm aaa
genellikle ilgili klasörü içinde genel bir klasör gibi denetleyici veya şablon klasörleri. İkinci kısmı ise genellikle ilgili .php
.tpl
uzantısı olmadan dosya adı ile ilgilidir. Üçüncü kısım anlayış kontrolörleri aşağıda açıklanmıştır
Diller
Diller your-language
alt /catalog/language/
klasör içinde saklanır. İçinde, genel metin değerleri kullanılan çeşitli sayfaları saklanır your-language.php
dosya içindeki klasörü, yani İngilizce dil Katalog tarafı da bulacaksınız değerleri catalog/language/english/english.php
. Belirli bir sayfa metin için, sayfa route
(Bu genel durum, ama değil . ihtiyacın olacak ^em>her zamanherhangi bir dil dosyası gibi) belirtebilirsiniz. Örneğin, Arama Sayfası var rota product/search
, ve bu nedenle dil belirli bir metin için bu sayfayı bulunabilir catalog/language/english/product/search.php
(Dikkat dosya adı ve alt maç rotayı takip ederek .php
.
Bir denetleyici dili yüklemek için kullanın
$this->language->load('product/search');
Sonra Dil kitaplık fonksiyonu get
belirli bir dil metinleri almak için kullanmak gibi
$some_variable = $this->language->get('heading_title');
Dil değişkenleri dil dosyasında tuşları ve metin değerler dizisi olan 35 ** özel bir değişken kullanılarak atanır. Senin 36 ** buna benzer bir şey bulmak gerekir
$_['heading_title'] = 'Search';
Küresel dil değerleri english/english.php
otomatik olarak yüklenen ve $this->language->load
yöntemi olmadan kullanılabilir dosya
Anlayış denetleyicileri
Denetleyicileri route
göre yüklenir ve oldukça düz ileri anlamak için. Denetleyicileri /catalog/controller/
klasöründe bulunur. Son örnekten devam eden Arama Sayfası Denetleyicisi bu klasör içinde /product/search.php
. Rota .php
ardından kullanılan tekrar dikkat edin.
Denetleyici dosya açma, Pascal Davası Controller
sınıfı ControllerProductSearch
adlı uzanan code göreceksiniz. Bu tekrar rotaya özgü, Controller
alt adından ve aktifleştirilen uzantısı olmadan dosya adı ile. Bu harf aslında gerekli değildir, ama kolay okunabilirlik için tavsiye edilir. Classnames klasörü ve dosya adını, harf ve sayı dışında herhangi bir değeri olmadığını belirtmekte yarar var. Alt çizgi kaldırılır.
Sınıf içinde yöntemleri. Sınıfta yöntemleri public
- private
değildir rota üzerinden çalıştırmak için erişilebilir ilan etti. Standart iki parçası bir rota (aaa/bbb
yukarıda), varsayılan olarak, index()
varsayılan bir yöntem deniyor. Eğer bir rota üçüncü bölümü (ccc
yukarıda) kullanılırsa, bu yöntem yerine çalışacak. Örneğin, account/return/insert
/catalog/controller/account/return.php
dosyası ve sınıf yük, ve insert
yöntemini çağırmak için çalışacağız
Anlama Modelleri
OpenCart Model /catalog/model/
klasöründe bulunur ve fonksiyon göre gruplandırılır yol değil, ve bu nedenle üzerinden denetleyicisi onları yüklemeniz gerekir
$this->load->model('xxx/yyy');
Bu alt xxx
dosya yyy.php
adlı yük olacaktır. Nesne ile kullanmak için kullanılabilir
$this->model_xxx_yyy
ve kontrolörleri ile sadece public
yöntemleri çağırabilir. Örneğin, bir görüntüyü yeniden boyutlandırmak için tool/image
modeli kullanmak ve aşağıdaki gibi 62 ** yöntemi çağrısı
$this->load->model('tool/image');
$this->model_tool_image->resize('image.png', 300, 200);
Kumanda görüş değişken atama anlayış
Kumanda görüntülemek için değerleri geçmek için, sadece esas anahtar dizisi olan $this->data
değişken için veri atamak lazım =>değer çiftleri. Örnek olarak
$this->data['example_var'] = 123;
Görünümünde bu eriştiği bir değişken içine her anahtara dönüştüren bir küçük extract() yöntem biliyorsanız anlaşılması kolay olmalıdır. example_var
anahtar $example_var
olur ve görünümü gibi erişilebilir
Anlayış temalar
Temalar Katalog tarafı da mevcut, ve temelde şablonları, stil ve tema görüntülerin bir klasör. Tema klasörleri /catalog/view/theme/
klasörü tema adından yerleştirilir. Klasör adı default
klasörü dışında bir önemi yok
Admin yan /admin/view/template/
(temalar farklı izin vermiyor gibi yolundan /theme/theme-name/
atlama) kullanır
Tema dosyaları bu klasör içinde template
bir klasörde bulunan şablon. Herhangi bir şablon seçili tema için kullanılabilir olmamalı, varsayılan klasör şablonu yerine son çare olarak kullanılır. Bu temalar çok az dosyaları ile oluşturulmuş ve hala tam olarak işlev anlamına gelir. Ayrıca yükseltmeleri yapılmış gibi kod çoğaltılması ve sorunları azaltır
Anlayış görünümler (şablonları)
Dil ve modelleri ile, dosyanın genellikle yolu çok da ilgili görünümü hiç olmak zorunda değil. Katalog tarafta şablonlar genellikle bu durumda varsayılan tema şablonları kullanılacaktır mevcut değil sürece /catalog/view/theme/your-theme/template/
bulundu. Arama Sayfası bizim yukarıdaki örnekte, dosya product/search.tpl
. Yolları ile üç parça için, sabit belli bir kural yok ama genellikle aaa/bbb_ccc.tpl
. Admin, çoğu sayfa Bu, sayfa öğeleri, ürün Listeleme Sayfası Listeleme gibi catalog/product_list.tpl
ve ürün düzenleme formu catalog/product_form.tpl
içinde bulunduğu durum ile izleyin. Yine, bu set değil, ama varsayılan standart bir araba
Bu değer şablon dosyası aslında sadece başka bir php dosyası var, ama bir işaret .uzatma Vuk ve aslında denetleyicisi dosyası, bir kontrolör kod şeyler, bu nedenle bütün bir şablon dosyası çalıştırılabilir (gerçi çok gerekli olmadıkça tavsiye)
Veritabanı anlayış nesne
Sorguları kullanarak çalıştırın
$result = $this->db->query("SELECT * FROM `" . DB_PREFIX . "table`");
Adından da anlaşılacağı gibi DB_PREFIX
sabit eğer varsa, veritabanı öneki içeren
$result
SELECT
sorgu için bir nesne, bir kaç özelliklerini içeren dönecektir
$result->row
eğer bir veya daha fazla ilişkilendirilebilir bir dizi olarak döndürülür Eğer ilk satır veri içerir
$result->rows
satır sonuçlarının bir dizi, döngü için ideal bir foreach kullanarak içerir
$result->num_rows
döndürülen sonuç sayısını içerir
Ayrıca $this->db
nesne var fazladan birkaç yöntem vardır
$this->db->escape()
değeri geçti mysql_real_escape_string() kullanır
$this->db->countAffected
satır UPDATE
bir sorgu tarafından etkilenen ve sayısını verir
$this->db->getLastId()
son otomatik artış kimliği mysql_insert_id() kullanarak verir
Ayrılmış değişkenler anlayış
OpenCart değişkenlerini*, $_POST
, $_SESSION
, , *, *95$_COOKIE
*94 90* *standart VE $_SERVER
yerine kullanmak önceden
$_SESSION
veri ilişkilendirilebilir bir dizi $_SESSION
taklit edilmesi $this->session->data
kullanarak düzenlenebilir
Diğer tüm giriş yapılmış $this->request
kullanarak ve "" sihirli tırnaklar ile uyumlu/devre dışı, yani etkin . temizlenmiş
$_GET
$this->request->get
olur
$_POST
$this->request->post
olur
$_COOKIE
$this->request->cookie
olur
$_FILES
$this->request->files
olur
$_REQUEST
$this->request->request
olur
$_SERVER
$this->request->server
olur
Özet
Yukarıdaki geliştiriciler için kurşun geçirmez bir rehber olmasa da, umarım bu başlamak için iyi bir başlangıç noktası olarak hizmet verecek
Nasıl `klon` da dahil olmak üzere alt ...
Dosyalar ve klasörler de dahil olmak ü...
Nasıl dize karşılaştırırken büyük / kü...
Nasıl benim özel nesneler Parcelable o...
Nasıl XUL ve/veya HTML sarılmış olmak ...