OpenCart 1.5.X geliştirici yeni başlayanlar için hızlı başlangıç kılavuzu
Bu kılavuz, PHP, OOP ve MVC mimarisine zaten aşina olan geliştiriciler için yazılmıştır.
Aşağıda, alışveriş sepetinin katalog tarafı için örnekler göreceksiniz. Yönetici tarafı, ilgili bölümde belirtilen görünümler haricinde işlev bakımından aynıdır.
Kitaplıkları Anlamak
Tüm kitaplık işlevlerine Denetleyici, Model ve Görünümler aracılığıyla erişilebilir $this->library_name
. Bunların tümü /system/library/
klasörde bulunabilir. Örneğin, mevcut alışveriş sepetinin ürünlerine erişmek için Cart
, içinde bulunan /system/library/cart.php
ve kullanılarak erişilebilen sınıfı kullanmanız gerekir.$this->cart->getProducts()
Yaygın olarak kullanılan öğeler
customer.php
- Müşteri ile ilgili işlevler
user.php
- Yönetici kullanıcıyla ilgili işlevler
cart.php
- Alışveriş sepetiyle ilgili işlevler
config.php
- Tüm ayarlar buradan yüklenir
url.php
- URL oluşturma işlevleri
Rota parametresini anlama
OpenCart'ın çerçevesi, route=aaa/bbb/ccc
neyin yükleneceğini bilmek için sorgu dizesi parametresine dayanır ve her sayfa için düzenlemeniz gereken dosyaları bulmanın temelini oluşturur. Çoğu yol aslında yalnızca aaa/bbb
iki parça olarak görülmesi gerekenleri kullanır , ancak bazıları üç bölüm içerir aaa/bbb/ccc
. İlk bölüm aaa
genellikle denetleyici veya şablon klasörler gibi genel bir klasör içindeki klasörle ilgilidir. İkinci bölüm genellikle ilgili .php
veya .tpl
uzantı olmadan dosya adıyla ilgilidir . Üçüncü bölüm, aşağıdaki "Denetleyicileri anlama" bölümünde açıklanmıştır.
Dilleri anlamak
Diller /catalog/language/
, your-language
alt klasördeki klasörde saklanır . Bunun içinde, çeşitli sayfalarda kullanılan genel metin değerleri your-language.php
klasör içindeki dosyada saklanır , bu nedenle katalog tarafındaki İngilizce dili için değerleri içinde bulabilirsiniz catalog/language/english/english.php
. Belirli bir sayfa metni route
için, sayfa için ihtiyacınız olacaktır (Bu genellikle böyledir, ancak istediğiniz herhangi bir dil dosyasını belirleyebileceğiniz için her zaman geçerli değildir ). Örneğin, arama sayfasının rotası vardır product/search
ve bu nedenle bu sayfa için dile özgü metnin içinde bulunabilir catalog/language/english/product/search.php
(Dosyanın adı ve alt klasörünün, ardından gelen rotayla eşleştiğine dikkat edin .php
.
Dili bir denetleyiciye yüklemek için şunu kullanırsınız:
$this->language->load('product/search');
Ardından, dil kitaplığı işlevini get
, örneğin, belirli dil metinlerini almak için kullanabilirsiniz.
$some_variable = $this->language->get('heading_title');
Dil değişkenleri $_
, bir anahtarlar ve metin değerleri dizisi olan özel bir değişken kullanılarak dil dosyasında atanır . Senin içinde /catalog/language/english/product/search.php
benzer bir şey bulmalısın
$_['heading_title'] = 'Search';
Global dil dosyasındaki english/english.php
değerler otomatik olarak yüklenir ve $this->language->load
yöntem olmadan kullanılabilir.
Denetleyicileri anlama
Kontrolörler temel alınarak yüklenir route
ve anlaşılması oldukça basittir. Denetleyiciler /catalog/controller/
klasörde bulunur. Son örnekten devam edersek, Arama sayfası için Denetleyici /product/search.php
bu klasörün içindedir. İzlenen rotanın .php
kullanıldığına bir kez daha dikkat edin .
Denetleyici dosyasını açtığınızda, Controller
sınıfı genişleten bir Pascal Case sınıf adı görürsünüz ControllerProductSearch
. Bu yine rotaya özeldir.Controller
ardından alt klasör adı ve uzantı büyük harfle yazılmadan dosya adı gelir. Büyük harf kullanımı aslında gerekli değildir, ancak kolay okunabilirlik için önerilir. Sınıf adlarının alt klasörden ve dosya adından harfler ve sayılar dışında herhangi bir değer almadığını belirtmek gerekir. Alt çizgiler kaldırılır.
Sınıfın içinde yöntemler vardır. Bildirilen sınıftaki yöntemler public
, rota aracılığıyla çalıştırılmak üzere erişilebilirdir - private
değildir. Varsayılan olarak, standart iki parçalı yolla ( aaa/bbb
yukarıda), varsayılan bir index()
yöntem çağrılır. Bir rotanın üçüncü kısmı ( ccc
yukarıda) kullanılırsa, bunun yerine bu yöntem çalıştırılacaktır. Örneğin account/return/insert
, /catalog/controller/account/return.php
dosyayı ve sınıfı yükleyecek ve insert
yöntemi çağırmayı deneyecek
Modelleri Anlamak
OpenCart'taki modeller /catalog/model/
klasörde bulunur ve rotaya değil işleve göre gruplandırılır ve bu nedenle bunları kontrol cihazınıza
$this->load->model('xxx/yyy');
Bu, dosyayı xxx
adı verilen alt klasöre yükleyecektir yyy.php
. Daha sonra nesne üzerinden kullanılabilir
$this->model_xxx_yyy
ve denetleyicilerde olduğu gibi, yalnızca public
yöntemlerini çağırabilirsiniz . Örneğin, bir görüntüyü yeniden boyutlandırmak için tool/image
modeli kullanır ve resize
aşağıdaki gibi yöntemini çağırırsınız.
$this->load->model('tool/image');
$this->model_tool_image->resize('image.png', 300, 200);
Denetleyiciden görünümlerdeki değişken atamasını anlama
Denetleyiciden görünüme değerler iletmek için, verilerinizi $this->data
değişkene atamanız yeterlidir , bu temelde bir anahtar => değer çiftleri dizisidir. Örnek olarak
$this->data['example_var'] = 123;
Her anahtarı bir değişkene dönüştüren extract () yöntemine aşinaysanız, buna bir görünümde erişmek biraz anlaşılır olmalıdır . Böylece example_var
anahtar $example_var
görünümde olduğu gibi erişilebilir hale gelir ve erişilebilir.
Temaları anlamak
Temalar yalnızca katalog tarafında mevcuttur ve temelde şablonlar, stil sayfaları ve tema görüntülerinden oluşan bir klasördür. Tema klasörleri /catalog/view/theme/
klasöre yerleştirilir ve ardından tema adı gelir. Klasör ismi hariç önem olmadığı default
klasöre
Yönetici tarafı kullanır /admin/view/template/
( /theme/theme-name/
farklı temalara izin vermediği için yoldan atlayarak )
Şablon dosyaları template
, tema klasöründeki bir klasörde bulunur. Şu anda seçili tema için herhangi bir şablon yoksa, bunun yerine yedek olarak varsayılan klasörün şablonu kullanılır. Bu, temaların çok az dosyayla oluşturulabileceği ve yine de tam olarak çalışabileceği anlamına gelir. Ayrıca, yükseltmeler yapıldıkça kod yinelemesini ve sorunları azaltır
Görünümleri (şablonlar) anlama
Dil ve modellerde olduğu gibi, görünüm dosyaları genellikle rota ile ilgilidir, ancak olması gerekmez. Katalog tarafındaki şablonlar genellikle /catalog/view/theme/your-theme/template/
mevcut olmadığı sürece içinde bulunur, bu durumda varsayılan temanın şablonları kullanılacaktır. Yukarıdaki arama sayfası örneğimiz için dosya product/search.tpl
. Üç bölümden oluşan rotalar için, aaa/bbb_ccc.tpl
katı kural olmamasına rağmen genellikle geçerlidir . Yöneticide, ürün listeleme sayfası gibi öğeleri listeleyen sayfaların içinde olması catalog/product_list.tpl
ve ürün düzenleme formunun içinde olması dışında çoğu sayfa bunu takip eder catalog/product_form.tpl
. Yine, bunlar ayarlanmadı, ancak varsayılan alışveriş sepeti için bir standart.
Şablon dosyası aslında sadece başka bir php dosyasıdır, ancak bir .tpl uzantısına sahiptir ve aslında denetleyici dosyasında çalıştırılır, bu nedenle bir denetleyicide kodlayabileceğiniz her şey bir şablon dosyasında çalıştırılabilir (ancak kesinlikle önerilmez) gerekli)
Veritabanı nesnesini anlama
Sorgular kullanılarak çalıştırılır
$result = $this->db->query("SELECT * FROM `" . DB_PREFIX . "table`");
DB_PREFIX
adından da anlaşılacağı gibi, varsa veritabanı önekini içeren bir sabittir
$result
SELECT
birkaç özellik içeren sorgular için bir nesne döndürür
$result->row
bir veya daha fazla ilişkilendirilebilir dizi olarak döndürülürse ilk satırın verilerini içerir
$result->rows
foreach kullanarak döngü yapmak için ideal olan bir dizi satır sonucu içerir
$result->num_rows
döndürülen sonuçların sayısını içerir
Ayrıca $this->db
nesnenin sahip olduğu birkaç ekstra yöntem vardır.
$this->db->escape()
iletilen değerde mysql_real_escape_string () kullanır
$this->db->countAffected
bir UPDATE
sorgudan etkilenen satırların sayısını verir vb.
$this->db->getLastId()
mysql_insert_id () kullanarak son otomatik artış kimliğini döndürür
Ayrılmış değişkenleri anlama
OpenCart standardın yerine kullanılmasına değişkenleri önceden tanımlanmış $_GET
, $_POST
, $_SESSION
, $_COOKIE
, $_FILES
, $_REQUEST
VE$_SERVER
$_SESSION
$this->session->data
verinin bir ilişkisel dizi olduğu yerde düzenlenir .$_SESSION
Diğerlerinin hepsine kullanılarak erişilebilir $this->request
ve sihirli tırnak işaretlerinin etkinleştirilmesi / devre dışı bırakılması için "temizlendi".
$_GET
olur $this->request->get
$_POST
olur $this->request->post
$_COOKIE
olur $this->request->cookie
$_FILES
olur $this->request->files
$_REQUEST
olur $this->request->request
$_SERVER
olur $this->request->server
Özet
Yukarıdakiler geliştiriciler için kurşun geçirmez bir rehber olmasa da, umarım yeni başlayanlar için iyi bir başlangıç noktası olur.