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: Merkmale Dropdownfelder einfärben

    profidrucker

    • Neu im Forum
    • Beiträge: 48
    Merkmale Dropdownfelder einfärben
    am: 03. Februar 2023, 09:03:15
    Ich habe meinen Shop in 2.0.7.2 neu aufgebaut und fast alles läft wieder wir vorher (2.0.4.2).
    Aber...

    Im modifizierten Template xtc5 habe ich folgendes eingefügt, um aus dem Merkmal die Hintergrundfarbe des Dropdownfeldes abzuleiten.
    \templates\xtc5\module\product_options\product_options_dropdown.html

    <select onchange="this.className=this.className.className" onClick="this.style.backgroundColor = this.options[this.selectedIndex].style.backgroundColor" style="width:350px" name="id[{$options_data.ID}]" id="{$options_data.ID}">
          {foreach key=key_data item=item_data from=$options_data.DATA}
          {if $item_data.TEXT=='gelb'}
            <option data-attrdata="{$item_data.JSON_ATTRDATA}" value="{$item_data.ID}" style="background-color:#ffffcc" {if $item_data.CHECKED == '1'} selected="selected"{/if}> &nbsp; {$item_data.TEXT} {if $item_data.PRICE != ''}{$item_data.PREFIX} {$item_data.PRICE}{/if} </option>
          {/if}
    ... usw für blau, rosa und grün

    Nun hat sich dort aber ein heimtückisches Umlautproblem eingenistet, das Merkmal in 'grün' wird nicht mehr erkannt.
    PHP 8.1 ist auf utf8, die Datenbankverbindung und die Kollation der Tabellen und Textfelder stehen auf utf8_general_ci. In der Datenbank stimmt der Umlaut, in der Darstellung Front- und Backend und im Seitenquelltext auch.
    Nur eben bei  {if $item_data.TEXT=='grün'} wird das 'grün' offensichtlich nicht erkannt, der Hintergrund bleibt weiß.
    Da die Erkennung der anderen Farben funktioniert, kann es wohl nur am Umlaut liegen. Bei einer testweisen Umbenennung auf 'grun' funktioniert es, nach der Rückbenennung auf 'grün' nicht mehr.

    Was kann ich tun? Habt ihr einen Tipp?

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

    Timm

    • Fördermitglied
    • Beiträge: 6.258
    Re: Merkmale Dropdownfelder einfärben
    Antwort #1 am: 03. Februar 2023, 09:43:57
    Moin

    Schau mal in der .htaccess, der includes/configure.php und im Backend unter Sprachen, ob überall das gleiche Charset eingestellt ist. Auf die unterschiedliche Schreibweise achten.

    Offtopic:
    Das xtc5 Template ist im Normalfall nicht responsive und daher ungeeignet für mobile Geräte.

    Gruß Timm

    profidrucker

    • Neu im Forum
    • Beiträge: 48
    Re: Merkmale Dropdownfelder einfärben
    Antwort #2 am: 03. Februar 2023, 10:00:56
    Vielen Dank für die Antwort.

    .htaccess
    AddDefaultCharset UTF-8
    #AddDefaultCharset ISO-8859-15

    configure.php
    defined('DB_SERVER_CHARSET') or define('DB_SERVER_CHARSET', 'utf8'); // set db charset 'utf8' or 'latin1'

    Sprachen Konfiguration
    Name: Deutsch
    Codierung: de
    meta-content: utf-8

    Die temporäre Umstellung der .htaccess auf ISO-8859-15  (mit Cache löschen) brachte keine Änderung.
    Bis auf die zwei Schreibweisen UTF-8 und utf8 habe ich keine Unterschiede gesehen. Die Schreibweisen sind auch nicht von mir, zumindest nicht bewusst.

    Die obigen Einstellungen stimmen auch mit dem alten Shop 2.0.4.2 überein, ebenso die Datenbankverbindung und Kollation.
    Sollte der Unterschied in PHP 8.1 und vorher PHP 7.4 liegen?
    Ich habe schon feststellen müssen, dass in manchen Dingen PHP 8.1 anders als 7.4 reagiert.
    Selbst wenn, das Wort 'grün' kommt ja richtig im Seitenquelltext an.

    Gruß Steffen

    profidrucker

    • Neu im Forum
    • Beiträge: 48
    Re: Merkmale Dropdownfelder einfärben
    Antwort #3 am: 03. Februar 2023, 13:18:22
    in der \includes\modules\product_attributes.php
    die Übergabe des Attributnamens mit  xtc_utf8_decode() ergänzt:

     $products_options_data[$row]['DATA'][$col] = array(
                'ID' => $products_options['products_options_values_id'],
                'TEXT' => xtc_utf8_decode($products_options['products_options_values_name']),

    Nun wird 'grün' erkannt, obwohl auf im Dropdown als auch im Seitenquelltext statt des ü eine schwarze Raute mit Fragezeichen erscheint. Es wäre auch zu einfach gewesen.

    profidrucker

    • Neu im Forum
    • Beiträge: 48
    Re: Merkmale Dropdownfelder einfärben
    Antwort #4 am: 03. Februar 2023, 13:31:54
    Ich habe die Lösung gefunden.
    Die Abfrage lautet nun:

    {if $item_data.TEXT=="60g grün"}

    Damit wird 'grün' erkannt.

    Das xtc_utf8_decode() ist somit auch nicht nötig.
    4 Antworten
    2630 Aufrufe
    07. März 2009, 13:30:43 von vsell
    4 Antworten
    3088 Aufrufe
    09. April 2013, 13:39:58 von kulli
    2 Antworten
    2341 Aufrufe
    07. November 2010, 20:59:35 von web28
               
    anything