Länder per Datenbank erweitern

Grundlegend verfügt Shopware über eine relativ übersichtliche Anzahl an Ländern, welche zum Beispiel für Steuersätze, Kundenauswahl oder zur Festlegung von Versandkosten genutzt werden. Hier stößt ein Shop-Betreiber also vielleicht schnell an seine Grenzen. Darum zeigen wir Ihnen, wie man die Auswahl an Ländern per Datenbank erweitern kann.

Neue Länder via Shopware-Backend

Sie möchten Ihre Auswahl an Ländern also erweitern. Dann nutzen Sie am besten den Weg über den Punkt „Länder“ (Grundeinstellungen -> Shopeinstellungen -> Länder) im Backend. Hier können Gebiete, Länder und ISO-Codes eingepflegt werden.

Wollen Sie beispielsweise alle europäischen Länder hinzufügen, kann es darüber aber recht mühsam sein. Denn jede Änderung muss einzeln gespeichert und auch für neu aufgesetzte Shops immer wieder gemacht werden. Ein einfacherer und wiederverwendbarer Weg bietet sich über die Datenbank an.

Länder per Datenbank hinzufügen

Daten zusammentragen

Zunächst sollten Sie sich die benötigten Attribute der gewünschten Länder in einer Liste zusammenstellen. Folgende Grundinformationen werden von Shopware benötigt:

  • der deutsche Ländername
  • der internationale Ländername
  • der zweistellige ISO-Code (ISO 3166 ALPHA-2)
  • der dreistellige ISO-Code (ISO 3166 ALPHA-3)

Hilfreich hierbei ist die englische „ISO-3166-1-Kodierliste“ auf Wikipedia, in der alle Staaten der Welt aufgeführt sind. Dort bekommen Sie auch gleich den internationalen Ländernamen. Am Beispiel von Bulgarien sieht es wie folgt aus:

  • Bulgarien
  • Bulgaria
  • BG
  • BGR

Struktur der Tabelle

Als nächstes stellen Sie eine Verbindung zu Ihrer Shopware-Datenbank her. Ein verbreitetes Tool ist hier der bekannte phpMyAdmin, der eigentlich von allen großen Webhosting-Providern verwendet wird.

Anmerkung: Vor jeder Datenbank-Bearbeitung sollte ein Datenbank-Backup angelegt werden.

Alle Länderinformationen sind in der Tabelle „s_core_countries“ gespeichert. Für die grundlegende Anlage der Länder werden folgende Spalten benötigt:

  • countryname (deutscher Ländername)
  • countryiso (zweistelliger ISO-Code)
  • areaID (Shopware-Ländergruppe)
  • countryen (internationaler Ländername)
  • iso3 (dreistelliger ISO-Code)

Die „areaID“ dient zur Zuordnung des Landes in eine Shopware-Ländergruppe. Standardmäßig sind „1“ für Deutschland, „2“ für Welt und „3“ für Europa angelegt. Über alle nicht aufgeführten Spalten können weitere Attribute wie Aktivierung, Steuersätze etc. hinterlegt werden.

Query zum Einfügen erstellen

Nun können wir ein INSERT INTO Query bauen. Das Template hierfür sieht wie folgt aus:

INSERT INTO `s_core_countries` (`id`, `countryname`, `countryiso`, `areaID`, `countryen`, `position`, `notice`, `shippingfree`, `taxfree`, `taxfree_ustid`, `taxfree_ustid_checked`, `active`, `iso3`, `display_state_in_registration`, `force_state_in_registration`) VALUES (NULL, NULL, NULL, 0, NULL, 0, '', 0, 0, 0, 0, 0, NULL, 0, 0)

Für die blanko VALUES setzen wir jetzt die Daten von Bulgarien (Ländergruppe Europa) ein:

INSERT INTO `s_core_countries` (`id`, `countryname`, `countryiso`, `areaID`, `countryen`, `position`, `notice`, `shippingfree`, `taxfree`, `taxfree_ustid`, `taxfree_ustid_checked`, `active`, `iso3`, `display_state_in_registration`, `force_state_in_registration`) VALUES
(NULL, 'Bulgarien', 'BG', 3, 'BULGARIA', 0, '', 0, 0, 0, 0, 0, 'BGR', 0, 0)

Danach ergänzen wir die Werte für alle restlichen Länder Europas (VALUES per Komma getrennt):

INSERT INTO `s_core_countries` (`id`, `countryname`, `countryiso`, `areaID`, `countryen`, `position`, `notice`, `shippingfree`, `taxfree`, `taxfree_ustid`, `taxfree_ustid_checked`, `active`, `iso3`, `display_state_in_registration`, `force_state_in_registration`) VALUES
(NULL, 'Bulgarien', 'BG', 3, 'BULGARIA', 0, '', 0, 0, 0, 0, 0, 'BGR', 0, 0),
(NULL, 'Estland', 'EE', 3, 'ESTONIA', 0, '', 0, 0, 0, 0, 0, 'EST', 0, 0),
(NULL, 'Kroatien', 'HR', 3, 'KROATIA', 0, '', 0, 0, 0, 0, 0, 'HRV', 0, 0),
(NULL, 'Lettland', 'LV', 3, 'LATVIA', 0, '', 0, 0, 0, 0, 0, 'LVA', 0, 0),
(NULL, 'Litauen', 'LT', 3, 'LITHUANIA', 0, '', 0, 0, 0, 0, 0, 'LTU', 0, 0),
(NULL, 'Malta', 'ML', 3, 'MALTA', 0, '', 0, 0, 0, 0, 0, 'MLT', 0, 0),
(NULL, 'Slowenien', 'SI', 3, 'SLOVENIA', 0, '', 0, 0, 0, 0, 0, 'SVN', 0, 0),
(NULL, 'Republik Zypern', 'CY', 3, 'CYPRUS', 0, '', 0, 0, 0, 0, 0, 'CYP', 0, 0),
(NULL, 'San Marino', 'SM', 3, 'SAN MARINO', 0, '', 0, 0, 0, 0, 0, 'SMR', 0, 0),
(NULL, 'Vatikanstadt', 'VA', 3, 'VATICAN CITY', 0, '', 0, 0, 0, 0, 0, 'VAT', 0, 0),
(NULL, 'Albanien', 'AL', 3, 'ALBANIA', 0, '', 0, 0, 0, 0, 0, 'ALB', 0, 0),
(NULL, 'Andorra', 'AD', 3, 'ANDORRA', 0, '', 0, 0, 0, 0, 0, 'AND', 0, 0),
(NULL, 'Bosnien und Herzegowina', 'BA', 3, 'BOSNIA AND HERZEGOVINA', 0, '', 0, 0, 0, 0, 0, 'BIH', 0, 0),
(NULL, 'Monaco', 'MC', 3, 'MONACO', 0, '', 0, 0, 0, 0, 0, 'MCO', 0, 0),
(NULL, 'Mazedonien', 'MK', 3, 'MACEDONIA', 0, '', 0, 0, 0, 0, 0, 'MKD', 0, 0),
(NULL, 'Moldawien', 'MD', 3, 'MOLDAVIA', 0, '', 0, 0, 0, 0, 0, 'MDA', 0, 0),
(NULL, 'Ukraine', 'UA', 3, 'UKRAINE', 0, '', 0, 0, 0, 0, 0, 'UKR', 0, 0),
(NULL, 'Weißrussland', 'BY', 3, 'BELARUS', 0, '', 0, 0, 0, 0, 0, 'BLR', 0, 0),
(NULL, 'Russland', 'RU', 3, 'RUSSIA', 0, '', 0, 0, 0, 0, 0, 'RUS', 0, 0),
(NULL, 'Serbien', 'RS', 3, 'SERBIA', 0, '', 0, 0, 0, 0, 0, 'SRB', 0, 0),
(NULL, 'Montenegro', 'ME', 3, 'MONTENEGRO', 0, '', 0, 0, 0, 0, 0, 'MNE', 0, 0);

Falls das Land gleich aktiviert werden soll, muss in der Spalte „active“ eine „1“ gesetzt werden. In diesem Beispiel sind die Länder nicht aktiviert.

Im phpMyAdmin-Panel können wir dieses Query nun in der Tabelle „s_core_countries“ ausführen.

Jetzt sind alle Länder eingefügt.

Wenn Sie noch Fragen zu diesem Thema haben, schreiben Sie uns gern ein Kommentar!