{"id":5474,"date":"2022-10-21T12:01:07","date_gmt":"2022-10-21T09:01:07","guid":{"rendered":"https:\/\/www.fixit.gr\/?p=5474"},"modified":"2022-10-19T01:02:45","modified_gmt":"2022-10-18T22:02:45","slug":"dimioyrgia-magento-modules","status":"publish","type":"post","link":"https:\/\/www.fixit.gr\/en\/dimioyrgia-magento-modules","title":{"rendered":"Creating Magento Modules"},"content":{"rendered":"<h3><b>How is a Magento Extension created?;<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">An important factor in the Magento platform, crucial for its operation, are extensions or modules. A previous article mentioned the importance and what one should know about extensions. In the article \u201c<\/span><a href=\"https:\/\/www.fixit.gr\/en\/poso-simantika-einai-ta-magento-modules\/\"><span style=\"font-weight: 400;\">How important are Magento Modules?;<\/span><\/a><span style=\"font-weight: 400;\">\u201d detailed information can be found. In reality, the cost of extensions is crucial for the development of a Magento store and some people turn to creating personalized extensions. But how easy is this and what are the benefits and pitfalls that may be hidden?;<\/span><\/p>\n<h3><b>What is a Magento extension?;<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">A Magento extension is a package of code that is responsible for specific functionality in Magento. Technically, it is a directory containing PHP and XML files in blocks, controllers, helpers, and models that are related to a specific business feature. While both a module and an extension are similar in theory, the term module often refers to core code, i.e. code that is part of Magento itself. In contrast, an extension refers to a component that can extend and customize Magento functionality. Extensions can be distributed and installed across multiple stores to help achieve specific functionality.<\/span><\/p>\n<h3><b>Magento scalability.<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">Over the years, the main focus behind Magento&#039;s development has been to maximize its extensibility. At the core of Magento&#039;s development model is the practice of extending the core code. This strategy helps maintain the Magento core code and allows merchants and developers to customize Magento to their requirements. Magento&#039;s code follows most of the PSR2 Coding Standards for PHP.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">In addition, Magento is also based on many well-known architectural structures and incorporates recognized and tested software structures called design patterns. Of these, MVC (model-view-controller) is the one most relevant to developing an extension. Using these structures and design patterns helps PHP developers navigate development issues that could arise while developing extensions.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">By placing code in modules, an extension is self-contained, making it possible to modify or replace it without negatively affecting other areas of the code. The purpose of any extension is to provide specific features by extending existing functionality or implementing new ones. Finally, designing each extension to work independently mitigates the risk of one extension conflicting with another and allows them to work in parallel.<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-5476\" src=\"https:\/\/www.fixit.gr\/wp-content\/uploads\/2022\/10\/Magento-Extensions.jpg\" alt=\"\" width=\"960\" height=\"600\" srcset=\"https:\/\/www.fixit.gr\/wp-content\/uploads\/2022\/10\/Magento-Extensions.jpg 960w, https:\/\/www.fixit.gr\/wp-content\/uploads\/2022\/10\/Magento-Extensions-760x475.jpg 760w, https:\/\/www.fixit.gr\/wp-content\/uploads\/2022\/10\/Magento-Extensions-64x40.jpg 64w, https:\/\/www.fixit.gr\/wp-content\/uploads\/2022\/10\/Magento-Extensions-300x188.jpg 300w, https:\/\/www.fixit.gr\/wp-content\/uploads\/2022\/10\/Magento-Extensions-768x480.jpg 768w, https:\/\/www.fixit.gr\/wp-content\/uploads\/2022\/10\/Magento-Extensions-18x12.jpg 18w\" sizes=\"auto, (max-width: 960px) 100vw, 960px\" \/><\/p>\n<p><span style=\"font-weight: 400;\">Magento extensions are crucial to its operation.<\/span><\/p>\n<h3><b>Types of Magento extensions.<\/b><\/h3>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Magento has an official marketplace called Magento Marketplace, where users of the platform can purchase and download third-party extensions and themes to extend their online stores. Magento has a robust Extension Quality Program that combines Magento expertise, development guidelines, and verification tools to ensure that all extensions in its marketplace meet coding standards and follow best practices.\u00a0<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Out-of-the-box extensions. In addition to the extensions in its marketplace, Magento comes with additional third-party extensions. These extensions are called \u201cVendor Pack Extensions\u201d. They have been thoroughly tested before being included in any supported version of Magento for their quality. Some of the \u201cVendor Pack Extensions\u201d that will be packaged with the latest Magento releases are Amazon Pay, dotdigital, Klarna, and Vertex.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Custom extensions. Many store owners often overuse third-party extensions, as they are cheap and easily accessible. However, overusing such extensions, and especially using poorly coded extensions, can hinder a store&#039;s performance. It is highly recommended to use custom extensions to avoid such an outcome. In cases where custom creation is not feasible, out-of-the-box third-party extensions should be tested before deploying to live stores and modified to use only the required functionality.\u00a0<\/span><\/li>\n<\/ul>\n<h3><b>How to create a custom extension in Magento 2.<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">Magento 2 extension development is big news in the market. Already Magneto 2 has helped thousands of e-commerce stores by providing superior experiences to their customers. It is more mobile-friendly than Magento 1. Magento 2 has been developed to support PWA (Progressive Web Applications). It also acts as a highly developed platform that provides: powerful marketing, smooth catalog management tools, visual merchandising, stage and preview updates, and search engine optimization. Recently, Magento 2 extension development has been carried out.<\/span><\/p>\n<ol>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">The latest Magento 2 version must be installed on the system.\u00a0<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Magento cache should be disabled.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Developer mode selection: Allows checking all errors.<\/span><\/li>\n<\/ol>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-5475\" src=\"https:\/\/www.fixit.gr\/wp-content\/uploads\/2022\/10\/top-10-best-magento-2-advance-extensions.jpg\" alt=\"\" width=\"768\" height=\"400\" srcset=\"https:\/\/www.fixit.gr\/wp-content\/uploads\/2022\/10\/top-10-best-magento-2-advance-extensions.jpg 768w, https:\/\/www.fixit.gr\/wp-content\/uploads\/2022\/10\/top-10-best-magento-2-advance-extensions-760x396.jpg 760w, https:\/\/www.fixit.gr\/wp-content\/uploads\/2022\/10\/top-10-best-magento-2-advance-extensions-64x33.jpg 64w, https:\/\/www.fixit.gr\/wp-content\/uploads\/2022\/10\/top-10-best-magento-2-advance-extensions-300x156.jpg 300w, https:\/\/www.fixit.gr\/wp-content\/uploads\/2022\/10\/top-10-best-magento-2-advance-extensions-18x9.jpg 18w\" sizes=\"auto, (max-width: 768px) 100vw, 768px\" \/><\/p>\n<p><span style=\"font-weight: 400;\">The creation of Magento Modules opens up new avenues for development.<\/span><\/p>\n<h3><b>Steps for developing Magento Module.<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">Step 1: Create extension files and folders for installation and registration. Create the folder and extension:\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u00a0\u00a0app\/code\/Fixit\/HelloWorld<\/span><span style=\"font-weight: 400;\"><br \/>\n<\/span><\/p>\n<p><span style=\"font-weight: 400;\">In case the code folder does not exist, it can be created manually. Here, the extension name is Helloworld and the extension namespace is the Fixit folder.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Now with another code, a module.XML file needs to be created in the \u201cHelloworld\u201d folder. To register this module, a register.php file needs to be created in the same helloworld folder. Go to Magento 2 root and then run the upgrade command.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u00a0\u00a0app\/code\/Fixit\/HelloWorld\/etc\/module.xml<\/span><span style=\"font-weight: 400;\"><br \/>\n<\/span><\/p>\n<p><span style=\"font-weight: 400;\">And the content:<\/span><\/p>\n<p><span style=\"font-weight: 400;\">&lt;?xml version=&#8221;1.0&#8243;?&gt;<\/span><span style=\"font-weight: 400;\"><br \/>\n<\/span><span style=\"font-weight: 400;\">&lt;config xmlns:xsi=&#8221;http:\/\/www.w3.org\/2001\/XMLSchema-instance&#8221; xsi:noNamespaceSchemaLocation=&#8221;urn:magento:framework:Module\/etc\/module.xsd&#8221;&gt;<\/span><span style=\"font-weight: 400;\"><br \/>\n<\/span><span style=\"font-weight: 400;\">\u00a0 \u00a0 &lt;module name=&#8221;Fixit_HelloWorld&#8221; setup_version=&#8221;1.0.0&#8243;&gt;<\/span><span style=\"font-weight: 400;\"><br \/>\n<\/span><span style=\"font-weight: 400;\">\u00a0 \u00a0 &lt;\/module&gt;<\/span><span style=\"font-weight: 400;\"><br \/>\n<\/span><span style=\"font-weight: 400;\">&lt;\/config&gt;<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Step 2: Create etc\/registration.php file<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u00a0\u00a0app\/code\/Fixit\/HelloWorld\/registration.php<\/span><span style=\"font-weight: 400;\"><br \/>\n<\/span><\/p>\n<p><span style=\"font-weight: 400;\">And the content:<\/span><\/p>\n<p><span style=\"font-weight: 400;\">&lt;?php<\/span><span style=\"font-weight: 400;\"><br \/>\n<\/span><span style=\"font-weight: 400;\">\\Magento\\Framework\\Component\\ComponentRegistrar::register(<\/span><span style=\"font-weight: 400;\"><br \/>\n<\/span> <span style=\"font-weight: 400;\">\\Magento\\Framework\\Component\\ComponentRegistrar::MODULE,<\/span><span style=\"font-weight: 400;\"><br \/>\n<\/span> <span style=\"font-weight: 400;\">\u2018&#039;Fixit_HelloWorld&#039;,<\/span><span style=\"font-weight: 400;\"><br \/>\n<\/span> <span style=\"font-weight: 400;\">__DIR__<\/span><span style=\"font-weight: 400;\"><br \/>\n<\/span><span style=\"font-weight: 400;\">);<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Step 3: Turn on the unit:<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u00a0\u00a0php bin\/magento module:enable Fixit_HelloWorld<\/span><span style=\"font-weight: 400;\"><br \/>\n<\/span><\/p>\n<p><span style=\"font-weight: 400;\">The module should be available now. After this step, when the website is opened in the browser, an error will be received saying \u201cUpgrade your database\u201d:<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u00a0\u00a0php bin\/magento setup:upgrade<\/span><span style=\"font-weight: 400;\"><br \/>\n<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Then, because the website will appear broken:<\/span><\/p>\n<p><span style=\"font-weight: 400;\">php bin\/magento setup:static-content:deploy<\/span><span style=\"font-weight: 400;\"><br \/>\n<\/span><\/p>\n<p><span style=\"font-weight: 400;\">After the deployment is complete, the extension is visible from the backend in System Configuration -&gt; Advanced -&gt; Disable Modules Output. Now, a controller will be created for module testing. But before, a route for the HelloWorld module will be created. Routes in magento are divided into 3 parts: Route Address Name, Controller and Action like the following example:<\/span><\/p>\n<p><span style=\"font-weight: 400;\">http:\/\/fixit.com\/index.php\/frontname\/controller\/action<\/span><span style=\"font-weight: 400;\"><br \/>\n<\/span><\/p>\n<p><span style=\"font-weight: 400;\">To add a route, a routes.xml file must be created:<\/span><\/p>\n<p><span style=\"font-weight: 400;\">app\/code\/Fixit\/HelloWorld\/etc\/frontend\/routes.xml<\/span><\/p>\n<p><span style=\"font-weight: 400;\">since this is a frontend path, it is added to the frontend\/ folder otherwise it should be added to the adminhtml\/ folder<\/span><\/p>\n<p><span style=\"font-weight: 400;\">The content:<\/span><\/p>\n<p><span style=\"font-weight: 400;\">&lt;?xml version=&#8221;1.0&#8243; ?&gt;<\/span><span style=\"font-weight: 400;\"><br \/>\n<\/span><span style=\"font-weight: 400;\">&lt;config xmlns:xsi=&#8221;http:\/\/www.w3.org\/2001\/XMLSchema-instance&#8221; xsi:noNamespaceSchemaLocation=&#8221;urn:magento:framework:App\/etc\/routes.xsd&#8221;&gt;<\/span><span style=\"font-weight: 400;\"><br \/>\n<\/span><span style=\"font-weight: 400;\">\u00a0 \u00a0 &lt;router id=&#8221;standard&#8221;&gt;<\/span><span style=\"font-weight: 400;\"><br \/>\n<\/span><span style=\"font-weight: 400;\">\u00a0 \u00a0 \u00a0 \u00a0 &lt;route frontName=&#8221;helloworld&#8221; id=&#8221;helloworld&#8221;&gt;<\/span><span style=\"font-weight: 400;\"><br \/>\n<\/span><span style=\"font-weight: 400;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 &lt;module name=&#8221;Fixit_HelloWorld&#8221;\/&gt;<\/span><span style=\"font-weight: 400;\"><br \/>\n<\/span><span style=\"font-weight: 400;\">\u00a0 \u00a0 \u00a0 \u00a0 &lt;\/route&gt;<\/span><span style=\"font-weight: 400;\"><br \/>\n<\/span><span style=\"font-weight: 400;\">\u00a0 \u00a0 &lt;\/router&gt;<\/span><span style=\"font-weight: 400;\"><br \/>\n<\/span><span style=\"font-weight: 400;\">&lt;\/config&gt;<\/span><\/p>\n<p><span style=\"font-weight: 400;\">It should create another folder:<\/span><\/p>\n<p><span style=\"font-weight: 400;\">app\/code\/Fixit\/HelloWorld\/Controller\/Index\/Test.php<\/span><\/p>\n<p><span style=\"font-weight: 400;\">and content:<\/span><\/p>\n<p><span style=\"font-weight: 400;\">&lt;?php<\/span><span style=\"font-weight: 400;\"><br \/>\n<\/span><span style=\"font-weight: 400;\">namespace Fixit\\HelloWorld\\Controller\\Index;<\/span><span style=\"font-weight: 400;\"><br \/>\n<\/span><span style=\"font-weight: 400;\"><br \/>\n<\/span><span style=\"font-weight: 400;\">class Test extends \\Magento\\Framework\\App\\Action\\Action<\/span><span style=\"font-weight: 400;\"><br \/>\n<\/span><span style=\"font-weight: 400;\">{<\/span><span style=\"font-weight: 400;\"><br \/>\n<\/span> <span style=\"font-weight: 400;\">protected $_pageFactory;<\/span><span style=\"font-weight: 400;\"><br \/>\n<\/span><span style=\"font-weight: 400;\"><br \/>\n<\/span> <span style=\"font-weight: 400;\">public function __construct(<\/span><span style=\"font-weight: 400;\"><br \/>\n<\/span> <span style=\"font-weight: 400;\">\\Magento\\Framework\\App\\Action\\Context $context,<\/span><span style=\"font-weight: 400;\"><br \/>\n<\/span> <span style=\"font-weight: 400;\">\\Magento\\Framework\\View\\Result\\PageFactory $pageFactory)<\/span><span style=\"font-weight: 400;\"><br \/>\n<\/span> <span style=\"font-weight: 400;\">{<\/span><span style=\"font-weight: 400;\"><br \/>\n<\/span> <span style=\"font-weight: 400;\">$this-&gt;_pageFactory = $pageFactory;<\/span><span style=\"font-weight: 400;\"><br \/>\n<\/span> <span style=\"font-weight: 400;\">return parent::__construct($context);<\/span><span style=\"font-weight: 400;\"><br \/>\n<\/span> <span style=\"font-weight: 400;\">}<\/span><span style=\"font-weight: 400;\"><br \/>\n<\/span><span style=\"font-weight: 400;\"><br \/>\n<\/span> <span style=\"font-weight: 400;\">public function execute()<\/span><span style=\"font-weight: 400;\"><br \/>\n<\/span> <span style=\"font-weight: 400;\">{<\/span><span style=\"font-weight: 400;\"><br \/>\n<\/span> <span style=\"font-weight: 400;\">echo \u201cHello World\u201d;<\/span><span style=\"font-weight: 400;\"><br \/>\n<\/span> <span style=\"font-weight: 400;\">exit?;<\/span><span style=\"font-weight: 400;\"><br \/>\n<\/span> <span style=\"font-weight: 400;\">}<\/span><span style=\"font-weight: 400;\"><br \/>\n<\/span><span style=\"font-weight: 400;\">}<\/span><\/p>\n<p><span style=\"font-weight: 400;\">The Url must have this format:<\/span><\/p>\n<p><span style=\"font-weight: 400;\">http:\/\/&lt;yourhost.com&gt;\/helloworld\/index\/test<\/span><\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400;\">The first Magento extension was created, which when opened displays: \u201cHello World!\u201d However, the field of Magento extensions is vast and there is a lot to learn in order to proceed with their development.\u00a0<\/span><\/p>\n<p>&nbsp;<\/p>","protected":false},"excerpt":{"rendered":"<p>\u03a0\u03c9\u03c2 \u03b4\u03b7\u03bc\u03b9\u03bf\u03c5\u03c1\u03b3\u03b5\u03af\u03c4\u03b1\u03b9 \u03bc\u03b9\u03b1 Magento \u0395\u03c0\u03ad\u03ba\u03c4\u03b1\u03c3\u03b7; \u0388\u03bd\u03b1\u03c2 \u03c3\u03b7\u03bc\u03b1\u03bd\u03c4\u03b9\u03ba\u03cc\u03c2 \u03c0\u03b1\u03c1\u03ac\u03b3\u03bf\u03bd\u03c4\u03b1\u03c2 \u03c3\u03c4\u03b7 \u03c0\u03bb\u03b1\u03c4\u03c6\u03cc\u03c1\u03bc\u03b1 Magento, \u03ba\u03b1\u03b8\u03bf\u03c1\u03b9\u03c3\u03c4\u03b9\u03ba\u03cc\u03c2 \u03b3\u03b9\u03b1 \u03c4\u03b7 \u03bb\u03b5\u03b9\u03c4\u03bf\u03c5\u03c1\u03b3\u03af\u03b1 \u03c4\u03bf\u03c5, \u03b5\u03af\u03bd\u03b1\u03b9 \u03bf\u03b9 \u03b5\u03c0\u03b5\u03ba\u03c4\u03ac\u03c3\u03b5\u03b9\u03c2 \u03ae modules. \u03a3\u03b5 \u03c0\u03c1\u03bf\u03b7\u03b3\u03bf\u03cd\u03bc\u03b5\u03bd\u03bf \u03ac\u03c1\u03b8\u03c1\u03bf \u03b1\u03bd\u03b1\u03c6\u03ad\u03c1\u03b5\u03c4\u03b1\u03b9 \u03b7 \u03c3\u03b7\u03bc\u03b1\u03c3\u03af\u03b1 \u03ba\u03b1\u03b9 \u03cc\u03c3\u03b1 \u03c0\u03c1\u03ad\u03c0\u03b5\u03b9 \u03bd\u03b1 \u03b3\u03bd\u03c9\u03c1\u03af\u03b6\u03b5\u03b9 \u03ba\u03b1\u03bd\u03b5\u03af\u03c2 \u03b3\u03b9\u03b1 \u03c4\u03b9\u03c2 \u03b5\u03c0\u03b5\u03ba\u03c4\u03ac\u03c3\u03b5\u03b9\u03c2. \u03a3\u03c4\u03bf \u03ac\u03c1\u03b8\u03c1\u03bf &#8220;\u03a0\u03cc\u03c3\u03bf \u03c3\u03b7\u03bc\u03b1\u03bd\u03c4\u03b9\u03ba\u03ac \u03b5\u03af\u03bd\u03b1\u03b9 \u03c4\u03b1 Magento Modules;&#8221; \u03b2\u03c1\u03af\u03c3\u03ba\u03bf\u03bd\u03c4\u03b1\u03b9 \u03b1\u03bd\u03b1\u03bb\u03c5\u03c4\u03b9\u03ba\u03ad\u03c2 \u03c0\u03bb\u03b7\u03c1\u03bf\u03c6\u03bf\u03c1\u03af\u03b5\u03c2. \u03a3\u03c4\u03b7 \u03c0\u03c1\u03b1\u03b3\u03bc\u03b1\u03c4\u03b9\u03ba\u03cc\u03c4\u03b7\u03c4\u03b1, \u03c4\u03bf \u03ba\u03cc\u03c3\u03c4\u03bf\u03c2 \u03c4\u03c9\u03bd \u03b5\u03c0\u03b5\u03ba\u03c4\u03ac\u03c3\u03b5\u03c9\u03bd, \u03b5\u03af\u03bd\u03b1\u03b9 \u03ba\u03b1\u03b8\u03bf\u03c1\u03b9\u03c3\u03c4\u03b9\u03ba\u03cc&#8230;<\/p>","protected":false},"author":1,"featured_media":5476,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[41,40],"tags":[220,57,172,223,164,222],"class_list":["post-5474","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blog","category-magento","tag-ecommerce","tag-magento","tag-magento-2-4","tag-magento-module","tag-magento-update","tag-module"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>\u0394\u03b7\u03bc\u03b9\u03bf\u03cd\u03c1\u03b3\u03b9\u03b1 Magento Modules - Fixit<\/title>\n<meta name=\"description\" content=\"\u039f\u03b9 Magento \u03b5\u03c0\u03b5\u03ba\u03c4\u03ac\u03c3\u03b5\u03b9\u03c2 \u03b5\u03af\u03bd\u03b1\u03b9 \u03c3\u03b7\u03bc\u03b1\u03bd\u03c4\u03b9\u03ba\u03ad\u03c2 \u03b3\u03b9\u03b1 \u03c4\u03b7 \u03bb\u03b5\u03b9\u03c4\u03bf\u03c5\u03c1\u03b3\u03af\u03b1 \u03c4\u03bf\u03c5 \u03ba\u03b1\u03c4\u03b1\u03c3\u03c4\u03ae\u03bc\u03b1\u03c4\u03bf\u03c2 \u03b7\u03bb\u03b5\u03ba\u03c4\u03c1\u03bf\u03bd\u03b9\u03ba\u03bf\u03cd \u03b5\u03bc\u03c0\u03bf\u03c1\u03af\u03bf\u03c5. \u03a0\u03c9\u03c2 \u03b4\u03b7\u03bc\u03b9\u03bf\u03c5\u03c1\u03b3\u03b5\u03af\u03c4\u03b1\u03b9 \u03cc\u03bc\u03c9\u03c2 \u03bc\u03b9\u03b1 \u03b5\u03c0\u03ad\u03ba\u03c4\u03b1\u03c3\u03b7 Magento \u03ba\u03b1\u03b9 \u03c0\u03cc\u03c3\u03bf \u03b5\u03cd\u03ba\u03bf\u03bb\u03bf \u03b5\u03af\u03bd\u03b1\u03b9;\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.fixit.gr\/en\/dimioyrgia-magento-modules\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"\u0394\u03b7\u03bc\u03b9\u03bf\u03cd\u03c1\u03b3\u03b9\u03b1 Magento Modules - Fixit\" \/>\n<meta property=\"og:description\" content=\"\u039f\u03b9 Magento \u03b5\u03c0\u03b5\u03ba\u03c4\u03ac\u03c3\u03b5\u03b9\u03c2 \u03b5\u03af\u03bd\u03b1\u03b9 \u03c3\u03b7\u03bc\u03b1\u03bd\u03c4\u03b9\u03ba\u03ad\u03c2 \u03b3\u03b9\u03b1 \u03c4\u03b7 \u03bb\u03b5\u03b9\u03c4\u03bf\u03c5\u03c1\u03b3\u03af\u03b1 \u03c4\u03bf\u03c5 \u03ba\u03b1\u03c4\u03b1\u03c3\u03c4\u03ae\u03bc\u03b1\u03c4\u03bf\u03c2 \u03b7\u03bb\u03b5\u03ba\u03c4\u03c1\u03bf\u03bd\u03b9\u03ba\u03bf\u03cd \u03b5\u03bc\u03c0\u03bf\u03c1\u03af\u03bf\u03c5. \u03a0\u03c9\u03c2 \u03b4\u03b7\u03bc\u03b9\u03bf\u03c5\u03c1\u03b3\u03b5\u03af\u03c4\u03b1\u03b9 \u03cc\u03bc\u03c9\u03c2 \u03bc\u03b9\u03b1 \u03b5\u03c0\u03ad\u03ba\u03c4\u03b1\u03c3\u03b7 Magento \u03ba\u03b1\u03b9 \u03c0\u03cc\u03c3\u03bf \u03b5\u03cd\u03ba\u03bf\u03bb\u03bf \u03b5\u03af\u03bd\u03b1\u03b9;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.fixit.gr\/en\/dimioyrgia-magento-modules\/\" \/>\n<meta property=\"og:site_name\" content=\"Fixit\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/Fixit.el\/\" \/>\n<meta property=\"article:published_time\" content=\"2022-10-21T09:01:07+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.fixit.gr\/wp-content\/uploads\/2022\/10\/Magento-Extensions.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"960\" \/>\n\t<meta property=\"og:image:height\" content=\"600\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"\u0393\u03b9\u03ce\u03c1\u03b3\u03bf\u03c2 \u039c\u03b7\u03c4\u03c3\u03bf\u03cd\u03b4\u03b7\u03c2\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"\u0393\u03b9\u03ce\u03c1\u03b3\u03bf\u03c2 \u039c\u03b7\u03c4\u03c3\u03bf\u03cd\u03b4\u03b7\u03c2\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.fixit.gr\\\/dimioyrgia-magento-modules#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.fixit.gr\\\/dimioyrgia-magento-modules\"},\"author\":{\"name\":\"\u0393\u03b9\u03ce\u03c1\u03b3\u03bf\u03c2 \u039c\u03b7\u03c4\u03c3\u03bf\u03cd\u03b4\u03b7\u03c2\",\"@id\":\"https:\\\/\\\/www.fixit.gr\\\/#\\\/schema\\\/person\\\/b86bf7ba1762bbca10dbb56b978dc996\"},\"headline\":\"\u0394\u03b7\u03bc\u03b9\u03bf\u03cd\u03c1\u03b3\u03b9\u03b1 Magento Modules\",\"datePublished\":\"2022-10-21T09:01:07+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.fixit.gr\\\/dimioyrgia-magento-modules\"},\"wordCount\":319,\"publisher\":{\"@id\":\"https:\\\/\\\/www.fixit.gr\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.fixit.gr\\\/dimioyrgia-magento-modules#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.fixit.gr\\\/wp-content\\\/uploads\\\/2022\\\/10\\\/Magento-Extensions.jpg\",\"keywords\":[\"ecommerce\",\"magento\",\"magento 2.4\",\"magento module\",\"magento update\",\"module\"],\"articleSection\":[\"Blog\",\"Magento\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.fixit.gr\\\/dimioyrgia-magento-modules\",\"url\":\"https:\\\/\\\/www.fixit.gr\\\/dimioyrgia-magento-modules\",\"name\":\"\u0394\u03b7\u03bc\u03b9\u03bf\u03cd\u03c1\u03b3\u03b9\u03b1 Magento Modules - Fixit\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.fixit.gr\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.fixit.gr\\\/dimioyrgia-magento-modules#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.fixit.gr\\\/dimioyrgia-magento-modules#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.fixit.gr\\\/wp-content\\\/uploads\\\/2022\\\/10\\\/Magento-Extensions.jpg\",\"datePublished\":\"2022-10-21T09:01:07+00:00\",\"description\":\"\u039f\u03b9 Magento \u03b5\u03c0\u03b5\u03ba\u03c4\u03ac\u03c3\u03b5\u03b9\u03c2 \u03b5\u03af\u03bd\u03b1\u03b9 \u03c3\u03b7\u03bc\u03b1\u03bd\u03c4\u03b9\u03ba\u03ad\u03c2 \u03b3\u03b9\u03b1 \u03c4\u03b7 \u03bb\u03b5\u03b9\u03c4\u03bf\u03c5\u03c1\u03b3\u03af\u03b1 \u03c4\u03bf\u03c5 \u03ba\u03b1\u03c4\u03b1\u03c3\u03c4\u03ae\u03bc\u03b1\u03c4\u03bf\u03c2 \u03b7\u03bb\u03b5\u03ba\u03c4\u03c1\u03bf\u03bd\u03b9\u03ba\u03bf\u03cd \u03b5\u03bc\u03c0\u03bf\u03c1\u03af\u03bf\u03c5. \u03a0\u03c9\u03c2 \u03b4\u03b7\u03bc\u03b9\u03bf\u03c5\u03c1\u03b3\u03b5\u03af\u03c4\u03b1\u03b9 \u03cc\u03bc\u03c9\u03c2 \u03bc\u03b9\u03b1 \u03b5\u03c0\u03ad\u03ba\u03c4\u03b1\u03c3\u03b7 Magento \u03ba\u03b1\u03b9 \u03c0\u03cc\u03c3\u03bf \u03b5\u03cd\u03ba\u03bf\u03bb\u03bf \u03b5\u03af\u03bd\u03b1\u03b9;\",\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.fixit.gr\\\/dimioyrgia-magento-modules\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.fixit.gr\\\/dimioyrgia-magento-modules#primaryimage\",\"url\":\"https:\\\/\\\/www.fixit.gr\\\/wp-content\\\/uploads\\\/2022\\\/10\\\/Magento-Extensions.jpg\",\"contentUrl\":\"https:\\\/\\\/www.fixit.gr\\\/wp-content\\\/uploads\\\/2022\\\/10\\\/Magento-Extensions.jpg\",\"width\":960,\"height\":600},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.fixit.gr\\\/#website\",\"url\":\"https:\\\/\\\/www.fixit.gr\\\/\",\"name\":\"Fixit\",\"description\":\"\u0394\u03b7\u03bc\u03b9\u03bf\u03c5\u03c1\u03b3\u03af\u03b1 eCommerce Web Sites\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.fixit.gr\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.fixit.gr\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.fixit.gr\\\/#organization\",\"name\":\"Fixit\",\"url\":\"https:\\\/\\\/www.fixit.gr\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.fixit.gr\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.fixit.gr\\\/wp-content\\\/uploads\\\/2022\\\/07\\\/fixit_logo_site-min.png\",\"contentUrl\":\"https:\\\/\\\/www.fixit.gr\\\/wp-content\\\/uploads\\\/2022\\\/07\\\/fixit_logo_site-min.png\",\"width\":801,\"height\":179,\"caption\":\"Fixit\"},\"image\":{\"@id\":\"https:\\\/\\\/www.fixit.gr\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/Fixit.el\\\/\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.fixit.gr\\\/#\\\/schema\\\/person\\\/b86bf7ba1762bbca10dbb56b978dc996\",\"name\":\"\u0393\u03b9\u03ce\u03c1\u03b3\u03bf\u03c2 \u039c\u03b7\u03c4\u03c3\u03bf\u03cd\u03b4\u03b7\u03c2\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.fixit.gr\\\/wp-content\\\/litespeed\\\/avatar\\\/d9a970039e51c37f61f3e91b6e197b8d.jpg?ver=1783938498\",\"url\":\"https:\\\/\\\/www.fixit.gr\\\/wp-content\\\/litespeed\\\/avatar\\\/d9a970039e51c37f61f3e91b6e197b8d.jpg?ver=1783938498\",\"contentUrl\":\"https:\\\/\\\/www.fixit.gr\\\/wp-content\\\/litespeed\\\/avatar\\\/d9a970039e51c37f61f3e91b6e197b8d.jpg?ver=1783938498\",\"caption\":\"\u0393\u03b9\u03ce\u03c1\u03b3\u03bf\u03c2 \u039c\u03b7\u03c4\u03c3\u03bf\u03cd\u03b4\u03b7\u03c2\"},\"url\":\"https:\\\/\\\/www.fixit.gr\\\/en\\\/author\\\/arrowgr\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Creating Magento Modules - Fixit","description":"Magento extensions are important for the operation of your e-commerce store. But how do you create a Magento extension and how easy is it?;","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.fixit.gr\/en\/dimioyrgia-magento-modules\/","og_locale":"en_US","og_type":"article","og_title":"\u0394\u03b7\u03bc\u03b9\u03bf\u03cd\u03c1\u03b3\u03b9\u03b1 Magento Modules - Fixit","og_description":"\u039f\u03b9 Magento \u03b5\u03c0\u03b5\u03ba\u03c4\u03ac\u03c3\u03b5\u03b9\u03c2 \u03b5\u03af\u03bd\u03b1\u03b9 \u03c3\u03b7\u03bc\u03b1\u03bd\u03c4\u03b9\u03ba\u03ad\u03c2 \u03b3\u03b9\u03b1 \u03c4\u03b7 \u03bb\u03b5\u03b9\u03c4\u03bf\u03c5\u03c1\u03b3\u03af\u03b1 \u03c4\u03bf\u03c5 \u03ba\u03b1\u03c4\u03b1\u03c3\u03c4\u03ae\u03bc\u03b1\u03c4\u03bf\u03c2 \u03b7\u03bb\u03b5\u03ba\u03c4\u03c1\u03bf\u03bd\u03b9\u03ba\u03bf\u03cd \u03b5\u03bc\u03c0\u03bf\u03c1\u03af\u03bf\u03c5. \u03a0\u03c9\u03c2 \u03b4\u03b7\u03bc\u03b9\u03bf\u03c5\u03c1\u03b3\u03b5\u03af\u03c4\u03b1\u03b9 \u03cc\u03bc\u03c9\u03c2 \u03bc\u03b9\u03b1 \u03b5\u03c0\u03ad\u03ba\u03c4\u03b1\u03c3\u03b7 Magento \u03ba\u03b1\u03b9 \u03c0\u03cc\u03c3\u03bf \u03b5\u03cd\u03ba\u03bf\u03bb\u03bf \u03b5\u03af\u03bd\u03b1\u03b9;","og_url":"https:\/\/www.fixit.gr\/en\/dimioyrgia-magento-modules\/","og_site_name":"Fixit","article_publisher":"https:\/\/www.facebook.com\/Fixit.el\/","article_published_time":"2022-10-21T09:01:07+00:00","og_image":[{"width":960,"height":600,"url":"https:\/\/www.fixit.gr\/wp-content\/uploads\/2022\/10\/Magento-Extensions.jpg","type":"image\/jpeg"}],"author":"\u0393\u03b9\u03ce\u03c1\u03b3\u03bf\u03c2 \u039c\u03b7\u03c4\u03c3\u03bf\u03cd\u03b4\u03b7\u03c2","twitter_card":"summary_large_image","twitter_misc":{"Written by":"\u0393\u03b9\u03ce\u03c1\u03b3\u03bf\u03c2 \u039c\u03b7\u03c4\u03c3\u03bf\u03cd\u03b4\u03b7\u03c2","Est. reading time":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.fixit.gr\/dimioyrgia-magento-modules#article","isPartOf":{"@id":"https:\/\/www.fixit.gr\/dimioyrgia-magento-modules"},"author":{"name":"\u0393\u03b9\u03ce\u03c1\u03b3\u03bf\u03c2 \u039c\u03b7\u03c4\u03c3\u03bf\u03cd\u03b4\u03b7\u03c2","@id":"https:\/\/www.fixit.gr\/#\/schema\/person\/b86bf7ba1762bbca10dbb56b978dc996"},"headline":"\u0394\u03b7\u03bc\u03b9\u03bf\u03cd\u03c1\u03b3\u03b9\u03b1 Magento Modules","datePublished":"2022-10-21T09:01:07+00:00","mainEntityOfPage":{"@id":"https:\/\/www.fixit.gr\/dimioyrgia-magento-modules"},"wordCount":319,"publisher":{"@id":"https:\/\/www.fixit.gr\/#organization"},"image":{"@id":"https:\/\/www.fixit.gr\/dimioyrgia-magento-modules#primaryimage"},"thumbnailUrl":"https:\/\/www.fixit.gr\/wp-content\/uploads\/2022\/10\/Magento-Extensions.jpg","keywords":["ecommerce","magento","magento 2.4","magento module","magento update","module"],"articleSection":["Blog","Magento"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.fixit.gr\/dimioyrgia-magento-modules","url":"https:\/\/www.fixit.gr\/dimioyrgia-magento-modules","name":"Creating Magento Modules - Fixit","isPartOf":{"@id":"https:\/\/www.fixit.gr\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.fixit.gr\/dimioyrgia-magento-modules#primaryimage"},"image":{"@id":"https:\/\/www.fixit.gr\/dimioyrgia-magento-modules#primaryimage"},"thumbnailUrl":"https:\/\/www.fixit.gr\/wp-content\/uploads\/2022\/10\/Magento-Extensions.jpg","datePublished":"2022-10-21T09:01:07+00:00","description":"Magento extensions are important for the operation of your e-commerce store. But how do you create a Magento extension and how easy is it?;","inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.fixit.gr\/dimioyrgia-magento-modules"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.fixit.gr\/dimioyrgia-magento-modules#primaryimage","url":"https:\/\/www.fixit.gr\/wp-content\/uploads\/2022\/10\/Magento-Extensions.jpg","contentUrl":"https:\/\/www.fixit.gr\/wp-content\/uploads\/2022\/10\/Magento-Extensions.jpg","width":960,"height":600},{"@type":"WebSite","@id":"https:\/\/www.fixit.gr\/#website","url":"https:\/\/www.fixit.gr\/","name":"Fixit","description":"Creating eCommerce Web Sites","publisher":{"@id":"https:\/\/www.fixit.gr\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.fixit.gr\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.fixit.gr\/#organization","name":"Fixit","url":"https:\/\/www.fixit.gr\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.fixit.gr\/#\/schema\/logo\/image\/","url":"https:\/\/www.fixit.gr\/wp-content\/uploads\/2022\/07\/fixit_logo_site-min.png","contentUrl":"https:\/\/www.fixit.gr\/wp-content\/uploads\/2022\/07\/fixit_logo_site-min.png","width":801,"height":179,"caption":"Fixit"},"image":{"@id":"https:\/\/www.fixit.gr\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/Fixit.el\/"]},{"@type":"Person","@id":"https:\/\/www.fixit.gr\/#\/schema\/person\/b86bf7ba1762bbca10dbb56b978dc996","name":"Giorgos Mitsoudis","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.fixit.gr\/wp-content\/litespeed\/avatar\/d9a970039e51c37f61f3e91b6e197b8d.jpg?ver=1783938498","url":"https:\/\/www.fixit.gr\/wp-content\/litespeed\/avatar\/d9a970039e51c37f61f3e91b6e197b8d.jpg?ver=1783938498","contentUrl":"https:\/\/www.fixit.gr\/wp-content\/litespeed\/avatar\/d9a970039e51c37f61f3e91b6e197b8d.jpg?ver=1783938498","caption":"\u0393\u03b9\u03ce\u03c1\u03b3\u03bf\u03c2 \u039c\u03b7\u03c4\u03c3\u03bf\u03cd\u03b4\u03b7\u03c2"},"url":"https:\/\/www.fixit.gr\/en\/author\/arrowgr"}]}},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/www.fixit.gr\/en\/wp-json\/wp\/v2\/posts\/5474","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.fixit.gr\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.fixit.gr\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.fixit.gr\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.fixit.gr\/en\/wp-json\/wp\/v2\/comments?post=5474"}],"version-history":[{"count":0,"href":"https:\/\/www.fixit.gr\/en\/wp-json\/wp\/v2\/posts\/5474\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.fixit.gr\/en\/wp-json\/wp\/v2\/media\/5476"}],"wp:attachment":[{"href":"https:\/\/www.fixit.gr\/en\/wp-json\/wp\/v2\/media?parent=5474"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.fixit.gr\/en\/wp-json\/wp\/v2\/categories?post=5474"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.fixit.gr\/en\/wp-json\/wp\/v2\/tags?post=5474"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}