Pembangunan Modul Tersuai Magento ialah bahagian teras mana-mana pembangunan Magento atau projek Magento kerana pada mana-mana peringkat anda mungkin mahu menyepadukan fungsi/modul anda sendiri ke dalam projek Magento sedia ada.
Dalam siri ini, saya akan membincangkan butiran pembangunan modul tersuai Magento.
Jika anda ingin membangunkan Magento dengan lebih lanjut, lihat pelbagai sambungan Magento yang berguna di Pasaran Envato.
Dalam siri ini, saya merujuk kepada Magento Community Edition 1.7, walaupun versi tersuai Struktur modul adalah sama dalam semua versi Magento. Sebelum memulakan pembangunan modul sebenar, mari kita cepat memahami struktur asas Magento.
Setiap kali anda memasang Magento baharu, anda akan melihat struktur direktori Magento berikut:
Seperti mana-mana rangka kerja utama lain seperti Joomla, CakePHP, CodeIgniter, dll., Magento juga mengikuti seni bina berasaskan MVC, walaupun ini berbeza sedikit daripada seni bina PHP MVC teras. Di sini saya akan menerangkan perbezaan dalam seni bina Magento dengan membandingkannya dengan seni bina PHP MVC yang mudah.
Dalam corak MVC biasa, aliran aplikasi kelihatan seperti ini:
index.php
- dan keseluruhan mekanisme penghalaan aplikasi ditentukan dari sini. index.php
- 整个应用程序路由机制从这里确定。
Magento 的 MVC 架构在 MVC 模式的基础上添加了几层,但应用程序的基本控制流程如下:
index.php
- 整个应用程序将从这里初始化。最初,这可能很难理解,因为它包含一些额外的层。为了更熟悉控制流程,让我们开发一个自定义的“Hello World”模块。
Magento 包含三种类型的代码池,Magento 的所有自定义模块和核心模块都驻留在其中。
因此,我们有两种池选择:社区池或本地池。由于我们正在开发自己的项目,因此我们将使用本地池,尽管使用社区池也没有限制。
结构
Magento 模块由以下组件组成:
我们需要为我们的模块命名。一般来说,Magento 模块名称由两部分组成:<namespace></namespace>
作为作者或公司名称,并选择 <module></module>
Berdasarkan mekanisme penghalaan ini dan corak URL yang diminta, apl akan memanggil pengawal yang sesuai.
index.php
- dan keseluruhan aplikasi akan dimulakan dari sini.
🎜Pengawal yang sesuai akan dipanggil berdasarkan URL yang diminta.
🎜Pengawal menentukan halaman dan memuatkan fail susun atur untuk halaman tersebut.
🎜Fail susun atur memberitahu pengawal yang menyekat fail untuk digunakan.
🎜Sekat fail mengumpul data daripada fail model dan pembantu dan hantarkannya ke fail templat.
🎜Fail templat menerima data dan memaparkan html.
🎜Pada mulanya, ini mungkin sukar difahami kerana ia mengandungi beberapa lapisan tambahan. Untuk lebih mengenali aliran kawalan, mari bangunkan modul "Hello World" tersuai. 🎜
🎜Sebelum anda mula menggunakan modul🎜
<namespace></namespace>
sebagai nama pengarang atau syarikat dan <module></module>
sebagai nama sebenar Nama modul. 🎜Berikutan konvensyen penamaan ini, saya memberi nama modul kami Chiragdodia_Mymodule. Kami akan merujuk kepada nama ini sepanjang siri ini.
Mari buat direktori berdasarkan struktur di atas. Pergi ke direktori pemasangan Magento dan navigasi ke app/code/local
app/code/local
并创建如下所示的目录。
下一步,我们将通过在 app/etc/modules
目录中创建配置文件 Chiragdodia_Mymodule.xml
来配置并激活我们的模块。 该目录包含所有模块的配置文件。
<?xml version="1.0"?> <config> <modules> <Chiragdodia_Mymodule> <active>true</active> <codePool>local</codePool> </Chiragdodia_Mymodule> </modules> </config>
该文件将告诉 Magento 我们模块的位置。在 active
标签中,我们指定了 true
来启用我们的模块。如果到目前为止一切都正确,那么您将在 Magento 管理面板 > 系统 > 配置 > 高级 > 高级 > 禁用模块输出列表中找到您的模块。从这里您可以启用和禁用您的模块。
接下来我们将创建模块配置文件。该文件将告诉 Magento 有关我们模块的所有信息。这包括我们的模块包含多少个文件、什么类型的文件(模型、帮助程序、数据库类)等等。
转到 app/code/local/Chiragdodia/Mymodule/etc
并创建一个 config.xml
< /i>将包含以下内容的文件
<?xml version="1.0"?> <config> <modules> <Chiragdodia_Mymodule> <version>0.1.0</version> <!-- Version number of your module --> </Chiragdodia_Mymodule> </modules> <frontend> <routers> <mymodule> <use>standard</use> <args> <module>Chiragdodia_Mymodule</module> <frontName>mymodule</frontName> </args> </mymodule> </routers> </frontend> </config>
让我们逐行了解每个标签。这里,第一个标签是 <module>
,它包含我们模块的名称和版本。在更新模块时版本号非常重要。
<frontend>
标签将告诉 Magento 有关调度的控制器的信息。在 <frontend>
标记内,我们定义了 <routers>
,它告诉 Magento 如何通过路由机制访问我们的控制器。
在 <mymodule>
标签中,我们在 <module>
< 中定义了模块名称i><frontName>
中的标签和前端名称。通过使用前端名称,我们可以在前端访问我们的模块,例如 yoursitename.com/index.php/mymodule/index
。
通过调用 yoursitename.com/index.php/mymodule
或 yoursitename.com/index.php/mymodule/index
Magento 将查找模块控制器的索引操作文件。因此,我们需要创建控制器文件。
转到 app/code/local/Chiragdodia/Mymodule/controllers
并创建文件 IndexController.php
包含以下内容。
请注意,在 Magento 中,每个文件的名称和类名称都区分大小写。在创建文件和类时,请务必小心命名您的作品,这一点非常重要。
<?php class Chiragdodia_Mymodule_IndexController extends Mage_Core_Controller_Front_Action { public function indexAction() { echo "Hello tuts+ World"; } }
现在打开 URL yoursite.com/index.php/mymodule/index
它将打印 “Hello tuts+ World”。 太棒了 - 我们终于完成了第一个 hello world 模块。
这里我们扩展了类 Mage_Core_Controller_Front_Action
,其中包含在URL路由中使用的所有方法。 Magento 类名反映了类文件的位置。因此,类 Mage_Core_Controller_Front_Action
位于位置 Mage > Core > Controller > Front > Action.php
查看我们的控制器的类名称,即 Chiragdodia_Mymodule_IndexController
。 Magento 控制器的命名方式应反映 (<module>tag)_(Action Controllername)(keyword Controller).
Chiragdodia_Mymodule
(我们已在 config.xml
中定义了此标签) b>
控制器名称
= 索引Controller
关键字根据此模式,我们的控制器的名称是 Chiragdodia_Mymodule_IndexController
现在查看遵循以下路由模式的 URL 模式yoursite.com/index.php/frontendname/actionControllername/actionmethod
Chiragdodia_Mymodule.xml</code > untuk mengkonfigurasi dan mengaktifkan modul kami. 🎜Direktori ini mengandungi fail konfigurasi untuk semua modul. 🎜
<div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:php;toolbar:false;'><?php
class Chiragdodia_Mymodule_IndexController extends Mage_Core_Controller_Front_Action
{
public function indexAction()
{
echo "Hello tuts+ World";
}
public function testAction()
{
echo "test action";
}
}
</pre><div class="contentsignin">Salin selepas log masuk</div></div><div class="contentsignin">Salin selepas log masuk</div></div>
🎜Fail ini akan memberitahu Magento lokasi modul kami. Dalam teg <code class="inline">active
, kami menentukan true
untuk mendayakan modul kami. Jika semuanya betul setakat ini, anda akan menemui modul anda dalam senarai 🎜🎜Magento Admin Panel > System > Configuration > Advanced > Advanced > Disable Module Output. Dari sini anda boleh mendayakan dan melumpuhkan modul anda. 🎜
app/code/local/Chiragdodia/Mymodule/etc
🎜 🎜 dan buat config.xml
🎜 🎜Fail akan mengandungi kandungan berikut🎜
rrreee
🎜Mari kita lihat setiap teg baris demi baris. Di sini, teg pertama ialah <module>
🎜 🎜 yang mengandungi nama dan versi modul kami. Nombor versi adalah sangat penting semasa mengemas kini modul. 🎜
Teg 🎜<frontend>
akan memberitahu maklumat Magento tentang pengawal yang dijadualkan. Di dalam teg <frontend>
, kami mentakrifkan <routers>
yang memberitahu Magento cara mengakses pengawal kami melalui mekanisme penghalaan . 🎜
🎜Dalam teg <mymodule>
, kami takrifkan dalam <module>
🎜 🎜< Teg dan nama frontend dalam modul namei><frontName>
. Kami boleh mengakses modul kami pada bahagian hadapan dengan menggunakan nama bahagian hadapan, contohnya yoursitename.com/index.php/mymodule/index
. 🎜
🎜Dengan memanggil yoursitename.com/index.php/mymodule
atau yoursitename.com/index.php/mymodule/index
Magento akan Cari fail tindakan indeks untuk pengawal modul. Oleh itu, kita perlu mencipta fail pengawal. 🎜
🎜Pergi ke app/code/local/Chiragdodia/Mymodule/controllers
🎜 🎜 dan buat fail IndexController.php
< /i> Mengandungi kandungan berikut. 🎜
🎜Sila ambil perhatian bahawa dalam Magento, setiap nama fail dan nama kelas adalah sensitif huruf besar-besaran. Apabila membuat fail dan kelas, adalah penting untuk berhati-hati menamakan ciptaan anda. 🎜
rrreee
🎜Sekarang buka URL yoursite.com/index.php/mymodule/index
🎜 🎜Ia akan mencetak 🎜"Hello tuts+ World". 🎜Hebat - akhirnya kami menamatkan modul hello world pertama kami. 🎜
🎜Penjadualan Pengawal🎜
🎜Di sini kami melanjutkan kelas 🎜 🎜Mage_Core_Controller_Front_Action
🎜 🎜, yang mengandungi semua kaedah yang digunakan dalam penghalaan URL. Nama kelas Magento mencerminkan lokasi fail kelas. Oleh itu, kelas Mage_Core_Controller_Front_Action
🎜 🎜 terletak di lokasi Mage > Core > Controller > Front > Action.php🎜
🎜Lihat nama kelas pengawal kami, iaitu Chiragdodia_Mymodule_IndexController
. Pengawal Magento hendaklah dinamakan dalam cara yang mencerminkan (<module>tag)_(Action Controllername)(keyword Controller).
🎜
Chiragdodia_Mymodule
(kami telah mentakrifkan teg ini dalam config.xml
) 🎜< i>Nama Pengawal
= indeksPengawal
Chiragdodia_Mymodule_IndexController
🎜
🎜🎜🎜Sekarang lihat corak URL yang mengikuti corak penghalaan yoursite.com/index.php/frontendname/actionControllername/actionmethod
🎜
根据此网址模式,我们模块的网址为 yoursite.com/index.php/mymodule/index/index
。您还可以使用 yoursite.com/index.php/mymodule
访问它,因为只要您未指定 actionController
或 actionmethod
名称,Magento 就会加载默认情况下的索引控制器和索引操作。
现在让我们再创建一个操作:testAction
。
<?php class Chiragdodia_Mymodule_IndexController extends Mage_Core_Controller_Front_Action { public function indexAction() { echo "Hello tuts+ World"; } public function testAction() { echo "test action"; } }
我们可以使用 URL yoursite.com/index.php/mymodule/index/test
访问 testAction。 如前所述
这就是控制器在 Magento 中的工作原理。
一开始,一次理解所有内容可能很困难,因此我已将所有源代码包含到此模块中,以便您可以在将其用作指南的同时查看它并实现自己的工作。
在下一部分中,我们将通过创建布局和块文件来填充模块中的一些布局。我们将了解布局文件在 Magento 中如何工作以及块在 Magento 上下文中扮演什么角色。
在此之前,请创建您自己的模块,并让我知道任何给您带来麻烦的事情。
Atas ialah kandungan terperinci Membangunkan modul tersuai untuk Magento. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!