Modulshop - Eine große Auswahl an neuen und hilfreichen Modulen für die modified eCommerce Shopsoftware
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: Anzeige der Anrede bei sämtlichen Adressen

    Christoph

    • Neu im Forum
    • Beiträge: 47
    Anzeige der Anrede bei sämtlichen Adressen
    am: 17. Dezember 2010, 13:58:54
    Hallo,

    ich würde gerne bei den Kundenadressen immer die Anrede mit angezeigt haben wollen.
    Derzeit wird die Anrede ja nur als 'm' und 'w' gespeichert, ich hätte es gerne als 'Herr" bzw. 'Mr.' und 'Frau' bzw. 'Ms.' (je nach dem ob Deutsch oder Englisch als Sprache ausgewählt ist)

    Ich habe auch schon rumgebastelt (siehe Anhang) und es klappt auch auf den ersten Blick.

    Das Problem ist, wenn der Kunde die Anrede ändern möchte, wird wieder 'm' oder 'w' eingetragen.
    Das gleiche Problem habe ich bei Anlegen eines Kunden im Admin-Bereich.

    Was bzw. wo muss ich etwas ändern damit nicht mehr 'm' und 'w' eingetragen wird?

    Ich wäre für eure Hilfe wirklich dankbar!



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

    Christoph

    • Neu im Forum
    • Beiträge: 47
    Anzeige der Anrede bei sämtlichen Adressen
    Antwort #1 am: 22. Dezember 2010, 15:42:43
    hallo,

    mittlerweile funktioniert es schon etwas besser.
    jetzt habe ich allerdings das Problem, dass immer die englische Anrede in die Datenbank geschrieben wird (da ich eine Abfrage habe, "wenn Sprache nicht Deutsch, dann englische Anrede).

    Hauptproblem ist, das ich nicht weiß welchen "Wert" die Variable $_SESSION['language'] hat, wenn die Sprache Deutsch bzw. Englisch ist?!

    Eine bessere Lösung wäre bestimmt, die Anreden aus den Sprachdateien zu nehmen (aus lang_german.conf und lang_english.conf), aber wie komme ich an die heran? zB wenn ich die Andrede in der account_create.php oder der account_edit.php brauche?

    Für eine kleine Hilfestellung wäre ich wirklich dankbar!

    franky_n

    • Experte
    • Beiträge: 4.950
    Anzeige der Anrede bei sämtlichen Adressen
    Antwort #2 am: 22. Dezember 2010, 18:59:46
    Hallo christoph_20,

    sorry, dass ich das hier jetzt so sagen muss:
    Ich glaube Du fängst ganz verkehrt an...

    In die DB wird der Wert "m" oder "w" eingetragen, aber das hat ja nicht unbedingt was mit der Anzeige zu tun...
    Wenn Du als Beispiel in der Bestellung Herr oder Frau angeben möchtest dann fragst Du in der DB ab ob es "m" oder "w" ist und gibst dann nachdem Du die Sprache ermittelt hast "Herr" oder "Frau" aus oder in Englisch dann halt "Mr." oder "Mrs."

    Wenn Du die DB Werte änderst, musst Du jede Funktion im Shop umbauen die irgendwas damit zu tun hat.
    Bei der anderen Vorgehensweise nur die Ausgabeseiten...

    Viele Grüße

    Franky

    Christoph

    • Neu im Forum
    • Beiträge: 47
    Anzeige der Anrede bei sämtlichen Adressen
    Antwort #3 am: 23. Dezember 2010, 02:16:53
    hallo,

    nur zum Verständnis: kannst du mir sagen welchen Sinn es hat anstatt der Anrede, "m" und "w" zu speichern?
    Ehrlich gesagt sehe ich da nämlich keinen, aber es muss ja wohl einen geben?

    Eine solche Abfrage habe ich schon probiert, das Problem war aber folgendes:
    Die Adressen die für die Darstellung der Rechnungs- und Lieferadresse verwendet werden, werden in einer Variable gespeichert und die Daten dafür kommen direkt per SQL aus der Datenbank. Wie ich da eine Abfrage reinfummeln soll weiß ich leider nicht.

    Mich stört bei dieser Lösung vor allem, dass man die Anrede eigentlich "geschenkt" bekommt (der Benutzer gibt sie ja bei der Anmeldung ein), man speichert sie aber nicht.

    Soweit ich das gesehen habe kommt das "m" und "w" nur in "ein paar" Dateien vor.
    Im Anhang habe ich eine Datei mit meinen Änderungen. Da funktioniert jetzt alles, soweit ich das getestet habe. Allerdings kommt die Anrede nicht aus den Sprachdateien, sondern sie werden per if-Abfrage zugewiesen.
    Wenn du mir sagen könntest wie ich in einer PHP Datei auf die Variablen der Sprachdateien zugreifen kann, kann ich das noch ändern.

    franky_n

    • Experte
    • Beiträge: 4.950
    Anzeige der Anrede bei sämtlichen Adressen
    Antwort #4 am: 23. Dezember 2010, 07:25:00
    Hallo Christoph,

    es macht den Sinn das es sprachenunabhängig ist.
    Man hätte auch 1 und 2 nehmen können. :)

    Code: PHP  [Auswählen]
    if ($gender == "m") {
      $_SESSION['customer_gender'] = MALE;
    }
    if ($gender == "w") {
      $_SESSION['customer_gender'] = FEMALE;
    }
    Ist alles schon so im Originalshop vorbereitet ohne das man was programmieren müsste...
    Das MALE und FEMALE kommt aus den Sprachendateien
    /lang/german/german.php
    /lang/english/english.php
    je nachdem welche Sprache eingeschaltet ist.

    Für Deutsch ist dort bereits "Herr" und "Frau" hinterlegt, für Englisch "Mr." und "Ms./Mrs."...

    Viele Grüße

    Franky

    franky_n

    • Experte
    • Beiträge: 4.950
    Anzeige der Anrede bei sämtlichen Adressen
    Antwort #5 am: 23. Dezember 2010, 07:41:35
    Hallo Christoph,

    in inc/xtc_address_label.inc.php in Z.21 das:

    Code: PHP  [Auswählen]
        $address_query = xtc_db_query("select entry_firstname as firstname, entry_lastname as lastname, entry_company as company, entry_street_address as street_address, entry_suburb as suburb, entry_city as city, entry_postcode as postcode, entry_state as state, entry_zone_id as zone_id, entry_country_id as country_id from " . TABLE_ADDRESS_BOOK . " where customers_id = '" . $customers_id . "' and address_book_id = '" . $address_id . "'");
    ändern in das:

    Code: PHP  [Auswählen]
        $address_query = xtc_db_query("select entry_gender as gender, entry_firstname as firstname, entry_lastname as lastname, entry_company as company, entry_street_address as street_address, entry_suburb as suburb, entry_city as city, entry_postcode as postcode, entry_state as state, entry_zone_id as zone_id, entry_country_id as country_id from " . TABLE_ADDRESS_BOOK . " where customers_id = '" . $customers_id . "' and address_book_id = '" . $address_id . "'");
    In inc/xtc_adress_format.inc.php vor Z. 25:

    Code: PHP  [Auswählen]
        $company = addslashes($address['company']);
    das einfügen:

    Code: PHP  [Auswählen]
        if ($address['gender'] == "m") {
          $gender = MALE;
        } else if ($address['gender'] == "w") {
          $gender = FEMALE;
        } else {
          $gender = '';
        }
     
    Dann hast Du das Adresslabel schon so gut wie abgedeckt... :)

    Viele Grüße

    Franky

    Christoph

    • Neu im Forum
    • Beiträge: 47
    Anzeige der Anrede bei sämtlichen Adressen
    Antwort #6 am: 23. Dezember 2010, 09:38:14
    Hallo,

    danke für deine Hilfe, so geht's auch. :)

    Eine Anpassung muss man aber noch machen, sonst steht die Anrede nicht bei den Adressbucheinträgen.

    in address_book.php nach Z. 43:

    Code: PHP  [Auswählen]
    $addresses_query = xtc_db_query("select address_book_id,
    das einfügen:

    Code: PHP  [Auswählen]
    entry_gender as gender,

    Christoph

    • Neu im Forum
    • Beiträge: 47
    Anzeige der Anrede bei sämtlichen Adressen
    Antwort #7 am: 03. Januar 2011, 00:30:26
    ich muss mein problem nochmal hervorkramen, da es noch nicht ganz gelöst ist.
    während des bestellprozesses wird die anrede angezeigt, allerdings nicht wenn man sich seine bestellungen im account ansieht, oder im adminbereich

    beim bestellprozess (zb in der checkout_shipping.php) sieht der aufruf zum erzeugen der adresse so aus:

    Code: PHP  [Auswählen]
    ...xtc_address_label($_SESSION['customer_id'], $_SESSION['sendto'], true, '', '<br />'));
    und beim anzeigen einer bereits getätigten bestellung, sieht der aufruf zb so aus:

    Code: PHP  [Auswählen]
    ...xtc_address_format($order->delivery['format_id'], $order->delivery, 1, ' ', '<br />'));
    wenn ich das richtig verstanden habe wird hier die tabelle orders benützt; problem ist, dass es in dieser tabelle aber keine spalten für das geschlecht des kunden, des rechnungsempfängers und des lieferungsempfängers gibt.
    wird das geschlecht des rechnungsempfängers und des lieferungsempfängers überhaupt gespeichert?

    für hilfe wäre ich natürlich wieder dankbar

    Christoph

    • Neu im Forum
    • Beiträge: 47
    Anzeige der Anrede bei sämtlichen Adressen
    Antwort #8 am: 16. Januar 2011, 12:05:21
    Ich habe nun das Problem über Umwege und mit viel Zeit gelöst.
    Funktioniert jetzt im Frontend und Backend perfekt.  :D

    Tomcraft

    • modified Team
    • Gravatar
    • Beiträge: 46.369
    • Geschlecht:
    Anzeige der Anrede bei sämtlichen Adressen
    Antwort #9 am: 16. Januar 2011, 19:47:56
    Willst du uns vielleicht an deiner Lösung teilhaben lassen?

    Grüße

    Torsten

    Christoph

    • Neu im Forum
    • Beiträge: 47
    Anzeige der Anrede bei sämtlichen Adressen
    Antwort #10 am: 16. Januar 2011, 23:04:30
    hallo,

    nunja aus der [IRONIE AN] regen Beteiligung [IRONIE AUS] schließe ich, dass kein großes Interesse daran besteht.

    [...]
    Ist alles schon so im Originalshop vorbereitet ohne das man was programmieren müsste...
    [...]

    Deshalb schien mir meine Lösung nicht sehr gelungen, da ich "sehr viel" programmieren bzw. ändern musste. Wenn es jemanden gibt der daran Interesse hat, könnte ich meine Änderungen zusammenschreiben (allerdings läuft gerade der Unistress an, deshalb wird's vor Februar nichts)

    @Tomcraft
    Kannst du mir einen Gefallen tun und mir kurz erklären wie die Adresse im Backend bei den Bestellung (unter bearbeiten) "erzeugt" bzw. dargestellt wird (siehe Screenshot)?
    In der admin/orders.php heißt es zB.:

    Code: PHP  [Auswählen]
    <td class="main"><?php echo xtc_address_format($order->customer['format_id'], $order->customer, 1, '', '<br />'); ?></td>
    Wenn ich aber nun aber in der inc/xtc_address_format.inc.php die Variablenzuweisungen lösche, also zB.:

    Code: PHP  [Auswählen]
    $street = addslashes($address['street_address']);
    dürfte doch die Straße nicht mehr angezeigt werden?!
    Wird Sie aber trotzdem! Im Frontend nicht.
    Weil hier die Anzeige irgendwie nicht so funktioniert wie sie sollte (so wie ich das verstanden habe), musste ich mir die drei Adressen in der admin/orders.php zusammenflicken, was auch alles andere als optimal ist.

      [ Für Gäste sind keine Dateianhänge sichtbar ]

    franky_n

    • Experte
    • Beiträge: 4.950
    Anzeige der Anrede bei sämtlichen Adressen
    Antwort #11 am: 17. Januar 2011, 07:06:39
    Hallo Christoph,

    einmal sprichst Du vom Frontend und einmal vom Backend.
    Frontend Änderungen sind nicht im admin Ordner sondern im root Ordner und allen Ordnern außer dem admin Ordner zu machen,
    Backend Änderungen sind im admin Ordner zu machen.
    Einzige Außnahme bildet der lang Ordner der für die Sprachen zuständig ist denn dort gibt es dann nochmal einen admin Rodner für das Backend.

    Wenn Du also im admin Ordner was änders heißt das also nicht das es auch im Frontend erscheint!

    Viele Grüße

    Franky

    Christoph

    • Neu im Forum
    • Beiträge: 47
    Anzeige der Anrede bei sämtlichen Adressen
    Antwort #12 am: 17. Januar 2011, 10:01:22
    hallo,

    ich wollte schon antworten, da ist mir eine Idee gekommen.
    Ich hab den Fehler gemacht, dass ich mir gedacht habe, dass die Methode xtc_addrees_fomat(...) nur einmal vorkommen kann (nämlich in der "/inc/xtc_address_format.inc.php").
    Die Methode gibt es aber noch ein zweites mal in der "/admin/includes/functions/general.php". :doh:

    Nach den Änderungen dort funktioniert jetzt die Anzeige bei mir so wie sie sollte. :mrgreen:

    40 Antworten
    13987 Aufrufe
    14. Februar 2010, 21:53:59 von vr
    13 Antworten
    3533 Aufrufe
    25. Januar 2017, 09:11:59 von rakna
    3 Antworten
    2799 Aufrufe
    14. Juni 2010, 13:22:35 von web28
    4 Antworten
    3580 Aufrufe
    18. Januar 2010, 18:05:44 von vinznvegas
               
    anything