Ich migriere meinen Magento 1.9-Store auf Magento 2.1.
Ich bin noch ziemlich neu in Magento 2.1 und ich kann einige Dinge nicht finden.
Gibt es Richtlinien, wie der Textspeicher-Umschalter durch Flags ersetzt werden kann?
Ich hatte einige Zeit mit dem gleichen Problem zu kämpfen und konnte es schließlich lösen. Vielleicht haben Sie es bereits gelöst, aber es kann definitiv für andere nützlich sein.
Den benötigten Code finden Sie am Ende dieses Beitrags.
/var/www/magento/app/design/frontend/{namespace}/{name}/Magento_Store/templates/switch
language.phtml
und fügen Sie ihn diesem Ordner hinzu/var/www/magento/app/code/{theme_dir}/Magento_Theme/view/frontend/layout/default_head_blocks.xml
. /var/www/magento/vendor/magento/module-theme/view/frontend/layout/default_head_blocks.xml
<css src="css/languageSwitcher.css"/>
languageSwitcher.css
und fügen Sie ihn dem Ordner hinzu/var/www/magento/app/design/frontend/{namespace}/{name}/web/css
/var/www/magento/app/design/frontend/{namespace}/{name}/web/images/flags
und Flags mit Namenskonvention hinzufügen, flag_{country_ID}.png
z flag_en.png
. Alle Bilder müssen die gleiche Auflösung haben.Zunächst müssen Sie herausfinden, welche Vorlage für den Sprachumschalter verantwortlich ist. Gehen Sie daher zur Admin-Site Ihrer Magento-Installation und gehen Sie zu Store > Configuration > Advanced > Developer > Debug > Enabled Template Path Hints for Storefront > Yes
. Laden Sie nun die Seite Ihres Shops neu und Sie werden viele rote Kästchen mit Namen darin sehen. Das Feld, das den Dropdown-Sprachumschalter enthält, hat einen Pfad wie:
/var/www/magento/vendor/magento/module-store/view/frontend/templates/switch/languages.phtml
.
Sie möchten lediglich eine eigene Vorlage erstellen und die gewünschten Änderungen hinzufügen. Ändern Sie daher NIEMALS die oben genannte Vorlage. Es ist nicht sicher, da jedes Magento-Update die Änderungen überschreibt (und möglicherweise auch etwas anderes ...). Der empfohlene Weg ist:
Kopieren Sie die Vorlage in den Pfad:
/var/www/magento/app/design/frontend/{namespace}/{name}/{vendor_name}_{module_name}/templates/{path_to_template}/template.phtml
.
{Namespace} = der Namespace des Moduls (z. B. Ihre Firma / Domain / ...)
{Name} = Name des Moduls
{Anbietername} = Name des Anbieters, der die Vorlage bereitgestellt hat
{Modulname} = das Modul, in dem sich die Vorlage befindet liegt
{path_to_template} = der Pfad rechts vontemplates
In unserem Fall ergibt sich Folgendes:
/var/www/magento/app/design/frontend/{namespace}/{name}/Magento_Store/templates/switch/languages.phtml
Dies sollte jetzt bereits funktionieren. Wenn Sie Änderungen an der Kopie vornehmen, sollten diese auf der Site angezeigt werden.
CSS
In meiner Lösung habe ich auch eine CSS- Datei verwendet, um die Vorlage zu formatieren. Deshalb müssen wir den Pfad zum hinzufügen default_head_blocks.xml
. Die Standarddatei liegt inapp/code/Magento/Theme/view/frontend/layout/default_head_blocks.xml
Um Änderungen an dieser Datei vorzunehmen, kopieren Sie sie in den entsprechenden Ordner und fügen Sie den Pfad zur CSS-Datei hinzu. Pfad:
/var/www/magento/app/code/{theme_dir}/{Magento_Theme}/view/frontend/layout
Darin können Sie auch zusätzliche * .js-Dateien und andere Quellen hinzufügen. Fügen Sie diese Zeile am Ende von default_head_blocks.xml hinzu (jedoch innerhalb der <head>
Tags) : <css src="css/languageSwitcher.css"/>
.
Navigieren Sie zu dem Ordner /var/www/magento/app/design/frontend/{namespace}/{name}/web/css
und fügen Sie den hinzu languageSwitcher.css
.
Gehen Sie als Nächstes .../web/images
zum Ordner und erstellen Sie ihn flags
. Fügen Sie dem Ordner Bilder mit der Namenskonvention hinzu : flag_{country_ID}.png
. ZB für Englisch flag_en.png
. Sie müssen alle die gleiche Auflösung haben.
Languages.phtml
<?php
/**
* Copyright © 2016 Magento. All rights reserved.
* See COPYING.txt for license details.
*/
// @codingStandardsIgnoreFile
?>
<?php
/**
* Language switcher template
*/
?>
<?php if(count($this->getStores())>1): ?>
<div class="langs-wrapper">
<?php foreach ($this->getStores() as $_lang): ?>
<?php if ($_lang->getCode() != 'default'): ?>
<a class="lang-flag" href="<?php echo $this->getCurrentUrl() . '?___store=' . $_lang->getCode();?>"><img src="<?php echo $this->getViewFileUrl('images/flags/flag_' . $_lang->getCode() . '.png');?>" alt="<?php echo 'could not find image for ' . $_lang->getName() ?>"/></a>
<?php endif;?>
<?php endforeach;?>
</div>
<?php endif;?>
languageSwitcher.css
.langs-wrapper {
height: 15px;
}
.lang-flag {
width: 55px;
height: 32.5px;
float: left;
margin-left: 10px;
border: 1px solid transparent;
}
.lang-flag:hover {
border: 2.5px solid #FFF;
}
Erstellen Sie eine Datei in Ihrem Thema /app/design/frontend/Vendor/Theme/Magento_Store/templates/switch/languages.phtml
<?php
/**
* Language switcher template
*/
if (count($this->getStores())) { ?>
<div class="langs-wrapper">
<?php foreach ($this->getStores() as $_lang) { ?>
<a class="lang-flag" href="#" data-post='<?php echo $block->getTargetStorePostData($_lang); ?>'><img src="<?php echo $this->getViewFileUrl('images/flags/' . $_lang->getCode() . '.png');?>" alt="<?php echo $_lang->getName(); ?>" /></a>
<?php } ?>
</div>
<?php
}
Dadurch bleibt der Sprachwechsel während einer Sitzung bestehen, anstatt nur die Sprache auf der jeweiligen Seite zu wechseln und sie als nächstes zu verwerfen.