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: URL mit Artikelnummer anstatt Artikel-ID

    mcm

    • Mitglied
    • Beiträge: 151
    URL mit Artikelnummer anstatt Artikel-ID
    am: 24. August 2012, 12:32:38
    Hallo Gemeinde,

    da für meine Produkte (mit festen Artikelnummern) von anderen Anbietern automatisiert Links erstellt werden, die dann auf meinen Shop verlinken, wäre es toll, wenn:

    die URL statt aus der automatisch vergebenen ID aus der Artikelnummer gerneriert werden würde.

    D.h. aus
    www.xyz.de/Kat1/Kat2/ProduktX::555.html
    wird
    www.xyz.de/Kat1/Kat2/ProduktX::Art12345.html

    Damit könnten die externen Links einfach aus der jeweils bekannten Art-Nr. generiert werden, auch ohne daß die interne ID und sonstige Pfadbezeichnungen bekannt sein müssen:
    www.xyz.de/::Art12345.html

    Ist es also mögich, in der URL die ID mit der Artikelnummer zu ersetzen?
    Oder wirkt sich das auf alle möglichen anderen Bereiche aus?

    Wie sollte ich da am besten vorgehen???

    Ist wirklich sehr wichtig...
    Wäre euch für etwas Hilfe sehr dankbar!

    mcm



    Linkback: https://www.modified-shop.org/forum/index.php?topic=21921.0

    web28

    • modified Team
    • Beiträge: 9.404
    Re: URL mit Artikelnummer anstatt Artikel-ID
    Antwort #1 am: 24. August 2012, 13:57:14
    Dafür müssten:

    alle Artikelnummern wirklich eindeutig sein (sollte durch neue Shopfunktionen geprüft/verhindert werden)
    die htaccess umgeschrieben werden
    mehrere Shop Dateien und Funktionen um/neugeschrieben werden

    Die Frage ist, ob alle Shoplinks grundsätzlich geändert werden sollen, oder ob es möglich sein soll, die Artikel alternativ über die Artikelnummer aufrufen zu können.
    Der Aufwand zwischen beiden Varianten ist erheblich, beides übersteigt aber den hier erhältlichen kostenlosen Support.

    Gruss Web28

    mcm

    • Mitglied
    • Beiträge: 151
    Re: URL mit Artikelnummer anstatt Artikel-ID
    Antwort #2 am: 21. Februar 2014, 23:44:15
    Aufruf eines Produktes per Model/Artikel-Nr.

    Hallo, ich habe was gebastelt, um mit der URL

    www.meineseite.de/search/ModelNr2817

    direkt auf die URL des entsprechenden Artikels umzuleiten.
    Dies brauche ich, da Käufern und anderen Händlern diese bereits feststehenden Model-Nummern bekannt sind und sie diese einfachen Links selbst generieren.

    Im Ordner "search" liegt dann eine redirect.php die weiterleiten soll.
    Mache ich dies ohne rewrite rule in der htaccess und mit folgender URL, funktioniert es:

    >> www.meineseite.de/search/redirect.php?modid=ModelNr2817

    Da ich aber die URL vereinfachen muss ( www.meineseite.de/search/ModelNr2817 ), habe ich folgenden redirect in die .htaccess geschrieben:

    Code: XML  [Auswählen]
    <IfModule mod_rewrite.c>
        RewriteEngine On
        RewriteRule ^(.*)$ redirect.php?modid=/$1 [L]
    </IfModule>
     

    Leider wird nun weitergeleitet nach:
    http://www.meineseite.de/search/www.meineseite.de/::181.html

    Wo ist der Fehler? Kann ich das in der .htaccess anpassen oder ist der Aufruf für xtc_redirect() falsch?

    Hier der Code zum Auslesen der ID je nach Model-Nr. und zum Generieren des Produktlinks:

    Code: PHP  [Auswählen]
    <?php
    /* -----------------------------------------------------------------------------------------
       $Id: mcm-redirect.php
       ---------------------------------------------------------------------------------------*/


        include ('../includes/application_top.php');
        if (isset ($_GET['modid'])) {
            $mod =  $_GET['modid'];
            $mod = preg_replace("/[^a-zA-Z0-9]+/", "", $mod);
            $mod = htmlspecialchars($mod, ENT_QUOTES);
            $model = strtoupper($mod);
            $product_query = xtc_db_query("SELECT products_id FROM products WHERE products_model='".$model."'");
       
            if (xtc_db_num_rows($product_query)) {
                    $product = xtc_db_fetch_array($product_query);
                // echo $_SERVER['SERVER_NAME'].'/::'.$product['products_id'].'.html';
                 xtc_redirect($_SERVER['SERVER_NAME'].'/::'.$product['products_id'].'.html');
            } else {
                     xtc_redirect(xtc_href_link(FILENAME_DEFAULT));
            }
        } else {
             xtc_redirect(xtc_href_link(FILENAME_DEFAULT));
        }
    ?>
     

    Ich würde mich über Anregungen und Hilfe sehr freuen!

    - mcm -

    mcm

    • Mitglied
    • Beiträge: 151
    Re: URL mit Artikelnummer anstatt Artikel-ID
    Antwort #3 am: 22. Februar 2014, 01:20:42
    Ich habs: der "SERVER_NAME" musste nicht extra übergeben werden:

    Hier also eine schöne Methode, um mit einer kurzen URL und angehängter Artikelnummer (ohne Sonderzeichen) zum Produkt weiterzuleiten.

    www.meineseite.de/search/artnr666

    Kann ggf. auch mit Namen, Hersteller etc. sein) verwendet werden.

    Gibts noch Anregungen?

    - mcm -

    Anleitung:

    1.) im Hauptverzeichnis Ordner  "search" mit Datei  "redirect.php" erstellen
    2.) o.g. Code einfügen:

    Code: PHP  [Auswählen]

    <?php
    /* -----------------------------------------------------------------------------------------
       $Id: mcm-redirect.php
       ---------------------------------------------------------------------------------------*/


        include ('../includes/application_top.php');
        if (isset ($_GET['modid'])) {
            $mod =  $_GET['modid'];
            $mod = preg_replace("/[^a-zA-Z0-9]+/", "", $mod);
            $mod = htmlspecialchars($mod, ENT_QUOTES);
            $model = strtoupper($mod);
            $product_query = xtc_db_query("SELECT products_id FROM products WHERE products_model='".$model."'");
       
            if (xtc_db_num_rows($product_query)) {
                    $product = xtc_db_fetch_array($product_query);
                 // echo $_SERVER['SERVER_NAME'].'/::'.$product['products_id'].'.html';
                 xtc_redirect('/::'.$product['products_id'].'.html');
            } else {
                     xtc_redirect(xtc_href_link(FILENAME_DEFAULT));
            }
        } else {
            xtc_redirect(xtc_href_link(FILENAME_DEFAULT));
        }
    ?>

     

    3.) .htacces im Ordner "search" erstellen und folgenden Code einfügen:

    Code: PHP  [Auswählen]
    <IfModule mod_rewrite.c>
        RewriteEngine On
        #Rewrite the URI if there is no file or folder
       RewriteCond %{REQUEST_FILENAME} !-f
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteRule ^(.*)$ redirect.php?modid=/$1 [L]
    </IfModule>
     

    Der Aufruf  www.meineseite.de/search/artNr666
    leitet dann zum Produkt mit der Artikelnr. (Modelnr)  ARTNR666

    (!) Da bei mir alle Art.Nr. groß geschrieben werden, habe ich strtoupper($mod) verwendet.
    Sollte das bei Euch abweichen, muss das angepasst werden.

    mcm

    • Mitglied
    • Beiträge: 151
    Re: URL mit Artikelnummer anstatt Artikel-ID
    Antwort #4 am: 22. Februar 2014, 12:49:53
    Hab noch ein paar Änderungen:

    1.  Suchmasch.freundlicher 301 Redirect (hier muss die Domain am Ende angegeben werden, sonst werden alle Serververzeichnisse mit ausgegeben)

    htaccess:     
    Code: XML  [Auswählen]
    RewriteRule ^(.*)$ http://www.meineseite.de/search/redirect.php?modid=$1 [R=301,L]

    2. Groß-/Kleinschreibung bei Mod.Nr.: spielt keine Rolle mehr, wenn in der serach/redirect.php folgende Zeile angepasst (UPPER() wurde ergänzt) wird:

    Code: PHP  [Auswählen]
    $product_query = xtc_db_query("SELECT products_id FROM products WHERE UPPER(products_model)='".$model."'");

    scooterama

    • Fördermitglied
    • Beiträge: 284
    • Geschlecht:
    Re: URL mit Artikelnummer anstatt Artikel-ID
    Antwort #5 am: 27. Februar 2014, 15:49:06
    Hi MCM, vielen Dank dass du deine Lösung hier teilst. Ich habe das bei uns im Testshop mal eingebaut aber nicht zum laufen gebracht. Ist es möglich dass in der Anleitung evtl. noch was fehlt? Würde mich freuen wenn ich das auch so eingebaut bekommen würde.

    mcm

    • Mitglied
    • Beiträge: 151
    Re: URL mit Artikelnummer anstatt Artikel-ID
    Antwort #6 am: 27. Februar 2014, 20:48:50
    Hallo,
    ich häng die Anleitung mal an.

    Bei mir in Shopversion v1.05 geht es, an den verwendeten funktionen dürfte sich aber auch nichts geändert haben.

    Es geht um den Aufruf mit der Model-Nr. nicht der Shop-ID oder so.
    Diese muss also auch festgelegt sein (geht ja auch ohne...).

    Allzuviel versteh ich nicht von der Materie,  deshalb probier nochmal und erstatte Bericht.
    Vielleicht findet jemand anderes die Schwachstelle.

    Achso:
    Kommentiere doch mal folgendes im Code ein:
    // echo $_SERVER['SERVER_NAME'].'/::'.$product['products_id'].'.html';

    Was wird da ausgegeben?

    Viel Erfolg
    - mcm -

    mcm

    • Mitglied
    • Beiträge: 151
    Re: URL mit Artikelnummer anstatt Artikel-ID
    Antwort #7 am: 01. März 2014, 12:34:23
    Änderungen, wenn Artikelnummer Sonderzeichen enthält

    @ scooterama:

    In der verwendeten Abfrage hatte ich übrigens alle Sonderzeichen rausgefiltert, die Artikelnummer darf demnach nur aus Zahlen und Buchstaben bestehen.

    Wenn das bei Dir anders ist, müssen sie noch ins Replace integriert werden oder auch aus dem Query rausgefiltert werden.

    nur Buchstaben und Zahlen (wie in Anleitung verwendet):
     $mod = preg_replace("/[^a-zA-Z0-9]+/", "", $mod);

    z.B. inkl. "-"  und "_" wäre dann (glaube ich zumindest):
     $mod = preg_replace("/[^a-zA-Z0-9_-]+/", "", $mod);

    Ist jetzt noch nicht getestet, da ja auch nochmal htmlspecialchars etc. drüber geht, muss da evtl. noch was angepasst werden...

    - mcm -
    45 Antworten
    15192 Aufrufe
    06. November 2018, 00:01:02 von umbi
    7 Antworten
    4381 Aufrufe
    26. September 2011, 06:34:18 von GTB
    1 Antworten
    2236 Aufrufe
    02. März 2013, 18:59:36 von Alfred
               
    anything