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: MODUL: Neuer Attribute Price Updater

    Karl1

    • Experte
    • Beiträge: 1.879
    Re: MODUL: Neuer Attribute Price Updater
    Antwort #525 am: 31. März 2022, 17:25:34
    Hallo profidrucker,
    probier mal folgendes.

    Füge in der Datei "/includes/extra/modules/products_attributes_data/web0null_attribute_price_updater.php" vor der letzten schließenden geschweiften Klammer folgendes ein.

    Code: PHP  [Auswählen]
            if($_SESSION['customers_status']['customers_status_show_price'] != 0) {
                    $tax_rate = $xtPrice->TAX[$product->data['products_tax_class_id']];
                    if($tax_rate > 0 && $_SESSION['customers_status']['customers_status_show_price_tax'] != 0) {
                            $products_options_data[$row]['PRODUCTS_TAX_INFO'] = sprintf(TAX_INFO_INCL, $tax_rate.' %');
                    }
                    if($tax_rate > 0 && $_SESSION['customers_status']['customers_status_show_price_tax'] == 0 && $_SESSION['customers_status']['customers_status_add_tax_ot'] == 1) {
                            $products_options_data[$row]['PRODUCTS_TAX_INFO'] = sprintf(TAX_INFO_ADD, $tax_rate.' %');
                    }
                    if($tax_rate > 0 && $_SESSION['customers_status']['customers_status_show_price_tax'] == 0 && $_SESSION['customers_status']['customers_status_add_tax_ot'] == 0) {
                            $products_options_data[$row]['PRODUCTS_TAX_INFO'] = sprintf(TAX_INFO_EXCL, $tax_rate.' %');
                    }
            }

    In deiner Templatedatei solltest du dann die Variable so anzeigen können:

    Code: PHP  [Auswählen]
    {if $options.0.PRODUCTS_TAX_INFO}{$options.0.PRODUCTS_TAX_INFO}{/if}

    Gruß Karl

    profidrucker

    • Neu im Forum
    • Beiträge: 47
    Re: MODUL: Neuer Attribute Price Updater
    Antwort #526 am: 01. April 2022, 11:58:02
    Hallo Karl,
    ein großes Dankeschön! Funktioniert super.
    Gruß Steffen

    Roberto75

    • Viel Schreiber
    • Beiträge: 836
    Re: MODUL: Neuer Attribute Price Updater
    Antwort #527 am: 24. Mai 2022, 11:10:09
    Hallo,

    nach dem Umstellen auf PHP 8.0 kommt diese Warnmeldung:

    Code: PHP  [Auswählen]
    Undefined variable $json_onlytext in File: /www/htdocs/.../.../includes/extra/modules/products_attributes_data/web0null_attribute_price_updater.php on Line: 26
    Undefined variable $json_protext in File: /www/htdocs/.../.../includes/extra/modules/products_attributes_data/web0null_attribute_price_updater.php on Line: 27
    Undefined variable $json_insteadtext in File: /www/htdocs/.../.../includes/extra/modules/products_attributes_data/web0null_attribute_price_updater.php on Line: 28

    Die betreffenden Zeilen sind:

    Code: PHP  [Auswählen]
            'onlytext'     => $json_onlytext ? $json_onlytext : TXT_ONLY,
            'protext'      => $json_protext ? $json_protext : TXT_PER,
            'insteadtext'  => $json_insteadtext ? $json_insteadtext : TXT_INSTEAD,

    Kann mir einer die Lösung nennen?

    Gruß

    Robert

    Karl1

    • Experte
    • Beiträge: 1.879
    Re: MODUL: Neuer Attribute Price Updater
    Antwort #528 am: 24. Mai 2022, 11:44:24
    Hallo Robert,
    mach jeweils ein "isset($variable)" draus, z.B.:

    Code: PHP  [Auswählen]
    isset($json_onlytext)

    Gruß Karl

    Roberto75

    • Viel Schreiber
    • Beiträge: 836
    Re: MODUL: Neuer Attribute Price Updater
    Antwort #529 am: 24. Mai 2022, 12:40:23
    Danke Karl, hat bestens funktioniert. Vielleicht kannst Du mir auch noch für das Modul Freitextfeld helfen, da kommt diese Meldung:

    Code: PHP  [Auswählen]
    Undefined array key 1 in File: /www/htdocs/.../.../includes/rpa-com/rpa_custom_inputs.class.php on Line: 425

    Die Zeilen sind folgende, wobei die list($text,.....   die Zeile 425 ist:

    Code: PHP  [Auswählen]
    if ((strpos($text, 'TEXTFELD') !== false) || (strpos($text, 'TEXTAREA') !== false)) {
    list($text, $maxlength) = explode('$', $text);
    return $maxlength;

    Karl1

    • Experte
    • Beiträge: 1.879
    Re: MODUL: Neuer Attribute Price Updater
    Antwort #530 am: 24. Mai 2022, 15:15:15
    Hallo Robert,
    ganz so einfach ist das nicht, weil ich nicht weiß was da rauskommen soll.
    Die Funktion explode soll den String $text bei jedem Vorkommen von "$" zerlegen.
    In $text kommt aber kein Dollarzeichen ("$") vor, deshalb gibt es auch keinen "key 1" und die Meldung wird generiert.

    Du könntest das Vorkommen von "$" vorher abfragen indem du die Zeile 424 änderst:

    Code: PHP  [Auswählen]
    if (((strpos($text, 'TEXTFELD') !== false) || (strpos($text, 'TEXTAREA') !== false)) && (strpos($text, '$') !== false)) {

    Ob dafür dann eine andere Meldung, z.B. "Warning: Undefined variable $maxlength" kommt kann ich nicht sagen.

    Gruß Karl

    Roberto75

    • Viel Schreiber
    • Beiträge: 836
    Re: MODUL: Neuer Attribute Price Updater
    Antwort #531 am: 24. Mai 2022, 15:52:00
    Wenn ich die Zeile einfüge, kommt zwar keine Warnmeldung mehr, aber man kann keinen Text mehr in das Textfeld schreiben.
    Hier ist der längere Abschnitt des Codes, vielleicht kannst Du damit mehr anfangen. Es soll hier die maximale erlaubte Textlänge geprüft werden, die in der Konfiguration des Moduls bzw. beim Anlegen des Attributs in Zeichenlänge angegeben werden kann.

    Code: PHP  [Auswählen]
    static public function is_textfield($options_values_name, $check = 'equal', $calculate = '')
            {
                    if (!rpa_Module::module_check('textfeld')) {
                            return false;
                    }
                    $calculateArr = ($calculate ? explode(',', $calculate) : array());
                    $txt_array = (count($calculateArr) ? $calculateArr : explode(',', TEXTFIELDS));
                    $options_values_name == trim($options_values_name);

                    foreach ($txt_array as $entry) {
                            if (($check == 'strpos') && (strpos($options_values_name, $entry) !== false)) {
                                    return true;
                            }

                            #return true;
                    }

                    return false;
            }

            static public function get_input_maxlength($text)
            {
             if ((strpos($text, 'TEXTFELD') !== false) || (strpos($text, 'TEXTAREA') !== false)) {
                            list($text, $maxlength) = explode('$', $text);
                            return $maxlength;
                    }

                    return 0;
            }

            static public function string_length($text)
            {
                    $length = (strtolower($_SESSION['language_charset']) == 'utf-8' ? mb_strlen($text) : strlen($text));
                    return $length;
            }

            static public function renameFilename($val)
            {
                    $new = preg_replace('=(\\s+)=', '_', $val);
                    $map = array("\xe4" => 'ae', "\xc4" => 'ae', "\xf6" => 'oe', "\xd6" => 'oe', "\xdc" => 'ue', "\xfc" => 'ue', "\xdf" => 'ss', '&' => '_', "\xe0" => 'a', "\xe9" => 'e', "\xe8" => 'e');
                    $new = str_replace(array_keys($map), array_values($map), $new);
                    $new = preg_replace('#[^A-Za-z0-9_.-]#', '', $new);
                    return $new;
            }
    }

    define('TEXTFIELDS', 'TEXTFELD,TEXTAREA,DATEPICKER');
    define('TEXTFIELDS_CALCULATE', 'TEXTFELD,TEXTAREA');
    define('RPA_MULTISELECT_CHECKBOXES', false);
    define('DIR_RPA_COM', DIR_FS_CATALOG . 'includes/rpa-com/');
    require_once (DIR_RPA_COM . 'rpa_module.php');
    require_once (DIR_FS_INC . 'xtc_oe_get_options_values_name.inc.php');
    require_once (DIR_FS_INC . 'xtc_oe_get_options_name.inc.php');

    ?>
     

    Karl1

    • Experte
    • Beiträge: 1.879
    Re: MODUL: Neuer Attribute Price Updater
    Antwort #532 am: 24. Mai 2022, 16:31:20
    Hallo Robert,
    falls das hier nicht hilft, dann mach bitte ein neues Thema auf - hat nichts mit dem Price Updater zu tun.

    Zwei Möglichkeiten:
    - du sorgst dafür, dass deine Variable $text auch das Dollarzeichen und die erwartete folgende Zahl für maxlength enthält (beste Lösung).
    - du änderst den Code wie folgt und vergibst für maxlength einen Standardwert (im Beispiel 50). Enthält $text kein "$" wird 50 übergeben.

    Code: PHP  [Auswählen]
    $maxlength = 50;
    if (strpos($text, '$') !== false) list($text, $maxlength) = explode('$', $text);

    Gruß Karl

    newbee79

    • Fördermitglied
    • Beiträge: 185
    • Geschlecht:
    Re: MODUL: Neuer Attribute Price Updater
    Antwort #533 am: 08. Juni 2022, 17:54:26
    Hi zusammen,

    muss mich mal anhängen - habe das Modul 2.27 gerade installiert ( Shop 2.0.7.0 und Template  tpl_modified_responsive_8, php 8.1 ) und es tut sich nichts in Sachen Preisänderung?!

    Also unten die Zeile mit "in dieser Ausführung" ändert sich, aber nicht der originalen Preis....

    Alle Dateien hochgeladen, Modul installiert,  Cache geleert etc.

    Habe auch bereits die eine oder andere Änderung aus den Posts hier versucht, geht aber nichts.

    Vielleicht jemand eine Idee?

    Schöne Grüße,
    David

    karsta.de

    • Experte
    • Beiträge: 3.156
    Re: MODUL: Neuer Attribute Price Updater
    Antwort #534 am: 09. Juni 2022, 09:27:57
    Du hast aber schon den Button Preis neu berechnen > Ändert auch den Originalpreis im Template. Rechtlich abklären! bei der Modulinstallation dafür auf JA gestellt?
    Bei meinen Test läuft das Modul ohne Fehlermeldungen mit PHP8.1 und tut was es soll.

    BG Karsta

    newbee79

    • Fördermitglied
    • Beiträge: 185
    • Geschlecht:
    Re: MODUL: Neuer Attribute Price Updater
    Antwort #535 am: 09. Juni 2022, 11:15:22
    Hi Karsta.

    Klaro habe ich den aktiviert. ;-)

    Auch mal wieder an und aus, dann dazwischen Shop- und Browsercache geleert... aber der originale Preis ändert sich nicht.

    Kann es sein, dass die Klasse des originalen Preises im Template nicht der des Moduls entspricht? Muss man das irgendwo einstellen?
    Bin gerade nicht am "Shop-Rechner" und kann das jetzt leider nicht prüfen, erst heute Abend wieder. :-?

    Gruß David

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.986
    • Geschlecht:
    Re: MODUL: Neuer Attribute Price Updater
    Antwort #536 am: 09. Juni 2022, 17:59:37
    Gibt es Javascript-Fehler in der Browser-Konsole ?
    Am Besten wäre ein Link zum Shop.

    Gruß,
    noRiddle

    newbee79

    • Fördermitglied
    • Beiträge: 185
    • Geschlecht:
    Re: MODUL: Neuer Attribute Price Updater
    Antwort #537 am: 09. Juni 2022, 20:56:47
    Ahoi!

    Habe gerade herausgefunden, warum es nicht ging... es lag jetzt tatsächlich an den "Klassen".

    Im Modul wird in der Datei includes/extra/application_bottom/web0null_attribute_price_updater.php die Klasse ".pd_summarybox" angesprochen - diese heißt bei mir im Template aber nur ".pd_summary".

    Abgeändert und jetzt geht's  :-B ... vielleicht kann den Tipp ja irgendwer nochmals brauchen.

    Vielen Dank für Eure Mühe!

    @noRiddle: Javascript-Fehler hatte er keine angezeigt, hatte ich auf deinen Tipp hin auch probiert. Trotzdem vielen Dank.

    Grüße, David

    Viol

    • Fördermitglied
    • Beiträge: 2.279
    Re: MODUL: Neuer Attribute Price Updater
    Antwort #538 am: 16. Dezember 2022, 16:09:20
    Ich habe nach Änderung der Preisangabenverordnung bzgl. "Sonderangeboten" einige begriffliche Änderungen vorgenommen, die aber nur dann funktionieren, wenn die Artikel keine Attribute haben. Ich denke, dass es am Attribute Price Updater liegt, der eine eigene Sprachdatei hat.
    Dazu kommt, dass je nach Kategorie  "Unser vorheriger Preis" mit " Preis der Einzelartikel" ersetzt werden soll. Das klappt auch ganz gut, wenn der Artikel keine Attribute hat.
    Das habe ich in der template/module/includes/price_info.html so umgesetzt:

    Code: PHP  [Auswählen]
    {* START Produkt Sonderpreis Langform mit Ausgabe Alter Preis, Neuer Preis, Sie sparen *}
                {if ($smarty.session.CatPath == '5') || ($smarty.session.CatPath == '150')|| ($smarty.session.CatPath == '156') || ($smarty.session.CatPath == '5_124')} <span class="old_price">
                    <span class="small_price">{$smarty.const.ANSTATT}</span>
                    {$price_data.PRODUCTS_PRICE_OLD_PRICE}
                                    <span class="new_price">
                  <span class="small_price">{$smarty.const.ONLY}</span>{$price_data.PRODUCTS_PRICE_SPECIAL_PRICE}</span>  
                  </span>
                  <span class="save_price">
                    {$smarty.const.YOU_SAVE} {$price_data.PRODUCTS_PRICE_SAVE_PERCENT}% / {$price_data.PRODUCTS_PRICE_SAVE_DIFF}
                  </span>
                                    {else} <span class="old_price">
                    <span class="small_price">{$smarty.const.INSTEAD}</span>
                    {$price_data.PRODUCTS_PRICE_OLD_PRICE}
                  </span>
                  <span class="new_price">
                    <span class="small_price">{$smarty.const.ONLY}</span> {$price_data.PRODUCTS_PRICE_SPECIAL_PRICE}
                  </span>
                  <span class="save_price">
                    {$smarty.const.YOU_SAVE} {$price_data.PRODUCTS_PRICE_SAVE_PERCENT}% / {$price_data.PRODUCTS_PRICE_SAVE_DIFF}
                  </span>

    In der lang/german/german.php habe ich:

    Code: PHP  [Auswählen]
    define('INSTEAD','Preis der Einzelartikel ');//Unser bisheriger Preis
    define('ANSTATT','Unser vorheriger Preis ');

    entsprechend ergänzt.
    Wenn nun das auch in der \lang\german\extra\web0_attribut_priceupdater.php

    Code: PHP  [Auswählen]
    define('TXT_INSTEAD', '<span class="small_price">Preis der Einzelartikel </span> ');
    define('TXT_ANSTATT','<span class="small_price">Unser vorheriger Preis </span>');

    gemacht wird, funktioniert das noch nicht.
    Ich habe dann die Variable in die \includes\extra\modules\products_attributes_data\web0null_attribute_price_updater.php

    Code: PHP  [Auswählen]
    anstatttext'  => isset($json_anstatttext) ? isset($json_anstatttext) : TXT_ANSTATT,

    und in die \includes\extra\application_bottom\web0null_attribute_price_updater.php

    Code: PHP  [Auswählen]
    $('.pd_summarybox .pd_price .old_price').html(data.insteadtext + symbolLeft + oldPrice + symbolRight);
                    $('.pd_summarybox .pd_price .old_price').html(data.anstatttext + symbolLeft + oldPrice + symbolRight);

    und

    Code: PHP  [Auswählen]
                    $('.productprice .productOldPrice').html(data.insteadtext + symbolLeft + oldPrice + symbolRight);
                    $('.productprice .productOldPrice').html(data.anstatttext + symbolLeft + oldPrice + symbolRight);

    Es funktioniert aber nicht, Vermutlich weil ich die Bedingungen für die Kategorien nicht im price_updater habe. Oder bin ich auf dem falschen Weg ?

    Timm

    • Fördermitglied
    • Beiträge: 6.256
    Re: MODUL: Neuer Attribute Price Updater
    Antwort #539 am: 16. Dezember 2022, 17:07:33
    Moin

    Lösch mal das Sonderangebot, speichere den Artikel und gib danach das Sonderangebot erneut ein und speichere. Aber nur einmal speichern. Dann nochmal testen mit diesem Artikel.

    Das hat zur Folge, dass in der DB kein Preis für die letzten 30 Tage steht. Sobald man einen Artikel nochmal speichert, selbst wenn man nichts geändert hat, steht in der DB der Preis der letzten 30 Tage und ist gleich dem aktuellen Standardpreis.

    Beim Priceupdater vom modified Team gibt es damit Probleme. Vielleicht ist das hier auch der Fall.

    Grüße Timm
    Shop Hosting
    296 Antworten
    134277 Aufrufe
    19. August 2021, 19:45:04 von zack
    1 Antworten
    2854 Aufrufe
    16. Januar 2014, 17:51:09 von web28
    2 Antworten
    3522 Aufrufe
    16. November 2012, 12:26:25 von jannemann
               
    anything