Trade Republic - Provisionsfrei Aktien handeln
Neuigkeiten
  • Die modified eCommerce Shopsoftware ist kostenlos, aber nicht umsonst.
    Spenden
  • Damit wir die modified eCommerce Shopsoftware auch zukünftig kostenlos anbieten können:
    Spenden
  • Thema: Vorschlag zur SEO-URL, link-alternate-hreflang und sitemap.xml Problematik

    demoncleaner

    • Fördermitglied
    • Beiträge: 505
    Nichts für ungut. Mir ist jetzt erst klar, dass es der eine Satz bezgl. Cronjob war, der dich hier gestört hat. Den hätte ich mir dann hier an der Stelle verkneifen können, ja.

    hpzeller

    • Experte
    • Beiträge: 4.130
    • Geschlecht:
    Hallo Community

    In der Datei includes/extra/seo_url_mod/seo_url_shopstat.php steckt ein kleiner Programmfehler, welcher zur Folge hat, dass etwaige GET-Parameter auf der Startseite (index_php) bei Verwendung des hier beschriebenen Feature "Sprachkürzel in der URL" und aktivierten SEO-URL's, nicht angehängt werden. Der Fehler äussert sich z.B. dadurch, das nach der Eingabe einer Artikelnummer ins Eingabefeld "Schnellkauf" nach dem Absenden die Startseite zwar neu geladen aber dem Warenkorb kein Artikel hinzugefügt wird. Der Fehler zeigt sich nur auf der Startseite!

    Lösungsvorschlag:
    In der Datei includes/extra/seo_url_mod/seo_url_shopstat.php bei ca. Zeile 108 folgende Codezeile

    Code: PHP  [Auswählen]
    return self::$host_array[$this->language_id][$connection];

    mit dieser ersetzen.

    Code: PHP  [Auswählen]
    return self::$host_array[$this->language_id][$connection].self::get_link_params(false);

    Gruss
    Hanspeter

    Tomcraft

    • modified Team
    • Gravatar
    • Beiträge: 46.199
    • Geschlecht:
    Das wurde in Ticket #1727 festgehalten und in r12491 korrigiert.

    Grüße

    Torsten

    scooterama

    • Fördermitglied
    • Beiträge: 279
    • Geschlecht:
    Hallo Alfred

    Darf ich nochmal kurz der Übersichtlichkeit her zusammenfassen ob ich das korrekt verstanden habe mit dem Einbau der Version ohne /de für Deutsch ?

    In der Datei templates/dein_template/source/boxes/languages.php sind keinerlei Änderungen zu machen?

    Im Verzeichnis /includes/extra/seo_url_mod/ die Datei add_lng_to_link_in_seo_url_shopstat.php mit folgendem Inhalt erstellen.

    Code: PHP  [Auswählen]
    <?php
    defined('ADD_DEFAULT_LANGUAGE_TO_LINK') OR
    define ('ADD_DEFAULT_LANGUAGE_TO_LINK', false);
    defined('ADD_LANGUAGE_TO_LINK') OR
    define ('ADD_LANGUAGE_TO_LINK', xtc_db_num_rows(xtc_db_query(" SELECT 'id'
                                                                   FROM "
    . TABLE_LANGUAGES . (!defined('RUN_MODE_ADMIN') && isset($_SESSION['customers_status']['customers_status']) && $_SESSION['customers_status']['customers_status'] == '0' ?
                                                                 " WHERE status_admin = '1'" :
                                                                 " WHERE status = '1'")
                                                                )) > 1 ? true : false);
     

    Dann in der Datei .htaccess im Shoproot-Verzeichnis folgende Direktiven

    Code: PHP  [Auswählen]
     ##-- Use colon delimiter ":" for SEO-URLS (default setting)
     ##-- Categories (:::)
     RewriteRule :::([_0-9]+):([_0-9]+)\.html$ index.php?cPath=$1&page=$2 [QSA,L]
      RewriteRule :::([_0-9]+)\.html$ index.php?cPath=$1 [QSA,L]

      ##-- Products (::)
     RewriteRule ::(.+)\.html$ product_info.php?products_id=$1 [QSA,L]

      ##-- Content (:_:)
     RewriteRule :_:([0-9]+)\.html$ shop_content.php?coID=$1 [QSA,L]

      ##-- Manufacturers (:.:)
     RewriteRule :\.:([_0-9]+):([_0-9]+)\.html$ index.php?manufacturers_id=$1&page=$2 [QSA,L]
      RewriteRule :\.:([0-9]+)\.html$ index.php?manufacturers_id=$1 [QSA,L]

      ##-- Use dash delimiter "-" for SEO-URLS (alternative setting i.e. for windows servers)
     ##-- Categories (---)
     RewriteRule ---([_0-9]+)-([_0-9]+)\.html$ index.php?cPath=$1&page=$2 [QSA,L]
      RewriteRule ---([_0-9]+)\.html$ index.php?cPath=$1 [QSA,L]

      ##-- Products (--)
     RewriteRule --(.+)\.html$ product_info.php?products_id=$1 [QSA,L]

      ##-- Content (-_-)
     RewriteRule -_-([0-9]+)\.html$ shop_content.php?coID=$1 [QSA,L]

      ##-- Manufacturers (-.-)
     RewriteRule -\.-([_0-9]+)-([_0-9]+)\.html$ index.php?manufacturers_id=$1&page=$2 [QSA,L]
      RewriteRule -\.-([0-9]+)\.html$ index.php?manufacturers_id=$1 [QSA,L]
     

    mit diesen Direktiven ersetzen.

    Code: PHP  [Auswählen]
      RewriteRule ^([a-z]{2})/$ index.php?language=$1 [QSA,L]
      RewriteRule ^([a-z]{2})/index.php$ index.php?language=$1 [QSA,L]
      RewriteRule ^([a-z]{2})/login_admin.php$ login_admin.php?language=$1 [QSA,L]    
      RewriteRule ^([a-z]{2})/specials.php$ specials.php?language=$1 [QSA,L]
      RewriteRule ^([a-z]{2})/products_new.php$ products_new.php?language=$1 [QSA,L]
     
      ##-- Use colon delimiter ":" for SEO-URLS (default setting)
     ##-- Categories (:::)
     RewriteRule ^([a-z]{2})/.*:::([_0-9]+):([_0-9]+)\.html$ index.php?cPath=$2&page=$3&language=$1 [QSA,L]
      RewriteRule ^([a-z]{2})/.*:::([_0-9]+)\.html$ index.php?cPath=$2&language=$1 [QSA,L]
      RewriteRule :::([_0-9]+):([_0-9]+)\.html$ index.php?cPath=$1&page=$2 [QSA,L]
      RewriteRule :::([_0-9]+)\.html$ index.php?cPath=$1 [QSA,L]

      ##-- Products (::)
     RewriteRule ^([a-z]{2})/.*::(.+)\.html$ product_info.php?products_id=$2&language=$1 [QSA,L]
      RewriteRule ::(.+)\.html$ product_info.php?products_id=$1 [QSA,L]  

      ##-- Content (:_:)
     RewriteRule ^([a-z]{2})/.*:_:([0-9]+)\.html$ shop_content.php?coID=$2&language=$1 [QSA,L]
      RewriteRule :_:([0-9]+)\.html$ shop_content.php?coID=$1 [QSA,L]

      ##-- Manufacturers (:.:)
     RewriteRule ^([a-z]{2})/.*:.:([_0-9]+):([_0-9]+)\.html$ index.php?manufacturers_id=$2&page=$3&language=$1 [QSA,L]
      RewriteRule ^([a-z]{2})/.*:.:([0-9]+)\.html$ index.php?manufacturers_id=$2&language=$1 [QSA,L]
      RewriteRule :.:([_0-9]+):([_0-9]+)\.html$ index.php?manufacturers_id=$1&page=$2 [QSA,L]
      RewriteRule :.:([0-9]+)\.html$ index.php?manufacturers_id=$1 [QSA,L]

      ##-- Use dash delimiter "-" for SEO-URLS (alternative setting i.e. for windows servers)
     ##-- Categories (---)
     RewriteRule ^([a-z]{2})/.*---([_0-9]+)-([_0-9]+)\.html$ index.php?cPath=$2&page=$3&language=$1 [QSA,L]
      RewriteRule ^([a-z]{2})/.*---([_0-9]+)\.html$ index.php?cPath=$2&language=$1 [QSA,L]
      RewriteRule ---([_0-9]+)-([_0-9]+)\.html$ index.php?cPath=$1&page=$2 [QSA,L]
      RewriteRule ---([_0-9]+)\.html$ index.php?cPath=$1 [QSA,L]

      ##-- Products (--)
     RewriteRule ^([a-z]{2})/.*--(.+)\.html$ product_info.php?products_id=$2&language=$1 [QSA,L]
      RewriteRule --(.+)\.html$ product_info.php?products_id=$1 [QSA,L]

      ##-- Content (-_-)
     RewriteRule ^([a-z]{2})/.*-_-([0-9]+)\.html$ shop_content.php?coID=$2&language=$1 [QSA,L]
      RewriteRule -_-([0-9]+)\.html$ shop_content.php?coID=$1 [QSA,L]

      ##-- Manufacturers (-.-)
     RewriteRule ^([a-z]{2})/.*-.-([_0-9]+)-([_0-9]+)\.html$ index.php?manufacturers_id=$2&page=$3&language=$1 [QSA,L]
      RewriteRule ^([a-z]{2})/.*-.-([0-9]+)\.html$ index.php?manufacturers_id=$2&language=$1 [QSA,L]
      RewriteRule -.-([_0-9]+)-([_0-9]+)\.html$ index.php?manufacturers_id=$1&page=$2 [QSA,L]
      RewriteRule -.-([0-9]+)\.html$ index.php?manufacturers_id=$1 [QSA,L]
     

    Im Verziechnis includes/extra/modules/set_language_sessions/ eine Datei mit dem Namen set_default_language.php und folgendem Inhalt erstellen

    Code: PHP  [Auswählen]
    <?php

    $scriptnames = ['index.php',
                    'product_info.php',
                    'shop_content.php',
                    'products_new.php',
                    'specials.php',
                    'login_admin.php'];
                   
    if (!isset($_GET['language']) && SEARCH_ENGINE_FRIENDLY_URLS == 'true' && in_array(basename($PHP_SELF), $scriptnames)) {
      $_GET['language'] = DEFAULT_LANGUAGE;
    }
     

    In der Datei includes/extra/seo_url_mod/seo_url_shopstat.php bei ca. Zeile 108 folgende Codezeile

    Code: PHP  [Auswählen]
    return self::$host_array[$this->language_id][$connection];
     

    mit dieser ersetzen.

    Code: PHP  [Auswählen]
    return self::$host_array[$this->language_id][$connection].self::get_link_params(false);
     

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.745
    • Geschlecht:
    Welcher Alfred ?

    Was willst du denn mit den komplexen Änderungen
    (bevor du mich weiter fragst: die ich mir nicht durchgelesen habe),
    da es doch seit Shop-Version 2.0.5.0  das System-Modul "Spracherweiterung für SEO URL" dafür gibt ?

    Gruß,
    noRiddle

    scooterama

    • Fördermitglied
    • Beiträge: 279
    • Geschlecht:
    @noriddle  :datz:  ich Affe hab währenddessen ich am Verfassen des Textes war, kurz telefonisch eine Bestellung aufgenommen, von einem Alfred ....

    Ich meinte HP (Hanspeter)

    Ich sitze ja noch auf der 2.0.4.2 daher ist das noch Thema.

    scooterama

    • Fördermitglied
    • Beiträge: 279
    • Geschlecht:
    Guten Morgen

    Was müsste man ändern um die automatische Sprachumschaltung (Browsersprache) nach dieser Anpassung wieder funktioniert?

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.745
    • Geschlecht:
    Was bringt dich zu der Annahme das wüde nicht mehr funktionieren ?
    Das wird in der /includes/set_language_sessions.php bestimmt/definiert und die vorliegende Implementation dürfte daran nichts ändern.
    Wie genau testest du denn ob es funktioniert ?

    Gruß,
    noRiddle

    scooterama

    • Fördermitglied
    • Beiträge: 279
    • Geschlecht:
    Ich selber mit der Firefox Erweiterung language Switch und unsere französischen Kunden welche melden dass sich die Seite nur noch Deutsch öffnet. Auch unser Mitarbeiter welcher in Genf lebt (französische Schweiz) sagt dass die Seite nicht mehr auf die Browsersprache umschaltet.

    Nehme ich die includes/extra/modules/set_language_sessions/set_default_language.php wieder raus, klappt die Umschaltung, aber es lässt sich dann nicht mehr zurück auf Deutsch stellen über die Sprachbox.

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.745
    • Geschlecht:
    [...]
    Nehme ich die includes/extra/modules/set_language_sessions/set_default_language.php wieder raus, klappt die Umschaltung, aber es lässt sich dann nicht mehr zurück auf Deutsch stellen über die Sprachbox.

    Wieso "wieder raus" ?, wo musste da was geändert werden ?
    Es fehlt mir hier in der Kommunikation an logischer Abfolge und genauen Erklärung zu Behauptungen.

    Okay, ich denke, daß niemand die Zeit und die Lust hat das komplett zu analysieren. Das würde nämlich richtig Zeit kosten.
    Ein Update wäre angesagt. Soviel kannst du ja nicht an den Files gefrickelt haben, daß das ein so großes Problem wäre.

    Gruß,
    noRiddle

    *NACHTRAG*
    Ich sehe, daß du etwas an besagter Datei geändert hast, in hpzellers Anleitung seh ich da nichts.

    scooterama

    • Fördermitglied
    • Beiträge: 279
    • Geschlecht:
    Hi noRiddle

    Ich behaupte doch gar nichts.
    Was ich genau gemacht habe ist das, was hier von hpzeller genannt wurde und ich ja in Antwort #33 zusammengefasst habe.

    Ich muss mir jemanden suchen der das Update sauber macht sobald die neuste Version rauskommt.

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.745
    • Geschlecht:
    Ah, okay, hab's gefunden. Die Änderung in der /includes/set_language_sessions.php wurde an späterer Stelle im Thread gepostet, nicht in der ursprünglichen Anleitung.
    Du zwingst ja indirekt jeden, der potentiell helfen möchte, den ganzen Thread zu lesen, auch wenn der nicht besonders lang ist.

    Ich weiß übrigens gar nicht, ob die offizielle Implementation der aktuellen Version 2.0.6.0 das mit der Browser-Sprache schlüssig und ohne Bugs implementiert hat was die Konfigurations-Einstellung "Auf die Browsersprache automatisch umstellen" betrifft.
    Lass das doch erstmal im Demo-Shop testen.

    Gruß,
    noRiddle

    scooterama

    • Fördermitglied
    • Beiträge: 279
    • Geschlecht:
    Also, noriddle, Danke für den Tip mit dem Demoshop. Auch da lässt sich das identische Phänomen nachstellen. Automatisch auf Browsersprache umstellen = true aber es ändert sich nichts, englisch wird nicht geladen mit englischen Browser, schaltet man aber das Systemmodul "Spracherweiterung für SEO URL" aus klappt die Umschaltung.

    Ist demnach wohl so dass man die automatische Umschaltung auf die Browsersprache mit dem Systemmodul aushebelt, auch in der neuen stable und dev. Demoumgebung

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.745
    • Geschlecht:
    Das ist sicherlich nicht so gewollt.
    Mache dazu mal bitte ein Ticket auf wenn du sicher bist, daß es im Demo-Shop nicht funktioniert.
    Ich teste später auch mal.

    Was genau macht die "Firefox Erweiterung language Switch" denn ?
    Man weiß ja nie was da so genau passiert, weshalb ich anders testen werde, nämlich indem ich meine 1. Browser-Sprache umstelle auf "en".
    Man muß sehr aufpassen und sehr genau sein bei solchen Tests.
    Es könnte z.B. dein englischer Kunde en_gb im Browser eingestellt haben, was es im Shop aber nicht gibt.
    Genauso könnte dein schweizer Kunde fr_ch im Browser eingestellt haben, was es aber im Shop nicht gibt.
    Und ähnliche Fälle mehr.

    Gruß,
    noRiddle

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.745
    • Geschlecht:
    So, hab's gerade im Demo-Shop getestet. Funktioniert, deine Aussage ist also nicht richtig.
    Vorgehensweise:
    • Firefox (aktuellste Version 96.0.1) => Extras => Einstellungen => Sprache => Button "wählen" => auf "English en" gestellt als erste Sprache
    • Cache im Browser geleert
    • Demo-Shop aufgerufen
    • Cookies im Browser den Demo-Shop betreffend gelöscht und einmal ein und ausgeloggt um die Session neu zu generieren
    • Bingo !!

    Gruß,
    noRiddle

    *NACHTRAG*
    Der Firefox ist in manchen Sachen komisch, der Cache ist manchmal sehr resistent, wie es mir scheint (trotz Leeren), und Cookies löschen und Demo-Shop reloaden reichte bei mir auch nicht, musste mich erst einmal einloggen bis die Browser-Sprache griff. Ist mir eigtl. ein Rätsel, denn Cookies löschen und Seite reloaden müsste auch die Session erneuern, kann da  aber einen Denkfehler haben.

    *NACHTRAG 2*
    In Iron (ein Chrome-Ableger ohne Spyware) klappt es nach Cache- und Cookie-Löschen, ohne Login.
    Modulshop - Eine große Auswahl an neuen und hilfreichen Modulen für die modified eCommerce Shopsoftware
    4 Antworten
    4863 Aufrufe
    12. August 2010, 19:20:45 von web4design
    5 Antworten
    1454 Aufrufe
    11. August 2017, 12:16:57 von web28
    3 Antworten
    1355 Aufrufe
    28. Juli 2018, 12:56:11 von manne35