{"id":2081,"date":"2018-02-22T08:19:12","date_gmt":"2018-02-22T07:19:12","guid":{"rendered":"http:\/\/auroracreation.pl\/blog\/?p=2081"},"modified":"2019-10-29T09:44:06","modified_gmt":"2019-10-29T08:44:06","slug":"tworzenie-pluginow-w-magento-2","status":"publish","type":"post","link":"https:\/\/auroracreation.pl\/blog\/tworzenie-pluginow-w-magento-2\/","title":{"rendered":"Pluginy w Magento 2 &#8211; tworzenie i typy"},"content":{"rendered":"<!DOCTYPE html PUBLIC \"-\/\/W3C\/\/DTD HTML 4.0 Transitional\/\/EN\" \"http:\/\/www.w3.org\/TR\/REC-html40\/loose.dtd\">\n<?xml encoding=\"utf-8\" ?><html><body><p>Jednym z najwi&#281;kszych problem&oacute;w w Magento 1 dla os&oacute;b, kt&oacute;re chcia&#322;y dostosowywa&#263; ten system do swoich potrzeb by&#322;a konieczno&#347;&#263; nadpisywania klas je&#347;li nie mo&#380;na by&#322;o zastosowa&#263; event&oacute;w. Powodowa&#322;o to wiele problem&oacute;w, i konflikt&oacute;w w czasie gdy kilka modu&#322;&oacute;w pr&oacute;bowa&#322;o nadpisa&#263; t&#261; sam&#261; klas&#281; bazow&#261;.<\/p>\n<p>W Magento 2 wyeliminowano t&#261; niedogodno&#347;&#263; poprzez wprowadzenie systemu <strong>plugin&oacute;w<\/strong>. Zgodnie z dokumentacj&#261; jak&#261; mo&#380;na znale&#378;&#263; na stronie <a href=\"http:\/\/devdocs.magento.com\/guides\/v2.2\/extension-dev-guide\/plugins.html\">http:\/\/devdocs.magento.com\/guides\/v2.2\/extension-dev-guide\/plugins.html<\/a> pluginy to klasy, kt&oacute;re modyfikuj&#261; dzia&#322;anie metod publicznych znajduj&#261;cych si&#281; w innych klasach lub interfejsach.<\/p>\n<p>Dzi&#281;ki temu mechanizmowi wi&#281;kszo&#347;&#263; modyfikacji na sklepie mo&#380;emy wykona&#263; bez nadpisywania oryginalnych klas.<\/p>\n<p>Za pomoc&#261; plugin&oacute;w mo&#380;emy zmieni&#263; warto&#347;&#263; parametr&oacute;w przekazywanych do danej metody, zwracany przez ni&#261; wynik, lub wykona&#263; dodatkowe operacje podczas wywo&#322;ania danej funkcji.<\/p>\n<h2><strong>Deklaracja Plugin&oacute;w<\/strong><\/h2>\n<p>Poza klas&#261;, kt&oacute;ra zawiera kod pluginu, musimy te&#380; dokona&#263; jego deklaracji &ndash; robimy to w pliku di.xml, kt&oacute;ry znajduje si&#281; w folderze <strong>etc<\/strong> naszego modu&#322;u.<\/p>\n<p>Listing 1. Og&oacute;lna deklaracja pluginu w pliku di.xml \/app\/code\/Vendor\/Module\/etc\/di.xml<\/p>\n<pre><code data-language=\"xml\">&lt;?xml version=\"1.0\"?&gt;\n&lt;config&gt;\n    &lt;type name=\"{obserwowana_klasa}\"&gt;\n        &lt;plugin name=\"{nazwa_pluginu}\" type=\"{klasa_pluginu}\" sortOrder=\"1\"\n               disabled=\"false\"\/&gt;\n    &lt;\/type&gt;\n&lt;\/config&gt;<\/code><\/pre>\n<p><strong>Parametry wymagane:<\/strong><\/p>\n<ul>\n<li>obserwowana_klasa &ndash; klasa na kt&oacute;rej ma dzia&#322;a&#263; plugin<\/li>\n<li>nazwa_pluginu &ndash; nazwa pluginu<\/li>\n<li>klasa_pluginu &ndash; klasa ze stworzonym pluginem<\/li>\n<\/ul>\n<p><strong>Parametry opcjonalne:<\/strong><\/p>\n<ul>\n<li>sortOrder &ndash; kolejno&#347;&#263; wywo&#322;ania pluginu<\/li>\n<li>disabled &ndash; wy&#322;&#261;czenie pluginu (domy&#347;lnie warto&#347;&#263; false)<\/li>\n<\/ul>\n<h2>Typy plugin&oacute;w<\/h2>\n<p>Magento 2 oferuje trzy typy plugin&oacute;w. Umo&#380;liwiaj&#261; one uruchomienie naszego kodu przed dan&#261; metod&#261;, po niej lub na zewn&#261;trz.<br>\nDeklaruj&#261;c klas&#281; z pluginem nale&#380;y pami&#281;ta&#263; o tym, &#380;e metoda pluginu musi mie&#263; tak&#261; sam&#261; nazw&#281; jak nazwa oryginalnej metody i powinna by&#263; poprzedzona odpowiednim prefixem (before, after lub around).<\/p>\n<h2>Plugin Before<\/h2>\n<p>Uruchamiany jest przed dan&#261; metod&#261;. Umo&#380;liwia nam zmodyfikowanie parametr&oacute;w jakie s&#261; przekazywane do metody, oraz wykonanie kodu przed jej uruchomieniem. Nazwa pluginu powinna by&#263; taka sama jak nazwa metody i posiada&#263; prefix <strong>&bdquo;before&rdquo;<\/strong>. Rezultat wykonania tego pluginu powinien by&#263; tablic&#261; argument&oacute;w.<\/p>\n<p>Listing 2. Deklaracja pluginu &bdquo;before&rdquo; \/app\/code\/Vendor\/Module\/etc\/di.xml<\/p>\n<pre><code data-language=\"xml\">&lt;?xml version=\"1.0\"?&gt;\n&lt;config&gt;\n    &lt;type name=\"Magento\\Catalog\\Model\\Product\"&gt;\n        &lt;plugin name=\"before_set_sku\" type=\"Vendor\\Module\\Plugin\\BeforePlugin\"\/&gt;\n    &lt;\/type&gt;\n&lt;\/config&gt;<\/code><\/pre>\n<p>Listing 3. Klasa z pluginem &bdquo;before&rdquo; \/app\/code\/Vendor\/Module\/Plugin\/BeforePlugin<\/p>\n<pre><code data-language=\"php\">namespace Vendor\\Module\\Plugin;\n\nclass BeforePlugin\n{\n    public function beforeSetSku(\n        \\Magento\\Catalog\\Model\\Product $subject,\n        $sku    \n    ) {\n        $sku = &lsquo;PRODUCT_&rsquo; . $sku;\n        return [$sku];\n    }\n}\n<\/code><\/pre>\n<h2>Plugin After<\/h2>\n<p>Wywo&#322;ywany po wykonaniu danej metody. U&#380;ywany jest do modyfikacji wynik&oacute;w zwracanych przez dan&#261; metod&#281;, oraz do uruchomienia kodu bezpo&#347;rednio po jej wykonaniu. Nazwa pluginu powinna by&#263; taka sama jak nazwa metody i posiada&#263; prefix <strong>&bdquo;after&rdquo;<\/strong><\/p>\n<p>Listing 4. Deklaracja pluginu &bdquo;after&rdquo; \/app\/code\/Vendor\/Module\/etc\/di.xml<\/p>\n<pre><code data-language=\"xml\">&lt;?xml version=\"1.0\"?&gt;\n&lt;config&gt;\n    &lt;type name=\"Magento\\Catalog\\Model\\Product\"&gt;\n        &lt;plugin name=\"after_get_name\" type=\"Vendor\\Module\\Plugin\\AfterPlugin\"\/&gt;\n    &lt;\/type&gt;\n&lt;\/config&gt;\n<\/code><\/pre>\n<p>Listing 5. Klasa z pluginem &bdquo;after&rdquo; \/app\/code\/Vendor\/Module\/Plugin\/AfterPlugin<\/p>\n<pre><code data-language=\"php\">namespace Vendor\\Module\\Plugin;\n\nclass AfterPlugin\n{\n    public function afterGetName(\n        \\Magento\\Catalog\\Model\\Product $subject,\n        $result\n    ) {\n        return &lsquo;Product&rsquo; . $result;\n    }\n}\n<\/code><\/pre>\n<h2>Plugin Around<\/h2>\n<p>Wywo&#322;ywany zar&oacute;wno przed, jak i po danej metodzie. Mo&#380;e s&#322;u&#380;y&#263; tak&#380;e do jej ca&#322;kowitego nadpisania. Nazwa pluginu powinna by&#263; taka sama jak nazwa metody i posiada&#263; prefix &bdquo;around&rdquo;<\/p>\n<p>Listing 6. Deklaracja pluginu <strong>&bdquo;around&rdquo;<\/strong> \/app\/code\/Vendor\/Module\/etc\/di.xml<\/p>\n<pre><code data-language=\"xml\">&lt;?xml version=\"1.0\"?&gt;\n&lt;config&gt;\n    &lt;type name=\"Magento\\Catalog\\Model\\Product\"&gt;\n        &lt;plugin name=\"around_get_name\" type=\"Vendor\\Module\\Plugin\\AroundPlugin\"\/&gt;\n    &lt;\/type&gt;\n&lt;\/config&gt;<\/code><\/pre>\n<p>Listing 7. Klasa z pluginem &bdquo;around&rdquo; \/app\/code\/Vendor\/Module\/Plugin\/AroundPlugin<\/p>\n<pre><code data-language=\"php\">namespace Vendor\\Module\\Plugin;\n\nclass AroundPlugin\n{\n    public function aroundGetName(\n        \\Magento\\Catalog\\Model\\Product $subject,\n        callable $proceed\n    ) {\n        $status = $subject&rarr;getStatus();\n        $name = $proceed();\n\n        if ($status == 1) {\n            $returnValue = &lsquo;Enabled: &rsquo; . $name;\n        } else {\n            $returnValue = &lsquo;Disabled: &rsquo; . $name;\n        }\n        return $returnValue;\n    }\n}\n<\/code><\/pre>\n<h2>Ograniczenia przy stosowaniu plugin&oacute;w.<\/h2>\n<p>Plugin&oacute;w mo&#380;emy u&#380;ywa&#263; tylko i wy&#322;&#261;cznie dla publicznych metod. Oznacza to, &#380;e nie b&#281;d&#261; one dzia&#322;a&#263; dla:<\/p>\n<ul>\n<li>Finalnych metod<\/li>\n<li>Finalnych klas<\/li>\n<li>Konstruktor&oacute;w klas<\/li>\n<li>Klas inicjowanych przed klas&#261; do obs&#322;ugi plugin&oacute;w<\/li>\n<li>Wirtualnych typach<\/li>\n<li>Nie publicznych metodach<\/li>\n<li>Statycznych metodach<\/li>\n<\/ul>\n<h2>Podsumowanie<\/h2>\n<p>Stosowanie plugin&oacute;w przy pisaniu modu&#322;&oacute;w i modyfikacji funkcjonalno&#347;ci Magento 2 minimalizuje konflikty mi&#281;dzy rozszerzeniami. Kod pisany przy ich u&#380;yciu jest czytelniejszy i &#322;atwiejszy w utrzymaniu, poniewa&#380; nie zmieniamy samej klasy, lecz modyfikujemy zachowania funkcji. Je&#347;li dodamy do tego mo&#380;liwo&#347;&#263; ustawienia kolejno&#347;ci w jakiej pluginy b&#281;d&#261; si&#281; uruchamia&#263;, otrzymujemy bardzo przydatne narz&#281;dzie, kt&oacute;re warto stosowa&#263; we w&#322;asnych projektach opartych o Magento 2.<\/p>\n<\/body><\/html>\n","protected":false},"excerpt":{"rendered":"<p>\t\t\tJednym z najwi\u0119kszych problem\u00f3w w Magento 1 dla os\u00f3b, kt\u00f3re chcia\u0142y dostosowywa\u0107 ten system do swoich potrzeb by\u0142a konieczno\u015b\u0107 nadpisywania klas je\u015bli nie mo\u017cna by\u0142o zastosowa\u0107 event\u00f3w. Powodowa\u0142o to wiele problem\u00f3w, i konflikt\u00f3w w czasie gdy kilka modu\u0142\u00f3w pr\u00f3bowa\u0142o nadpisa\u0107 t\u0105 sam\u0105 klas\u0119 bazow\u0105.\t\t\t&#8230;<\/p>\n","protected":false},"author":10,"featured_media":2599,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[24],"tags":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v19.7.1 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Pluginy w Magento 2 - tworzenie i typy - Blog Aurora Creation<\/title>\n<meta name=\"description\" content=\"W Magento 2 wprowadzono system plugin\u00f3w. W jaki spos\u00f3b tworzy\u0107 pluginy i co mo\u017cesz dzi\u0119ki temu osi\u0105gn\u0105\u0107? Odpowied\u017a znajduje si\u0119 w artykule.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/auroracreation.pl\/blog\/tworzenie-pluginow-w-magento-2\/\" \/>\n<meta property=\"og:locale\" content=\"pl_PL\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Pluginy w Magento 2 - tworzenie i typy - Blog Aurora Creation\" \/>\n<meta property=\"og:description\" content=\"W Magento 2 wprowadzono system plugin\u00f3w. W jaki spos\u00f3b tworzy\u0107 pluginy i co mo\u017cesz dzi\u0119ki temu osi\u0105gn\u0105\u0107? Odpowied\u017a znajduje si\u0119 w artykule.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/auroracreation.pl\/blog\/tworzenie-pluginow-w-magento-2\/\" \/>\n<meta property=\"og:site_name\" content=\"Aurora Creation\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/auroracreation\/\" \/>\n<meta property=\"article:published_time\" content=\"2018-02-22T07:19:12+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2019-10-29T08:44:06+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/auroracreation.pl\/blog\/wp-content\/uploads\/2018\/02\/coding-699318_1920.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1920\" \/>\n\t<meta property=\"og:image:height\" content=\"1313\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Marek Milewski\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Marek Milewski\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minuty\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/auroracreation.pl\/blog\/tworzenie-pluginow-w-magento-2\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/auroracreation.pl\/blog\/tworzenie-pluginow-w-magento-2\/\"},\"author\":{\"name\":\"Marek Milewski\",\"@id\":\"https:\/\/auroracreation.pl\/blog\/#\/schema\/person\/65b3d8d2dde70f011c7eddf3c01cf5b2\"},\"headline\":\"Pluginy w Magento 2 &#8211; tworzenie i typy\",\"datePublished\":\"2018-02-22T07:19:12+00:00\",\"dateModified\":\"2019-10-29T08:44:06+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/auroracreation.pl\/blog\/tworzenie-pluginow-w-magento-2\/\"},\"wordCount\":614,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/auroracreation.pl\/blog\/#organization\"},\"articleSection\":[\"Magento Handbook\"],\"inLanguage\":\"pl-PL\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/auroracreation.pl\/blog\/tworzenie-pluginow-w-magento-2\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/auroracreation.pl\/blog\/tworzenie-pluginow-w-magento-2\/\",\"url\":\"https:\/\/auroracreation.pl\/blog\/tworzenie-pluginow-w-magento-2\/\",\"name\":\"Pluginy w Magento 2 - tworzenie i typy - Blog Aurora Creation\",\"isPartOf\":{\"@id\":\"https:\/\/auroracreation.pl\/blog\/#website\"},\"datePublished\":\"2018-02-22T07:19:12+00:00\",\"dateModified\":\"2019-10-29T08:44:06+00:00\",\"description\":\"W Magento 2 wprowadzono system plugin\u00f3w. W jaki spos\u00f3b tworzy\u0107 pluginy i co mo\u017cesz dzi\u0119ki temu osi\u0105gn\u0105\u0107? Odpowied\u017a znajduje si\u0119 w artykule.\",\"breadcrumb\":{\"@id\":\"https:\/\/auroracreation.pl\/blog\/tworzenie-pluginow-w-magento-2\/#breadcrumb\"},\"inLanguage\":\"pl-PL\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/auroracreation.pl\/blog\/tworzenie-pluginow-w-magento-2\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/auroracreation.pl\/blog\/tworzenie-pluginow-w-magento-2\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Strona g\u0142\u00f3wna\",\"item\":\"https:\/\/auroracreation.pl\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Pluginy w Magento 2 &#8211; tworzenie i typy\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/auroracreation.pl\/blog\/#website\",\"url\":\"https:\/\/auroracreation.pl\/blog\/\",\"name\":\"Aurora Creation\",\"description\":\"Blog o Magento i e-commerce - zarz\u0105dzanie projektami\",\"publisher\":{\"@id\":\"https:\/\/auroracreation.pl\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/auroracreation.pl\/blog\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"pl-PL\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/auroracreation.pl\/blog\/#organization\",\"name\":\"Aurora Creation\",\"url\":\"https:\/\/auroracreation.pl\/blog\/\",\"sameAs\":[\"https:\/\/www.facebook.com\/auroracreation\/\"],\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pl-PL\",\"@id\":\"https:\/\/auroracreation.pl\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/auroracreation.pl\/blog\/wp-content\/uploads\/2019\/07\/aurora-creation-logo.png\",\"contentUrl\":\"https:\/\/auroracreation.pl\/blog\/wp-content\/uploads\/2019\/07\/aurora-creation-logo.png\",\"width\":550,\"height\":130,\"caption\":\"Aurora Creation\"},\"image\":{\"@id\":\"https:\/\/auroracreation.pl\/blog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/auroracreation.pl\/blog\/#\/schema\/person\/65b3d8d2dde70f011c7eddf3c01cf5b2\",\"name\":\"Marek Milewski\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pl-PL\",\"@id\":\"https:\/\/auroracreation.pl\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/292d736fb69c98dd26ee833ccef9f940?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/292d736fb69c98dd26ee833ccef9f940?s=96&d=mm&r=g\",\"caption\":\"Marek Milewski\"},\"url\":\"https:\/\/auroracreation.pl\/blog\/author\/marek-milewski\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Pluginy w Magento 2 - tworzenie i typy - Blog Aurora Creation","description":"W Magento 2 wprowadzono system plugin\u00f3w. W jaki spos\u00f3b tworzy\u0107 pluginy i co mo\u017cesz dzi\u0119ki temu osi\u0105gn\u0105\u0107? Odpowied\u017a znajduje si\u0119 w artykule.","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:\/\/auroracreation.pl\/blog\/tworzenie-pluginow-w-magento-2\/","og_locale":"pl_PL","og_type":"article","og_title":"Pluginy w Magento 2 - tworzenie i typy - Blog Aurora Creation","og_description":"W Magento 2 wprowadzono system plugin\u00f3w. W jaki spos\u00f3b tworzy\u0107 pluginy i co mo\u017cesz dzi\u0119ki temu osi\u0105gn\u0105\u0107? Odpowied\u017a znajduje si\u0119 w artykule.","og_url":"https:\/\/auroracreation.pl\/blog\/tworzenie-pluginow-w-magento-2\/","og_site_name":"Aurora Creation","article_publisher":"https:\/\/www.facebook.com\/auroracreation\/","article_published_time":"2018-02-22T07:19:12+00:00","article_modified_time":"2019-10-29T08:44:06+00:00","og_image":[{"width":1920,"height":1313,"url":"https:\/\/auroracreation.pl\/blog\/wp-content\/uploads\/2018\/02\/coding-699318_1920.jpg","type":"image\/jpeg"}],"author":"Marek Milewski","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Marek Milewski","Est. reading time":"4 minuty"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/auroracreation.pl\/blog\/tworzenie-pluginow-w-magento-2\/#article","isPartOf":{"@id":"https:\/\/auroracreation.pl\/blog\/tworzenie-pluginow-w-magento-2\/"},"author":{"name":"Marek Milewski","@id":"https:\/\/auroracreation.pl\/blog\/#\/schema\/person\/65b3d8d2dde70f011c7eddf3c01cf5b2"},"headline":"Pluginy w Magento 2 &#8211; tworzenie i typy","datePublished":"2018-02-22T07:19:12+00:00","dateModified":"2019-10-29T08:44:06+00:00","mainEntityOfPage":{"@id":"https:\/\/auroracreation.pl\/blog\/tworzenie-pluginow-w-magento-2\/"},"wordCount":614,"commentCount":0,"publisher":{"@id":"https:\/\/auroracreation.pl\/blog\/#organization"},"articleSection":["Magento Handbook"],"inLanguage":"pl-PL","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/auroracreation.pl\/blog\/tworzenie-pluginow-w-magento-2\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/auroracreation.pl\/blog\/tworzenie-pluginow-w-magento-2\/","url":"https:\/\/auroracreation.pl\/blog\/tworzenie-pluginow-w-magento-2\/","name":"Pluginy w Magento 2 - tworzenie i typy - Blog Aurora Creation","isPartOf":{"@id":"https:\/\/auroracreation.pl\/blog\/#website"},"datePublished":"2018-02-22T07:19:12+00:00","dateModified":"2019-10-29T08:44:06+00:00","description":"W Magento 2 wprowadzono system plugin\u00f3w. W jaki spos\u00f3b tworzy\u0107 pluginy i co mo\u017cesz dzi\u0119ki temu osi\u0105gn\u0105\u0107? Odpowied\u017a znajduje si\u0119 w artykule.","breadcrumb":{"@id":"https:\/\/auroracreation.pl\/blog\/tworzenie-pluginow-w-magento-2\/#breadcrumb"},"inLanguage":"pl-PL","potentialAction":[{"@type":"ReadAction","target":["https:\/\/auroracreation.pl\/blog\/tworzenie-pluginow-w-magento-2\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/auroracreation.pl\/blog\/tworzenie-pluginow-w-magento-2\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Strona g\u0142\u00f3wna","item":"https:\/\/auroracreation.pl\/blog\/"},{"@type":"ListItem","position":2,"name":"Pluginy w Magento 2 &#8211; tworzenie i typy"}]},{"@type":"WebSite","@id":"https:\/\/auroracreation.pl\/blog\/#website","url":"https:\/\/auroracreation.pl\/blog\/","name":"Aurora Creation","description":"Blog o Magento i e-commerce - zarz\u0105dzanie projektami","publisher":{"@id":"https:\/\/auroracreation.pl\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/auroracreation.pl\/blog\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"pl-PL"},{"@type":"Organization","@id":"https:\/\/auroracreation.pl\/blog\/#organization","name":"Aurora Creation","url":"https:\/\/auroracreation.pl\/blog\/","sameAs":["https:\/\/www.facebook.com\/auroracreation\/"],"logo":{"@type":"ImageObject","inLanguage":"pl-PL","@id":"https:\/\/auroracreation.pl\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/auroracreation.pl\/blog\/wp-content\/uploads\/2019\/07\/aurora-creation-logo.png","contentUrl":"https:\/\/auroracreation.pl\/blog\/wp-content\/uploads\/2019\/07\/aurora-creation-logo.png","width":550,"height":130,"caption":"Aurora Creation"},"image":{"@id":"https:\/\/auroracreation.pl\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/auroracreation.pl\/blog\/#\/schema\/person\/65b3d8d2dde70f011c7eddf3c01cf5b2","name":"Marek Milewski","image":{"@type":"ImageObject","inLanguage":"pl-PL","@id":"https:\/\/auroracreation.pl\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/292d736fb69c98dd26ee833ccef9f940?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/292d736fb69c98dd26ee833ccef9f940?s=96&d=mm&r=g","caption":"Marek Milewski"},"url":"https:\/\/auroracreation.pl\/blog\/author\/marek-milewski\/"}]}},"_links":{"self":[{"href":"https:\/\/auroracreation.pl\/blog\/wp-json\/wp\/v2\/posts\/2081"}],"collection":[{"href":"https:\/\/auroracreation.pl\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/auroracreation.pl\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/auroracreation.pl\/blog\/wp-json\/wp\/v2\/users\/10"}],"replies":[{"embeddable":true,"href":"https:\/\/auroracreation.pl\/blog\/wp-json\/wp\/v2\/comments?post=2081"}],"version-history":[{"count":3,"href":"https:\/\/auroracreation.pl\/blog\/wp-json\/wp\/v2\/posts\/2081\/revisions"}],"predecessor-version":[{"id":2648,"href":"https:\/\/auroracreation.pl\/blog\/wp-json\/wp\/v2\/posts\/2081\/revisions\/2648"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/auroracreation.pl\/blog\/wp-json\/wp\/v2\/media\/2599"}],"wp:attachment":[{"href":"https:\/\/auroracreation.pl\/blog\/wp-json\/wp\/v2\/media?parent=2081"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/auroracreation.pl\/blog\/wp-json\/wp\/v2\/categories?post=2081"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/auroracreation.pl\/blog\/wp-json\/wp\/v2\/tags?post=2081"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}