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: Mehrsparchige Konstanten in System-Modul

    fiveBytes

    • Mitglied
    • Beiträge: 117
    • Geschlecht:
    Mehrsparchige Konstanten in System-Modul
    am: 10. November 2020, 12:37:15
    Hallo zusammen,

    ich versuche gerade mehrsprachige Konstanten in einem System-Modul zu erzeugen und wollte dafür eigentlich die Funktion xtc_cfg_input_email_language nutzen, so wie bei den E-Mail Optionen unter Konfiguration. Leider führt dies zu einem Syntax Fehler:
    Code: PHP  [Auswählen]
    [error] [modified]      [pid:8004]      syntax error, unexpected ''DE::%s jetzt online kaufen||E' (T_CONSTANT_ENCAPSED_STRING) in File: D:\xampp\htdocs\modified-testshop\xampp\admin\module_export.php(491) : eval()'d code on Line: 1 {}      {}

    Muss ich für Modul-Konstanten eine andere Funktion nutzen oder welche anderen Möglichkeiten gibt es, um mehrsprachige Modulkonstanten zu erzeugen. Freue mich auf Eure Anregungen ...

    Linkback: https://www.modified-shop.org/forum/index.php?topic=41448.0
    Marktplatz - Eine große Auswahl an neuen und hilfreichen Modulen sowie modernen Templates für die modified eCommerce Shopsoftware

    Karl1

    • Experte
    • Beiträge: 1.805
    Re: Mehrsparchige Konstanten in System-Modul
    Antwort #1 am: 11. November 2020, 09:09:32
    Hallo fivebytes,
    schau dir mal admin/includes/modules/system/order_mail_step.php an, da wird die Konstante MODULE_ORDER_MAIL_STEP_SUBJECT mit der Funktion xtc_cfg_input_email_language erzeugt.

    Gruß Karl

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.743
    • Geschlecht:
    Re: Mehrsparchige Konstanten in System-Modul
    Antwort #2 am: 11. November 2020, 10:50:23
    Das wird aber nicht in die Gruppe 6 sondern in die Gruppe 12 geschrieben, also in Konfiguration => E-Mail Optionen.
    Direkt in einem System-Modul ging das bislang leider  nicht. Dazu hatte ich vor einiger Zeit ein Ticket eröffnet (#1441) und dort sieht es aus als wäre das gelöst worden. ich weiß es aber nicht genau.
    Ich löse das in einem System-Modul immer mittels z.B.
    Code: PHP  [Auswählen]
    $this->available_langs = xtc_get_languages();
    im __construct
    und loope dann für install() durch die Sprachen und speichere die benötigten Values (die ja später Konstanten sind) in der Art: CONSTANT_NAME_LANGUAGE_CODE

    In der zugehörigen Sprachdatei wird die Beschriftung der Felder im System-Modul ebenfalls mittels Loop durch die Sprachen definiert und dazu das Sprachen-Flag angezeigt.
    So kann es dann z.B. aussehen:
    [ Für Gäste sind keine Dateianhänge sichtbar ]

    Benutzen kann man die Konstanten im Shop dann mittels
    Code: PHP  [Auswählen]
    constant('CONSTANT_NAME_'.strtoupper($_SESSION['language_code']))

    Gruß,
    noRiddle

    Karl1

    • Experte
    • Beiträge: 1.805
    Re: Mehrsparchige Konstanten in System-Modul
    Antwort #3 am: 11. November 2020, 18:09:39
    Hallo Zusammen,
    sorry, ich hatte das wohl falsch verstanden und erst nach dem Post von noRiddle kapiert was gewollt ist.

    Die Funktion xtc_cfg_input_email_language() lässt sich aus der Datei module_export.php nicht aufrufen.

    Vielleicht hilft dir aber das folgende Prinzip weiter:
    Schreib mal in dein Systemmodul in die Funktion install() diese zusätzliche Variable und installiere das Systemmodul.
    Code: PHP  [Auswählen]
    xtc_db_query("INSERT INTO " . TABLE_CONFIGURATION . " (configuration_key, configuration_value, configuration_group_id, sort_order, set_function, date_added) VALUES ('LANGUAGE_TEST', '', '3000', '1', 'xtc_cfg_input_email_language;LANGUAGE_TEST', now())");

    Eine neue PHP-Datei im Ordner admin/includes/extra/menu/ sollte etwa diesen Inhalt haben.
    Code: PHP  [Auswählen]
      $add_contents[BOX_HEADING_CONFIGURATION][] = array(
        'admin_access_name' => 'configuration',
        'filename' => FILENAME_CONFIGURATION,
        'boxname' => 'Language Test',
        'parameters' => 'gID=3000',
        'ssl' => ''
      );

    Jetzt solltest du einen neuen Menüpunkt Konfiguration -> Language Test haben, in dem deine Sprachstrings erfasst werden können.

    Gruß Karl

    fiveBytes

    • Mitglied
    • Beiträge: 117
    • Geschlecht:
    Re: Mehrsparchige Konstanten in System-Modul
    Antwort #4 am: 11. November 2020, 18:44:48
    Vielen Dank für Eure Anregungen, das hilft schon mal weiter. Ich denke ich werden den Weg von noRiddle beschreiten, sind dann zwar ein paar zusätzliche Tabellenspalten in der Tabelle configuration, aber ich denke damit komme ich meinen Anforderungen am nächsten ;-)

    Das Prinzip von Karl1 erschließt sich mir noch nicht so ganz, irgendwie sehe ich nicht, wie ich damit für ein spezielles Modul sprachabhängige Konstanten erzeugen kann!? Hab es allerdings auch noch nicht ausgetestet. Aber grundsätzlich würde ich es eben bevorzugen, wenn der Nutzer die Daten direkt beim Modul eintragen kann und nicht den "Umweg" über eine eigene Konfigurationsseite machen muss.

    Karl1

    • Experte
    • Beiträge: 1.805
    Re: Mehrsparchige Konstanten in System-Modul
    Antwort #5 am: 12. November 2020, 10:49:54
    Hallo fiveBytes,
    es ließ mir keine Ruhe und ich habe mir den Code nochmal genauer angesehen.
    Man kann zwar die Funktion xtc_cfg_input_email_language(), so wie sie ist, nicht im Systemmodul benutzen, aber man kann einen Umweg über eine eigene Klasse nutzen.

    Ich hab dir mal die Testdateien angehängt
    - admin/includes/classes/fivebytesClass.php
    - admin/includes/modules/system/fivebytestest.php
    - lang/german/modules/system/fivebytestest.php
    (Englisch habe ich mir gespart).
    In der Klasse findest du noch die  If-Abfrage für "SMTP_PASSWORD", dort könntest du sogar ein Passwortfeld erzeugen.

    Brauchst nur das Systemmodul "FiveBytes Sprachentestmodul" installieren.

    Gruß Karl

    Edit: Hier noch ein Screenshot!
    [ Für Gäste sind keine Dateianhänge sichtbar ]

    fiveBytes

    • Mitglied
    • Beiträge: 117
    • Geschlecht:
    Re: Mehrsparchige Konstanten in System-Modul
    Antwort #6 am: 12. November 2020, 11:43:39
    Hallo Karl1,

    ich verneige mich in Demut  :king: sehr geile Lösung. Genau so hatte ich mir das Ganze vorgestellt. Ich weiß noch nicht, ob ich heute noch dazu komme, aber sobal ich mein Modul damit umgerüstet habe, gebe ich noch mal kurz Bescheid.

    Noch kurz zu Info, es soll letztendlich zum autom. Befüllen nach festgelegtem Schema der META-Daten dienen.

    Vielen lieben Dank für Eure/Deine Bemühungen! :thx:

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.743
    • Geschlecht:
    Re: Mehrsparchige Konstanten in System-Modul
    Antwort #7 am: 12. November 2020, 15:01:13
    @Karl1
    Ah, nice, gut analysiert, dafür ist also die Neuheit in der /admin/modules_export.php.
    Code: PHP  [Auswählen]
    $class_method = explode('->', $value['set_function']);
    ...

    Ich frage mich allerdings: Soll das wohl die Lösung für das von mir zitierte Ticket sein ? Würde ich im ersten Moment für etwas umständlich ansehen. Allerdings kann man damit natürlich noch viel mehr machen als die Mehrsprachigkeit. So gesehen: Klasse.
    Und, ob das Laden und Instantiieren einer Klasse und Aufruf einer Methode der Klasse langsamer oder aufwändiger ist als mein zweimaliger Loop über die Sprachen, also im System-Modul und in der Sprachdatei, ist auch die Frage.

    Gruß,
    noRiddle

    fiveBytes

    • Mitglied
    • Beiträge: 117
    • Geschlecht:
    Re: Mehrsparchige Konstanten in System-Modul
    Antwort #8 am: 13. November 2020, 14:40:36
    Ich konnte die Anpassungen an meinem Modul nun vornhemen und es funzt supi (siehe auch: Screenshot), vielen Dank nochmal.

    Wer einen Shop mit sehr vielen Kategorien und/oder Produkten hat kann dieses Modul evtl. auch gut gebrauchen, es bietet die Möglichkeit die META-Angaben (Title und Description) von Kategorien und Produkten automatisch nach einem bestimmten, vorgegebenen Schema ausfüllen zu lassen, sobald der Datensatz gespeichert bzw. aktualisiert wird. Außerdem können die META-Angaben (Title und Description) auch schon bestehender Kategorien und/oder Produkte für sämtliche Sprachen nach den eingestellten Schemas erzeugt werden. Neben dem Screenshot habe ich daher auch gleich das ganze Modul mit angehängt, viel Spaß damit.

    Karl1

    • Experte
    • Beiträge: 1.805
    Re: Mehrsparchige Konstanten in System-Modul
    Antwort #9 am: 18. November 2020, 11:46:48
    Hallo fiveBytes,
    hatte leider erst heute Zeit gefunden dein Modul in einem Testshop zu installieren.

    Klappte soweit ganz gut, allerdings bekam ich beim Neue META-Angaben generieren: eine weiße Seite.

    Code: PHP  [Auswählen]
    Call to undefined function parse_multi_language_value() in File: ...\admin\includes\modules\system\fivebytes_meta_update.php on Line: 234

    Da fehlt
    Code: PHP  [Auswählen]
                    require_once(DIR_FS_INC.'parse_multi_language_value.inc.php');

    Gruß Karl

    fiveBytes

    • Mitglied
    • Beiträge: 117
    • Geschlecht:
    Re: Mehrsparchige Konstanten in System-Modul
    Antwort #10 am: 18. November 2020, 12:04:12
    Hallo Karl,

    danke für den Hinweis, allerdings kann ich das Ganze nicht reproduzieren, bei mir funzt das reibungslos, die Klasse includiert ja bereits die nötige Funktion?! Ich bin daher ein wenig überfragt, was da in Deinem Testshop schief läuft, sorry.

    Aber ggf. hilft bei Dir eine Überprüfung, ob die Funktion existiert:
    if ( !function_exists('parse_multi_language_value') ) require_once(DIR_FS_INC.'parse_multi_language_value.inc.php');

    Karl1

    • Experte
    • Beiträge: 1.805
    Re: Mehrsparchige Konstanten in System-Modul
    Antwort #11 am: 18. November 2020, 12:20:51
    Hab's nochmal probiert, bei mir kommt ohne "require_once..." in der Funktion setMetaData() die weiße Seite.
    Vielleicht liegt es an der lokalen Installation.

    Egal, solange es bei dir funktioniert!

    Gruß Karl
    2 Antworten
    1842 Aufrufe
    08. Juli 2015, 16:23:04 von Godzilla
    1 Antworten
    1155 Aufrufe
    21. Mai 2016, 15:09:33 von noRiddle (revilonetz)
    0 Antworten
    1694 Aufrufe
    23. Juli 2013, 12:27:55 von cole
    5 Antworten
    4124 Aufrufe
    14. Oktober 2012, 02:41:38 von flth
               
    anything