{"id":1856,"date":"2013-08-15T09:16:17","date_gmt":"2013-08-15T07:16:17","guid":{"rendered":"http:\/\/www.commercers.com\/blog\/?p=1856"},"modified":"2013-08-15T12:43:46","modified_gmt":"2013-08-15T10:43:46","slug":"magento-modul-ausgabe-ueber-xml-fuer-website-deaktivieren","status":"publish","type":"post","link":"https:\/\/www.commercers.com\/blog\/magento-modul-ausgabe-ueber-xml-fuer-website-deaktivieren\/","title":{"rendered":"Magento &#8211; Modul Ausgabe \u00fcber XML f\u00fcr Website deaktivieren"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" class=\"alignleft size-medium wp-image-1860\" alt=\"Unbenannt\" src=\"http:\/\/www.commercers.com\/blog\/wp-content\/uploads\/2013\/08\/Unbenannt-300x291.jpg\" width=\"300\" height=\"291\" srcset=\"https:\/\/www.commercers.com\/blog\/wp-content\/uploads\/2013\/08\/Unbenannt-300x291.jpg 300w, https:\/\/www.commercers.com\/blog\/wp-content\/uploads\/2013\/08\/Unbenannt.jpg 449w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/>Es kann immer mal wieder vorkommen, dass es Probleme mit Extensions gibt, die z.B. nur f\u00fcr eine Domain lizensiert sind. \u00dcber das Backend ist die Extension dann zwar nur f\u00fcr diese eine Website \/ den einen Shop mit der Domain aktiviert und f\u00fcr alle anderen deaktiviert aber dennoch wirkt sich die Extension auf die anderen Shops aus und behindert oder verhindert die Anzeige im Frontend.<\/p>\n<p>Anders auch Extensions die von Haus aus de-\/aktiviert sind und es keine Konfigurationsm\u00f6glichkeit gibt, um zu definieren in welchem Shop bzw. auf welcher Website die Extension aktiviert sein soll und wo nicht.<\/p>\n<p>Ich dachte mir, dass es doch eine M\u00f6glichkeit geben muss direkt in der Modul<!--more--> XML im Ordner etc\/modules in der jeweiligen extension.xml etwas einzubauen, dass es hei\u00dft &#8220;wenn Website X, dann aktiv; wenn Website Y dann inaktiv&#8221;.<\/p>\n<p>Nach etwas <a title=\"Modulausgabe f\u00fcr Magento deaktivieren\" href=\"http:\/\/stackoverflow.com\/questions\/5962066\/magento-disable-module-for-any-particular-store\" target=\"_blank\">Recherche<\/a> und \u00dcberlegung fand ich die L\u00f6sung:<\/p>\n<p>1. Wird die Config.php aus dem Ordner app\/code\/core\/Mage\/Core\/Model in den Ordner app\/code\/local\/Mage\/Core\/Model kopiert und dort dann ca. ab Zeile 850 nach<\/p>\n<pre class=\"lang:default decode:true\">        $modules = $this-&gt;getNode('modules')-&gt;children();\r\n        foreach ($modules as $modName=&gt;$module) {\r\n            if ($module-&gt;is('active')) {<\/pre>\n<p>gesucht.<\/p>\n<p>Dort wird dann<\/p>\n<pre class=\"lang:default decode:true\">            \/\/ Website Restriktion Start\r\n            if((bool)$module-&gt;restricted) {\r\n                $restricted = explode(',', (string)$module-&gt;restricted);\r\n                $runCode = (isset($_SERVER['MAGE_RUN_CODE']) ? $_SERVER['MAGE_RUN_CODE'] : 'default');\r\n                if(in_array($runCode, $restricted)) {\r\n                    continue;\r\n                }\r\n            }\r\n            \/\/ Website Restriktion Ende<\/pre>\n<p>eingef\u00fcgt, so dass der gesamte Code dann so aussieht:<\/p>\n<pre class=\"lang:default decode:true\">    public function loadModulesConfiguration($fileName, $mergeToObject = null, $mergeModel=null)\r\n    {\r\n        $disableLocalModules    = !$this-&gt;_canUseLocalModules();\r\n\r\n        if ($mergeToObject === null) {\r\n            $mergeToObject = clone $this-&gt;_prototype;\r\n            $mergeToObject-&gt;loadString('&lt;config\/&gt;');\r\n        }\r\n        if ($mergeModel === null) {\r\n            $mergeModel = clone $this-&gt;_prototype;\r\n        }\r\n        $modules = $this-&gt;getNode('modules')-&gt;children();\r\n        foreach ($modules as $modName=&gt;$module) {\r\n            if ($module-&gt;is('active')) {\r\n            \/\/ Website Restriktion Start\r\n            if((bool)$module-&gt;restricted) {\r\n                $restricted = explode(',', (string)$module-&gt;restricted);\r\n                $runCode = (isset($_SERVER['MAGE_RUN_CODE']) ? $_SERVER['MAGE_RUN_CODE'] : 'default');\r\n                if(in_array($runCode, $restricted)) {\r\n                    continue;\r\n                }\r\n            }\r\n            \/\/ Website Restriktion Ende            \r\n                if ($disableLocalModules &amp;&amp; ('local' === (string)$module-&gt;codePool)) {\r\n                    continue;\r\n                }\r\n                $configFile = $this-&gt;getModuleDir('etc', $modName).DS.$fileName;\r\n                if ($mergeModel-&gt;loadFile($configFile)) {\r\n                    $mergeToObject-&gt;extend($mergeModel, true);\r\n                }\r\n            }\r\n        }\r\n        return $mergeToObject;\r\n    }<\/pre>\n<p>Mit diesen Zeilen wird Magento angewiesen darauf zu achten, ob in der Modul XML eine Restriktion definiert wird oder nicht.<\/p>\n<p>Um nun eine solche zu setzen, \u00f6ffnet man die entsprechende [Modul].xml und f\u00fcgt vor den &lt;codePool&gt; die Zeile<\/p>\n<pre class=\"lang:default decode:true\">&lt;restricted&gt;[der code des auszuschlie\u00dfenden Shops, kann mit Komma getrennt werden wenn mehrere Shops]&lt;\/restricted&gt;<\/pre>\n<p>Da man bei der gesamten Problematik davon ausgehen kann, dass es sich um einen Multistore handelt, also mehrere Websites aus einem Magento Backend ist es noch wichtig, dass die Aufteilung der Shops durch die $_SERVER Variable &#8220;MAGE_RUN_CODE&#8221; definiert wird. Dies findet man z.B. in der index.php im Rootverzeichnis.<\/p>\n<pre class=\"lang:default decode:true\">switch($_SERVER['HTTP_HOST']) {\r\n\r\n\/\/ Shop 1\r\n\r\ncase 'shop1.de';\r\ncase 'www.shop1.de';\r\n\r\n$_SERVER[\"MAGE_RUN_CODE\"] = \"shop1\";\r\n\r\n$_SERVER[\"MAGE_RUN_TYPE\"] = \"website\";\r\n\r\nbreak; \r\n\r\n\/\/ Shop2 (default store)\r\n\r\ndefault:\r\n\r\n$_SERVER[\"MAGE_RUN_CODE\"] = \"shop2\";\r\n\r\n$_SERVER[\"MAGE_RUN_TYPE\"] = \"website\";\r\n\r\nbreak;<\/pre>\n<p>Man w\u00fcrde also hier z.B. &#8220;shop1&#8221; als restricted einsetzen, wenn hier das Modul nicht aktiv sein soll.<\/p>\n<p>Wichtig: Cache l\u00f6schen. Am besten die sichere Methode und den Ordner cache im Verzeichnis var umbenennen und\/oder l\u00f6schen. Magento legt automatisch einen neuen an.<\/p>\n<p>Genutzt in Magento Version 1.4.1.1 Kommentare? Erg\u00e4nzungen? Hinweise? Gerne!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Es kann immer mal wieder vorkommen, dass es Probleme mit Extensions gibt, die z.B. nur f\u00fcr eine Domain lizensiert sind. \u00dcber das Backend ist die Extension dann zwar nur f\u00fcr diese eine Website \/ den einen Shop mit der Domain aktiviert und f\u00fcr alle anderen deaktiviert aber dennoch wirkt sich die Extension auf die anderen&#8230;<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[1],"tags":[1163,1162],"class_list":["post-1856","post","type-post","status-publish","format-standard","hentry","category-allgemein","tag-extension-fuer-shop-deaktivieren","tag-modul-fuer-bestimmte-website-deaktivieren"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.commercers.com\/blog\/wp-json\/wp\/v2\/posts\/1856","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.commercers.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.commercers.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.commercers.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.commercers.com\/blog\/wp-json\/wp\/v2\/comments?post=1856"}],"version-history":[{"count":0,"href":"https:\/\/www.commercers.com\/blog\/wp-json\/wp\/v2\/posts\/1856\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.commercers.com\/blog\/wp-json\/wp\/v2\/media?parent=1856"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.commercers.com\/blog\/wp-json\/wp\/v2\/categories?post=1856"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.commercers.com\/blog\/wp-json\/wp\/v2\/tags?post=1856"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}