Birincisi ve en önemlisi, ben son derece size PDF/E-Book from PHP Architect satın öneririz. US $ 20, ama bulmak mümkün oldum sadece basit "Burada Magento nasıl çalışır" bir kaynaktır. Ben de yazmaya başladım Magento tutorials at my own website.
İkinci olarak, bir seçim var ve deneyimli bir programcı değilseniz veya (ideal olarak PHP and Java içinde) deneyimli bir programcı erişiminiz yoksa, pick another cart. Magento iyi tasarlanmış, ancak diğer programcılar üstüne modülleri kurmak bir alışveriş sepeti çözüm olarak üretilmiştir. Kolayca akıllı insanlar tarafından anlaşılması için tasarlanmış değil, ama programcılar değil edildi.
Üçüncü olarak, Magento MVC vb PHP geliştiricileri ile popüler MVC modeli Ruby on Rails, Django, CodeIgniter, CakePHP çok farklı bu gün. Ben Zend modeline dayanan düşünüyorum ve her şey çok Java cepten-gibidir. Eğer endişe gerekir two denetleyicileri var. Modül / frontName kontrol ve sonra MVC denetleyicisi.
Dördüncü, Magento uygulamanın kendisi kullanarak olacak aynı modül sistemi kullanılarak inşa edilmiş, böylece çekirdek kodu çevresinde alay yararlı bir öğrenme taktik olduğunu. Ayrıca, Magento ile ne yapıyor olacak bir sürü overriding, mevcut sınıfları. Ne burada koruyorum creating yeni işlevsellik değil, öncelikli değildir. Eğer orada kod örnekleri bakarak yaparken bunu göz önünde bulundurun.
Ben kurulum nasıl bir kontrolör / yönlendirici belirli bir URL'ye yanıt için size gösteren, ilk soru ile başlamak için gidiyorum. Bu küçük bir roman olacak. Ben model / şablon ile ilgili konular için daha zaman var olabilir, ama şimdi, bilmiyorum. Ben, ancak, kısaca SQL soruya konuşmak olacaktır.
Magento EAV veritabanı mimarisi kullanır. Mümkün modeli Sistem ihtiyacınız bilgi almak için sağlayan nesneleri kullanmayı deneyin. Ben SQL tabloları bütün olduğunu biliyorum, ama bu ham SQL sorguları kullanarak veri kapma düşünmek iyi değil, ya sen deli gidersiniz.
Nihai feragat. Ben yaklaşık iki ya da üç hafta, bu nedenle sorumluluğun alıcıya Magento kullanarak oldum. Bu kadar da yığın taşması yardımcı olduğu gibi düz kafamda bu almak için bir egzersizdir.
Bir modül oluşturun
Magento için tüm eklemeler ve özelleştirmeler modüller aracılığıyla yapılır. Yani, yapmanız gerekir ilk şey, yeni bir modül oluşturun. Bir XML dosyası oluşturun app/modules
aşağıdaki gibi adlandırılır
cd /path/to/store/app
touch etc/modules/MyCompanyName_HelloWorld.xml
<?xml version="1.0"?>
<config>
<modules>
<MyCompanyName_HelloWorld>
<active>true</active>
<codePool>local</codePool>
</MyCompanyName_HelloWorld>
</modules>
</config>
MyCompanyName sizin değişiklikler için benzersiz bir ad, bu sizin şirketinizin ismi olmak zorunda, ancak önerilen kongre benim magento anlamına gelmiyor. HelloWorld
senin modülün adıdır.
Uygulama önbelleğini temizleyin
Şimdi modül dosya yerinde olduğunu, biz Magento bunu bildirmek (ve çalışmalarımızı kontrol) gerekecektir. Admin uygulama
- Sistem-> Önbellek Yönetimi git
- Tüm Önbellek menüsünden Yenile seçin
- Kaydet Cache ayarlarını tıklayın
Şimdi, Magento modülü biliyor emin olun
- Sistem-> Yapılandırma git
- Gelişmiş tıklayın
- Kutusu ayarı "Devre Dışı Bırak modülleri çıktı" in, "MyCompanyName_HelloWorld" adlı yeni modül için bakmak
Eğer performansı yavaşlatabilir ile yaşayabilir varsa, uygulama önbelleği geliştirirken / öğrenim kapatmak isteyebilirsiniz. Hiçbir şey o önbellek dışarı açık unutmadan ve değişiklikler görünmüyor merak daha sinir bozucu olduğunu.
Setup the directory structure
Sonra, kurulum modülü için bir dizin yapısı gerekir. Tüm bu dizinleri ihtiyacınız olmayacak, ama şimdi hepsini kurma hiçbir zararı yoktur.
mkdir -p app/code/local/MyCompanyName/HelloWorld
mkdir -p app/code/local/MyCompanyName/HelloWorld/Block
mkdir -p app/code/local/MyCompanyName/HelloWorld/controllers
mkdir -p app/code/local/MyCompanyName/HelloWorld/Model
mkdir -p app/code/local/MyCompanyName/HelloWorld/Helper
mkdir -p app/code/local/MyCompanyName/HelloWorld/etc
mkdir -p app/code/local/MyCompanyName/HelloWorld/sql
Ve bir yapılandırma dosyası eklemek
touch app/code/local/MyCompanyName/HelloWorld/etc/config.xml
ve yapılandırma dosyası içinde, aslında bir "boş" yapılandırma olduğu, aşağıdaki ekleyin.
<?xml version="1.0"?>
<config>
<modules>
<mycompanyname_helloworld>
<version>
0.1.0
</version>
</mycompanyname_helloworld>
</modules>
</config>
Şeyi basitleştirerek, bu yapılandırma dosyası çalıştırmak istediğiniz kod Magento anlatsın.
Setting up the router
Sonra, kurulum için modülün yönlendiriciler gerekir. Bu sistem bizim formun herhangi URL'leri işleme konum olduğunu bildireceğiz
http://example.com/magento/index.php/helloworld
Yani, yapılandırma dosyasında, aşağıdaki bölümü ekleyin.
<config>
<!-- ... -->
<frontend>
<routers>
<!-- the <helloworld> tagname appears to be arbitrary, but by
convention is should match the frontName tag below-->
<helloworld>
<use>standard</use>
<args>
<module>MyCompanyName_HelloWorld</module>
<frontName>helloworld</frontName>
</args>
</helloworld>
</routers>
</frontend>
<!-- ... -->
</config>
Burada ne söylüyorsun "helloWorld frontName ile herhangi bir URL ...
http://example.com/magento/index.php/helloworld
frontName denetleyici MyCompanyName_HelloWorld "kullanmalısınız.
Eğer yukarıdaki helloworld sayfasını yüklediğinizde Yani, bir yerde yukarıdaki yapılandırma ile, bir 404 sayfası alırsınız. Bizim denetleyicisi için bir dosya oluşturduk değil çünkü bu. Şimdi bunu yapalım.
touch app/code/local/MyCompanyName/HelloWorld/controllers/IndexController.php
Şimdi sayfa yüklenirken deneyin. İlerleme! Bunun yerine bir 404, bir PHP / Magento istisna alırsınız
Controller file was loaded but class does not exist
Yani, biz sadece oluşturduğunuz dosyayı açın ve aşağıdaki kodu yapıştırın. Sınıfın adı, yönlendirici sağlanan adına göre olması gerekir.
class MyCompanyName_HelloWorld_IndexController extends Mage_Core_Controller_Front_Action{
public function indexAction(){
echo "We're echoing just to show that this is what's called, normally you'd have some kind of redirect going on here";
}
}
Biz sadece kurulum modülü / frontName denetleyicisi ettik nedir. Bu MVC denetleyicisi değil. Eğer MyCompanyName_HelloWorld_IndexController bir fooAction yöntem olsa bile, aşağıdaki URL'yi deneyin ve bir 404 alırsınız
http://example.com/magento/index.php/helloworld/foo
Yani, kurulum MVC denetleyicisi, [) (0] yeni bir dosya oluşturun ve (Evet, bu da Evet, bu kafa karıştırıcı. Bunun bir ön Eylem olmasa bile, Mage_Core_Controller_Front_Action denetleyici uzanır aşağıdaki kodu girin, ama ben { } o) işlerin nasıl
touch app/code/local/MyCompanyName/HelloWorld/controllers/FooController.php
class MyCompanyName_HelloWorld_FooController extends Mage_Core_Controller_Front_Action{
public function indexAction(){
echo 'Foo Index Action';
}
public function addAction(){
echo 'Foo add Action';
}
public function deleteAction(){
echo 'Foo delete Action';
}
}
Şimdi aşağıdaki URL'leri vurmak mümkün olacak ve yankı tabloların sonuçlarını görmelisiniz
http://example.com/magento/index.php/helloworld/foo
http://example.com/magento/index.php/helloworld/foo/add
http://example.com/magento/index.php/helloworld/foo/delete
Yani, size Magento bir denetleyiciye gönderir nasıl temel bir fikir vermelidir. Buradan ben modelleri ve şablon / düzeni sistem nasıl kullanılması gerektiğini görmek için mevcut Magento kontrolör sınıflarında alay tavsiye ediyorum.