Ich bin ja nun ein Verfechter von System-Konfigurationen über Konfigurationsdateien, statt mir das mühsam im Verwaltungsbereich zusammen zu klicken… Und da die Shopware AG dankenswerter Weise, auf meinen Vorschlag hin, eine alternative Konfigurationsmöglichkeit geschaffen hat (über die „Aplication.php“), habe ich das mittlerweile ausgiebig verwendet. Da das nicht ganz trivial ist, will ich das mal hier kurz erläutern, wie man die notwendigen „Host“-Einträge und das zu verwendende Template Shopware darüber mitteilt. (Gerade bei Shop-Umzügen ist das sehr bequem.) Ich habe sogar einen Weg gefunden, wie man die Host-Definition automatisch machen kann, das notwendige Denken ist damit auf ein Minimum reduziert Der Anfang der „Aplication.php“ ist wie folgt zu ändern: $host=$\_SERVER['HTTP\_HOST']; $url=$\_SERVER['DOCUMENT\_ROOT']; $basePath=str\_replace(DIRECTORY\_SEPARATOR,'/',$this-\>DocPath()); //For Windows only... $basePathReal=str\_replace($url,$host.'/',$basePath); include($basePath.'config.php'); $template='mein\_template'; return array( 'db' =\> array( 'username' =\> $DB\_USER, 'password' =\> $DB\_PASSWORD, 'dbname' =\> $DB\_DATABASE, 'host' =\> $DB\_HOST ), 'config'=\>array( 'TemplatePath'=\>$template, 'host' =\> $host, 'hostOriginal' =\> $host, 'basePath' =\> $basePathReal, ), 'shop'=\>array( 'options' =\> array( 'host' =\> $host, 'template' =\> $template, ), 'config' =\> array( 'data' =\> array( 'basePath' =\> $basePathReal, 'host' =\> $host, 'hostOriginal' =\> $host )), ),
(‚mein_template‘ ist natürlich der Name des zu nutzenden Templates.) Aber nicht nur solche einfachen Parameter kann man ändern, sondern im Grunde (fast) alles, was im Admin konfigurierbar ist (und mehr!) Ich verwende z.B. diese Definitionen, um Bilderpfade oder andere Parameter zu ändern… Das erspart mir bei Kundensystemen eine Menge an manuellem Konfigurationsaufwand. 'config'=\>array( 'ArticleImages'=\>$articleimages, 'TemplatePath'=\>$template, 'host' =\> $host, 'hostOriginal' =\> $host, 'basePath' =\> $basePathReal, 'Banner'=\>$bannerimages, 'SupplierImages'=\>$supplierimages, 'CmsImages'=\>$cmsimages, ), 'shop'=\>array( 'options' =\> array( 'host' =\> $host, 'template' =\> $template, ), 'config' =\> array( 'data' =\> array( 'sMAXCROSSSIMILAR' =\> SLIDER\_ARTICLE\_LIMITS, 'sSIMILARLIMIT' =\> SLIDER\_ARTICLE\_LIMITS, 'sMAXCROSSALSOBOUGHT' =\> SLIDER\_ARTICLE\_LIMITS, 'similarlimit' =\> SLIDER\_ARTICLE\_LIMITS, 'maxcrosssimilar' =\> SLIDER\_ARTICLE\_LIMITS, 'maxcrossalsobought' =\> SLIDER\_ARTICLE\_LIMITS, 'shopName' =\> ucwords($template), 'basePath' =\> $basePathReal, 'host' =\> $host, 'hostOriginal' =\> $host )), ),
Ein weiterer Vorteil dieser Art der Konfiguration ist, dass man sehr einfach ein (z.B. URL-basiertes) Datenbank- und/oder Template-Switching implementieren kann… Ich nutze das, um mit einer Shopware-Installation alle Kundentemplates entwickeln zu können, mit eigener Datenbank, Bildern, Caches usw… Das definieren anderer Bildpfade funktioniert im Frontend prima. Im Backend allerdings nicht, weil da die Pfade teilweise „hart“ vorgegeben sind, und nicht aus der Konfiguration ermittelt werden. Ich hoffe, dass das sich mit der Version 4 ändern wird, im TRAC habe ich das jedenfalls schon erwähnt http://trac.shopware.de/trac/ticket/100523 …
Gibt es so eine Möglichkeit auch in der Version 4.03? Besitze leider nur die CE Version. Habe versucht die Datei “config.php” im Rootverzeichnis anzupassen. switch ($\_SERVER['SERVER\_NAME']) { case "localhost": return array( 'db' =\> array( 'username' =\> 'username', 'password' =\> 'pw', 'host' =\> 'localhost', 'port' =\> '3306', 'dbname' =\> 'database', ), 'shop'=\>array( 'options' =\> array( 'host' =\> 'localhost' ), 'config' =\> array('data'=\>array( 'hostOriginal' =\> 'localhost', 'basePath' =\> '/shop/', )), ), 'phpSettings' =\> array( 'error\_reporting' =\> E\_ALL | E\_STRICT, 'display\_errors' =\> 1, 'date.timezone' =\> 'Europe/Berlin', 'zend.ze1\_compatibility\_mode' =\> 0 ), 'config'=\>array( 'host' =\> 'shop.wolf-gruppe.dev', 'hostOriginal' =\> 'localhost', 'basePath'=\>'/shop/', ), ); break; }
Danke und Grüße David