Magento 2'de Özel Modül Nasıl Oluşturulur
Yayınlanan: 2018-03-19Magento Modülü nedir?
Bildiğiniz gibi modül, belirli bir iş özelliğiyle ilgili blokları , denetleyicileri , modelleri , yardımcıları vb. içeren bir dizindir.
Magento'nun optimal modülerlik taahhüdüne uygun olarak, bir modül bir özelliği kapsar ve diğer modüllere minimum bağımlılığa sahiptir.
Modüller, destekleyici mantıkla iş özellikleri sağlarken, temalar kullanıcı deneyimini ve vitrin görünümünü güçlü bir şekilde etkiler.
Modül amacı
Her modülün amacı, yeni işlevler uygulayarak veya diğer modüllerin işlevlerini genişleterek belirli ürün özellikleri sağlamaktır. Her modül bağımsız olarak çalışacak şekilde tasarlanmıştır, bu nedenle belirli bir modülün dahil edilmesi veya hariç tutulması, diğer modüllerin işlevselliğini tipik olarak etkilemez.
Magento 2'de modüller, bir Magento kurulumunun uygulama/kod dizininde şu formatta canlı olacaktır: app/code/<Vendor>/<ModuleName>. Şimdi Magento 2 üzerinde çalışan basit bir modül oluşturmak için bu adımları takip edeceğiz.
Bir Magento 2 modülü oluşturun
- Modül klasörünü oluşturun.
- etc/module.xml dosyasını oluşturun.
- register.php dosyasını oluşturun.
- Yeni modülü kurmak için bin/magento setup:upgrade betiğini çalıştırın.
- Modülün çalışıp çalışmadığını kontrol edin.
Bu adımların her birini ayrıntılı olarak inceleyelim.
Adım 1: Modül klasörünü oluşturun
- Magento'da modüller için iki olası konum vardır: uygulama/kod klasörü ve satıcı klasörü
Magento 2'nin nasıl kurulduğuna bağlı olarak, çekirdek modüller ya satıcı/magento/magento-* klasörlerinde (besteci kurulumu için) ya da app/code/Magento/ klasöründe (github klonlamak için) bulunabilir.
- Yeni modülünüz için bu konumlardan hangisini seçmelisiniz?
Belirli bir proje için bir modül oluşturursanız, uygulama/kod klasörünü seçmek ve projenin deposuna bağlanmak en iyisidir.
Yeniden kullanılacak bir uzantı oluşturursanız, bunu oluşturmak için besteci kullanmak ve modülünüzü satıcı/<YOUR_VENDOR>/module-something klasörüne koymak daha iyidir.
Magento 2'deki her modül adı iki bölümden oluşur - satıcı ve modülün kendisi, bu nedenle satıcı ve modül adlarını tanımlamanız gerekir. Bu örnek için satıcıya “Learning” ve modüle “FirstUnit” adını verelim.
Şimdi app/code/Learning klasörünü oluşturalım ve bu klasörün içine başka bir klasör yerleştirelim: FirstUnit. Komut satırını kullanıyorsanız, kod şöyle olacaktır:
- kök klasöre cd
- mkdir uygulaması/kodu/Öğrenme
- mkdirapp/kod/Öğrenme/İlk Birim
Kurulumunuzda dosya ve klasör oluşturma izniniz olduğundan emin olun.
2. Adım: etc/module.xml dosyasını oluşturun
Bu dosya, modülün var olması için gereklidir ve aşağıdaki bilgileri içerir:
- Modül Adı
- Modül versiyonu
- bağımlılıklar
Modül adı, az önce oluşturduğumuz klasörler tarafından tanımlanır, çünkü Magento 2'de sınıf adları klasör yapısını takip etmelidir. Learning/FirstUnit klasörlerini oluşturduğumuz için, modül adımız Learning_FirstUnit olacaktır ve bu modüle ait tüm sınıflar Learning\FirstUnit ile başlayacaktır – örneğin: Learning\FirstUnit\Observer\Test.
Modül sürümü, veritabanı şemasının ve verilerin mevcut sürümünü belirtir ve yükseltmede kullanılır. Örneğin, modülünüzde bir tablonun şemasını değiştirmeye karar verdiğinizi varsayalım. Kodun dağıtıldığı tüm durumlarda bu değişikliğin gerçekleşeceğinden nasıl emin olabilirsiniz? Veritabanını doğrudan SQL sorgularıyla değiştirmek işe yaramaz. Bunun yerine, Magento 2, her modülde (isteğe bağlı olarak) komut dosyaları kurar ve yükseltir. Bu komut dosyaları, veritabanı şemasını veya verilerini değiştirmek için komutlar içerir. Bir komut dosyasının yürütülüp yürütülmediğini izlemek için Magento 2, modül sürümlerini kullanır. Her yeni veritabanı değişikliği uyguladığınızda, bir modülün yeni bir sürümünü uygular ve ilgili module.xml'i değiştirirsiniz. Magento, geçerli modülün sürümünü bir veritabanına kaydeder ve veritabanı değeri ile module.xml'deki değer eşleşmezse, yükseltme kodunu yürütür.
bağımlılıklar Bir modül diğerine bağlıysa, module.xml dosyası, geçerli modülün bağlı olduğu modüllerin listesini tanımlayan özel bir bildirime sahip olacaktır. Bu örnek için modülümüzü Magento_Catalog'a bağımlı hale getireceğiz.
Aşağıdaki komut satırı kodunu kullanarak app/code/Learning/FirstUnit/etc klasörünü oluşturun:
mkdir uygulaması/kodu/Öğrenme/İlkBirim/vb
Ardından, aşağıdaki içeriğe sahip bir XML dosyası oluşturun:
<?xml version="1.0"?> <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd"> <module name="Learning_FirstUnit" setup_version="0.0.1"> <sıra> <modül adı="Magento_Catalog" /> </sıra> </modül> </config>
Belirttiğimiz XML dosyasında şunu unutmayın:
- Modül adı: Learning_FirstUnit (oluşturduğumuz klasörlere göre)
- Sürüm: 0.0.1 (modülümüzün ilk sürümü)
- Bağımlılık: Magento_Catalog. Birden fazla bağımlılığımız olabilir. Bu durumda <module name=”..” /> düğümlerini sıra düğümünün altına koyardık.
3. Adım: record.php dosyasını oluşturun
Her modül, Magento'ya modülü nasıl bulacağını söyleyen bu dosyaya sahip olmalıdır. Örneğimize devam ederek, app/code/Learning/FirstUnit/registration.php dosyasını oluşturun. Ardından aşağıdaki içeriği içine koyun:
<?php \Magento\Framework\Component\ComponentRegistrar::register(\Magento\Framework\Component\ComponentRegistrar::MODULE, 'Learning_FirstUnit', __DIR__);
Register.php , tüm modüller için aynı modeli izleyen standartlaştırılmış bir dosyadır.
Değişen tek şey, bizim durumumuzda Learning_FirstUnit
olan modül adıdır.
Adım 4: “setup:upgrade” komutunu çalıştırın
Bu komutu çalıştırmak, yeni modülünüzü aktif hale getirerek Magento'ya varlığını bildirir.
php bin/magento kurulumu:yükseltme
Bir satırı Learning_FirstUnit
olması gereken büyük miktarda çıktıyı yansıtmalıdır. Bu kod satırının orada olduğunu doğrulayın.
Adım 5: Yeni modülün etkin olup olmadığını kontrol edin
Şimdiye kadar modülümüze herhangi bir yararlı kod eklemedik – hala boş (ve dolayısıyla görünmez). Tanındığını doğrulamak için app/etc/config.php dosyasını kontrol edin. Aktif olan otomatik olarak oluşturulmuş modüllerin bir listesine sahiptir.
Bu listeyi asla manuel olarak değiştirmeyin!
kedi uygulaması/etc/env.php | grep Learning_FirstUnit
Bu adımları uygulayarak Magento 2'de başarıyla yeni bir modül oluşturabilirsiniz.
Devamını oku:
Magento 2'de Statik İçerik Nasıl Dağıtılır