Files creation
Go on file folder “app/code”, you will see a “Magento” folder. You mustn’t modifiy the content inside. All the magento core module are here, and only Magento can update its. In this “app/code” folder, let’s create a new “namespace” (I will name it “Maxime” on this example).
On this “namespace”, we will add our “modules”. The goal of this lesson is to create a new one. Create a “Helloworld” folder inside the “Maxime” folder.
In order to give Magento all our module instruction, we need to communicate it some informations. Create an “etc” folder, and create the following file :
app/code/Maxime/Helloworld/etc/module.xml
Put this XML inside :
<?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="Maxime_Helloworld" setup_version="1.0.0.0" active="true" /> </config>
The “module” tag contains :
– The module name (name)
– The module version (setup_version)
Module registration
Create a “registration.php” file on the root folder of your module with this content :
<?php /** * Copyright © 2015 Magento. All rights reserved. * See COPYING.txt for license details. */ \Magento\Framework\Component\ComponentRegistrar::register( \Magento\Framework\Component\ComponentRegistrar::MODULE, 'Maxime_Helloworld', __DIR__ );
Module Activation
If you open the app/etc/config.php
file, you will not see your module :
<?php return array ( 'modules' => array ( 'Magento_Store' => 1, 'Magento_AdvancedPricingImportExport' => 1, 'Magento_Directory' => 1, 'Magento_Theme' => 1, 'Magento_Backend' => 1, 'Magento_Backup' => 1, 'Magento_Eav' => 1, 'Magento_Customer' => 1, 'Magento_BundleImportExport' => 1, 'Magento_CacheInvalidate' => 1, 'Magento_Indexer' => 1, 'Magento_Cms' => 1, 'Magento_CatalogImportExport' => 1, 'Magento_Catalog' => 1, 'Magento_Rule' => 1, 'Magento_Search' => 1, 'Magento_CatalogUrlRewrite' => 1, 'Magento_Widget' => 1, 'Magento_Payment' => 1, 'Magento_CheckoutAgreements' => 1, 'Magento_Quote' => 1, 'Magento_CmsUrlRewrite' => 1, 'Magento_Config' => 1, 'Magento_ConfigurableImportExport' => 1, 'Magento_Msrp' => 1, 'Magento_Contact' => 1, 'Magento_Cookie' => 1, 'Magento_Cron' => 1, 'Magento_CurrencySymbol' => 1, 'Magento_Bundle' => 1, 'Magento_CustomerImportExport' => 1, 'Magento_DesignEditor' => 1, 'Magento_Developer' => 1, 'Magento_Dhl' => 1, 'Magento_Authorization' => 1, 'Magento_Downloadable' => 1, 'Magento_SalesSequence' => 1, 'Magento_Email' => 1, 'Magento_Fedex' => 1, 'Magento_Sales' => 1, 'Magento_CatalogInventory' => 1, 'Magento_GoogleAnalytics' => 1, 'Magento_GoogleOptimizer' => 1, 'Magento_GroupedImportExport' => 1, 'Magento_GroupedProduct' => 1, 'Magento_ImportExport' => 1, 'Magento_Checkout' => 1, 'Magento_User' => 1, 'Magento_LayeredNavigation' => 1, 'Magento_Log' => 1, 'Magento_MediaStorage' => 1, 'Magento_ConfigurableProduct' => 1, 'Magento_Multishipping' => 1, 'Magento_Newsletter' => 1, 'Magento_OfflinePayments' => 1, 'Magento_SalesRule' => 1, 'Magento_PageCache' => 1, 'Magento_Authorizenet' => 1, 'Magento_Paypal' => 1, 'Magento_Persistent' => 1, 'Magento_ProductAlert' => 1, 'Magento_Braintree' => 1, 'Magento_Reports' => 1, 'Magento_RequireJs' => 1, 'Magento_Review' => 1, 'Magento_Rss' => 1, 'Magento_CatalogRule' => 1, 'Magento_GoogleAdwords' => 1, 'Magento_OfflineShipping' => 1, 'Magento_GiftMessage' => 1, 'Magento_SampleData' => 1, 'Magento_CatalogSearch' => 1, 'Magento_SendFriend' => 1, 'Magento_Shipping' => 1, 'Magento_Sitemap' => 1, 'Magento_AdminNotification' => 1, 'Magento_Tax' => 1, 'Magento_TaxImportExport' => 1, 'Magento_Captcha' => 1, 'Magento_Translation' => 1, 'Magento_Ui' => 1, 'Magento_Ups' => 1, 'Magento_UrlRewrite' => 1, 'Magento_Integration' => 1, 'Magento_Usps' => 1, 'Magento_Variable' => 1, 'Magento_Version' => 1, 'Magento_Webapi' => 1, 'Magento_Weee' => 1, 'Magento_CatalogWidget' => 1, 'Magento_Wishlist' => 1, ), );
To finish, launch this command on your Magento root folder :
./bin/magento setup:upgrade
Your module is now visible on the config.php file
Else, you will have this error :
Please upgrade your database: Run "bin/magento setup:upgrade" from the Magento root directory.
Your first module is declared and enabled. Next lesson, we will create a controller in order to call our module by a store URL.