Inhalte aufrufen

Profilbild
- - - - -

Language-Selector in Multishop-Umgebung (nach Sprachen geteilt) realisieren


  • Bitte melden Sie sich an, um eine Antwort zu verfassen.
3 Antworten zu diesem Thema

#1 kusnez

kusnez

    V.I.P

  • Members
  • 2779 Beiträge

Geschrieben: 01 October 2023 - 09:58

Hallo,
 
aktuell funktioniert der Sprachumschalter (Language-Selector) nur innerhalb einer Domain.
 
In meiner Konfiguration ist der Multishop nach Sprachen geteilt:
Domain.de --> Deutsch (Language ID=1)
Domain.com --> Englisch (Language ID=2)
 
Wie kann ich vom deutschen Shop auf die entsprechende URL im englischen Shop zugreifen (und umgekehrt)?

M.f.G.
E. Kusnezov
www.stahldeko-shop.de
www.stahldeko-shop.com


#2 stefanmueller

stefanmueller

    SmartStore AG

  • Administrators
  • 462 Beiträge

Geschrieben: 10 October 2023 - 10:58

Ich meine, das wird so nicht out-of-the-box unterstützt, ich würde es an deiner Stelle mit einem Workaround über den Menu-Builder probieren.

 

Du baust dir selbst ein Menulink im Deutschen Shop mit einer englischen Flagge, die stumpf auf deinen Englischen Shop verlinkt, und das gleiche nochmal, aber anders rum im Englischen Shop, also einen weiteren Menulink mit deutscher Flagge, die auf den deutschen Shop zeigt.

 

Der Menu Builder ist bei jedem Smartstore-Shop dabei (ab Community Edition) und im Admin zu finden unter https:// ... /admin/menu/list/

 

Screenshot:

 

Angehängte Datei  menulinkbearbeiten.jpg   65.66K   0 Anzahl Downloads


Stefan


#3 kusnez

kusnez

    V.I.P

  • Members
  • 2779 Beiträge

Geschrieben: 10 October 2023 - 13:28

 

 

das wird so nicht out-of-the-box unterstützt

habe bereits über die TopBar-View-Erweiterung realisiert.

Dank an Herrn Schmerge, hilfsbereite Smartstore-Entwickler und wieder mal an ChatGPT:

 

@using Microsoft.EntityFrameworkCore;
    @{
    if (Request?.RouteValues?.TryGetValueAs<Smartstore.Core.Seo.UrlRecord>("__UrlRecord", out var urlRecord) ?? false)
    {
        var otherSlug = await CommonServices.DbContext.UrlRecords
            .AsNoTracking()
            .Where(x => x.EntityId == urlRecord.EntityId && x.EntityName == urlRecord.EntityName && x.IsActive && x.Id != urlRecord.Id)
            .OrderByDescending(x => x.Id)
            .Select(x => x.Slug)
            .FirstOrDefaultAsync();
        if (!string.IsNullOrEmpty(otherSlug))
        {
            if (urlRecord.LanguageId == 0)  // Für Deutsch
            {
                <div class="dropdown language-selector"> <a class="menubar-link" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" href="#">
        <span><img src="/images/flags/de.png" alt="in deutscher Sprache"></span> <i class="fa fa-angle-down"></i>
    </a>
    <div class="dropdown-menu" aria-labelledby="dLabel"> <a href="#" title="in Deutsch (DE)"
            class="dropdown-item disabled" data-selected="true" data-abbreviation="Deutsch"> <img src="/images/flags/de.png"
                alt="in deutscher Sprache">
            <span>Deutsch</span> </a>
        <a href="https://www.domain.com/@otherSlug/" title="Link to @otherSlug in English language." class="dropdown-item"
            data-selected="false" data-abbreviation="English"> <img src="/images/flags/us.png"
                alt="Link to @otherSlug in English (EN)."> <span>English</span> </a> </div>
</div>
            }
            else if (urlRecord.LanguageId == 2)  // Für Englisch
            {
                <div class="dropdown language-selector"> <a class="menubar-link" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" href="#">
        <span><img src="/images/flags/us.png" alt="in English language"></span> <i class="fa fa-angle-down"></i>
    </a>
    <div class="dropdown-menu" aria-labelledby="dLabel"> <a href="#" title="in English (EN)."
            class="dropdown-item disabled" data-selected="true" data-abbreviation="English"> <img src="/images/flags/us.png"
                alt="in English language.">
            <span>English</span> </a>
        <a href="https://www.domain.de/@otherSlug/" title="@otherSlug in Deutsch (DE)" class="dropdown-item" data-selected="false"
            data-abbreviation="Deutsch"> <img src="/images/flags/de.png" alt="@otherSlug in deutscher Sprache">
            <span>Deutsch</span> </a> </div>
</div>
            }
        }
    }
}


M.f.G.
E. Kusnezov
www.stahldeko-shop.de
www.stahldeko-shop.com


#4 stefanmueller

stefanmueller

    SmartStore AG

  • Administrators
  • 462 Beiträge

Geschrieben: 16 October 2023 - 12:15

Du hast dann aber ein individuelles Stück Code, das bei jedem Update übertragen und auch mal vielleicht mitaktualisiert werden muss, ob sich das für deinen Use Case lohnt?


Stefan