Wie Kategorien aus der URL entfernen?

Im Backend sieht der Kategoriebaum so aus

  • Shopware
     - Deutsch
      - Hauptkategorie 1
        - Kategorie 11
          + Unterkategorie 12
      - Hauptkategorie 2
        - Kategorie 21
          + Unterkategorie 22
     + Englisch
     + Französisch

Hauptkategorie 1 und Hauptkategorie 2 möchte ich bei den Unterkategorien und bei den Artikeln nicht im URL Pfad haben.

Wäre das über eib Smarty Template in den SEO Router Einstellungen möglich?
Meine Quick’n’Dirty Lösungsidee wäre es die Strings einfach zu strippen.

Erster Fehlversuch:
{sCategoryPath articleID=$sArticle.id |strip:“Hauptkategorie 1”}/{$sArticle.id}/{$sArticle.name}

Oder wäre ein anderer Ansatz sowieso besser?

Mach es doch so, wie schon bei den Shopseiten mit einem Freitextfeld in den Kategorien > https://forum.shopware.com/discussion/43012/pfad-fuer-shopseiten-individuell-konfigurieren

Mit “|strip:” geht es meinesachtens nichtdas ist doch düe etwas anderes gedacht > http://www.smarty.net/docsv2/de/language.function.strip.tpl,
dann würde doch eher mit ersetzen “replace:” gehen nur da brauchst du ja ne ellenlange Abfrage um alles unterzubringen.

Uwe

Für jede Kategorie und jeden Artikel den Pfad manuell vergeben?

Hatte noch was dazugeschrieben, das Freitextfeld meines achtens dann nur für die Unterkategorien und den Rest muss mit der Anpassung der Seo-Url des Artikels erfolgen.

Weiß aber jetzt ach nicht wie man bei den Seo-Einstellungen der Artikel-Url auf das Freitextfeld der Kategorie in der sich der Artikel befindet zugreift.

Aber vieleicht braucht man das auch nicht da er automatisch den angepassten Pfad der Kategorie voranstellt.

Uwe

Du kannst auch sowas machen:

{assign var=‚tree‘ value={sCategoryPath categoryID=$sCategory.id}}{$tree|replace:‚Hauptkategorie 1‘:’’}

1 „Gefällt mir“

Stimmt strip entfernt (wie gewohnt) nur Whitespaces, bzw ersetzt diese gegen ein anderes Zeichen -> http://www.smarty.net/docsv2/de/language.modifier.strip.tpl Da hatte ich die Smarty Doku falsch interpretiert.
Ich versuche es mit replace mal. Es ist eine schlechte Quick’n’Dirty Lösung ja, erstmal. Das Handbuch für Entwickler ist vorbestellt…

Dein Vorschlag mit dem Freitextfeld wäre Dirty aber leider nicht Quick weil es in dem Fall zu viel Unterkategorien sind.

Am besten fände ich eine Checkbox “NICHT in IRL verwenden” aber ohne Plugin wird das IMHO nix.

Wie werden denn die “Kategorien” Shopware, Deutsch, Englisch, Französisch ausgefiltert?
Es scheint als würde der sCategoryPath erst aber der 3ten Ebene anfangen…

 

@Moritz Naczenski schrieb:

Du kannst auch sowas machen:

{assign var=‚tree‘ value={sCategoryPath categoryID=$sCategory.id}}{$tree|replace:‚Hauptkategorie 1‘:‚‘}

Hallo Moritz.

hat man hier nicht das Problem, wenn man sich in der  Hauptkategorie 1 befindet auch diese aus der URL entfernt wird und nur noch die Shop-Url übrig bleibt und dadurch keine Seo-Url erstellt wird?

Es geht ja um Artikel URLs im Eingangspost, da hast du ja eh keine Artikel, die der übergeordneten Kategorie direkt zugeordnet sind. Und selnbst wenn, hast du ja noch den Artikelnamen als URL. Komplett sieht es dann so aus:

{assign var=‚tree‘ value={sCategoryPath categoryID=$sCategory.id}}{$tree|replace:‚Hauptkategorie 1‘:’’}/{$sArticle.id}/{$sArticle.name}

Dann hast du alles wie vorher, nur dass wenn in der URL „Hauptkategorie 1“ ist, dieses entfernt wird.

@Kai23 schrieb:

Hauptkategorie 1 und Hauptkategorie 2 möchte ich bei den Unterkategorien und bei den Artikeln nicht im URL Pfad haben.

Hallo Moritz,

Kai23 hat doch aber auch die Unterkategoieren erwähnt bei den es auch nicht sein soll also sind doch die Seo-Url’s der Kategorien auch betroffen 

Da der Shop noch nicht live ist und keine History zu den Rewrites aufrecht erhalten werden muss leere ich die Tabelle s_core_rewrite_urls und baue dann den SEO-Index neu auf.

Ich habe es mal so als SEO-Urls Artikel Template probiert:

{assign var='tree' value={sCategoryPath articleID=$sArticle.id}}{$tree|replace:'Hauptkategorie 1':''}/{$sArticle.id}/{$sArticle.name}

Das Anlegen der Variable $tree scheint so nicht zu funktionieren selbst das hier

{assign var="tree" value={sCategoryPath articleID=$sArticle.id}}{$tree}/{$sArticle.id}/{$sArticle.name}

resuliert in der DB als ArtikelID/ArtikelName. Also $tree scheint leer zu sein.

Kommando zurück. 
So funktioniert es:

  1. SEO-Router Template ändern
  2. Cache für Shopware Konfiguration und Index SEO-Urls zu leeren. (Muss auch im Bearbeitungsmodus gemacht werden)
  3. Truncate s_core_rewrite_urls (Optional)
  4. SEO-Index neu aufbauen

Ich vermute es war noch das Template von Moritz im Cache das wegen einem falschen Parameter nicht funtioniert:
{assign var=‘tree’ value={sCategoryPath categoryID=$sCategory.id }}{$tree|replace:‘Hauptkategorie 1’:’’}

Statt categoryID=$sCategory.id muss bei dem Artikel Template articleID=$sArticle.id übergeben werden.

1 „Gefällt mir“

Hier das vorerst endgültige Template für die Artikel:

{assign var='tree' value={sCategoryPath articleID=$sArticle.id}}{$tree|regex_replace:'/(Hauptkategorie 1|Hauptkategorie 2)/':''}/{$sArticle.id}/{$sArticle.name}

Wichtig ist das man die richtige Kategoriebezeichnung nimmt, nicht die durch slugify bereits gesäuberten.