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: HTML-Validierungsfehler in Shopversion 1.06 r4642 (checkout_payment)

    maidofkent

    • Fördermitglied
    • Beiträge: 124
    Guten Tag!

    Nach dem Update auf Version 1.06 r4642 führe ich eine html-Validierung durch. Dabei bekomme ich auf der checkout_payment-Seite diese Fehlermeldung:
    value of attribute "id" invalid: "1" cannot start a name

    Der Seitenquellcode sieht folgendermaßen aus:
    Code: XML  [Auswählen]
    <table class="paymentblock" width="100%" border="0" cellspacing="0" cellpadding="6">
      <tr>
        <td class="header" width="1%"><input type="radio" name="payment" value="invoice" id="1" /></td>

    Die Daten werden aus dem Datei templates/.../module/checkout_payment.html  {$PAYMENT_BLOCK} geholt, die wiederum wie nachstehend in dem Datei templates/../module/checkout_payment_block.html stehen:
    Code: XML  [Auswählen]
    {foreach name=aussenpayment item=module_data from=$module_content}
      <tr>
        <td class="header left" width="1%">{$module_data.selection}</td>

    Ich finde aber nicht heraus, wo {$module_data.selection} definiert ist, um dort den Teil id="1" ändern zu können. Ich wäre sehr dankbar, wenn man mir hier helfen könnte.

    Vielen Dank im Voraus und schöne Grüsse aus Hamburg.



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

    burrito

    • Viel Schreiber
    • Beiträge: 535
    • Geschlecht:
    checkout_payment.php

    ca. Zeile 179

    burrito

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.988
    • Geschlecht:
    Nöö, Zeile 169.
    Habe jetzt nicht genau verfolgt warum dort eine ID und warum sie numerisch gesetzt wird, jedenfalls darf eine ID nicht mit einer Zahl beginnen.
    Man müsste sich den Code also mal genauer anschauen um zu sehen ob und wie man das ohne Fehler zu produzieren ändern kann.

    Gruß,
    noRiddle

    maidofkent

    • Fördermitglied
    • Beiträge: 124
    Vielen Dank. Schaffe es heute nicht mehr aber werde morgen probieren, was passiert, wenn man den id weglässt bzw. einen anderen Wert einsetzt anstatt einer Zahl.

    müde Grüsse aus Hamburg

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.988
    • Geschlecht:
    Einen anderen Wert als eine Zahl wird nichts bringen da das ganze in einer foreach-Schleife steht und sich die ID so zusammensetzt:
    Code: PHP  [Auswählen]
    'id="'.($i+1).'"'

    Was ginge wäre dann höchstens sowas:
    Code: PHP  [Auswählen]
    'id="p-'.($i+1).'"'

    Ich konnte keinen Grund für die ID finden.
    Vermute ist eine Vorbereitung für die Nutzung von label zusammen mit input um auch den Text anklicken zu können und nicht genau den Radio-Button anvisieren zu müssen.
    Hab's aber nicht zu Ende analysiert...

    Gruß,
    noRiddle

    maidofkent

    • Fördermitglied
    • Beiträge: 124
    @noriddle - So etwas meinte ich auch mit anderem Wert.

    Ich habe jetzt in checkout_payment.php die Zeile
    Code: PHP  [Auswählen]
    //web28 - 2012-04-27 - FIX pre-selection the first payment option
          $selection[$i]['checked'] = 1;
        } else {
          $selection[$i]['checked'] = 0;
        }

        if (sizeof($selection) > 1) {
          $selection[$i]['selection'] = xtc_draw_radio_field('payment', $selection[$i]['id'], ($selection[$i]['checked']), 'id="'.($i+1).'"'); //web28 - 2010-11-23 - FIX pre-selection the first payment option
        } else {
          $selection[$i]['selection'] = xtc_draw_hidden_field('payment', $selection[$i]['id']);
        }

     
    so geändert, wie oben von noriddle vorgeschlagen:
    Code: PHP  [Auswählen]
    //web28 - 2012-04-27 - FIX pre-selection the first payment option
          $selection[$i]['checked'] = 1;
        } else {
          $selection[$i]['checked'] = 0;
        }

        if (sizeof($selection) > 1) {
          $selection[$i]['selection'] = xtc_draw_radio_field('payment', $selection[$i]['id'], ($selection[$i]['checked']), 'id="p-'.($i+1).'"'); //web28 - 2010-11-23 - FIX pre-selection the first payment option
        } else {
          $selection[$i]['selection'] = xtc_draw_hidden_field('payment', $selection[$i]['id']);
        }

     

    Die Seitenquellcode sieht jetzt so aus
    Code: XML  [Auswählen]
    <table class="paymentblock" width="100%" border="0" cellspacing="0" cellpadding="6">
      <tr>
        <td class="header" width="1%"><input type="radio" name="payment" value="invoice" id="p-1" /></td>
    und ich bekomme kein Validierungsfehler mehr angezeigt.

    Im checkout_confirmation wird die Zahlungsart weiterhin übernommen und auch ansonsten konnte ich keine Probleme feststellen.

    web28

    • modified Team
    • Beiträge: 9.404
    Die ID wird für den Javascript Check benötigt, der Check funktioniert auch mit der Änderung

    [EDIT] Für die neue Version wird das mit id="rd-' (rd steht für radio) gefixt, sowohl in der checkout_shipping und checkout_payment

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.988
    • Geschlecht:
    Aah, Javascript-Check, danach hatte ich natürlich nicht geschaut...

    Merci,
    Gruß,
    noRiddle

    maidofkent

    • Fördermitglied
    • Beiträge: 124
    Auf der Seite habe ich nun ein weiteres Problem. Wo kommt der nachstehende html-Abschnitt her?

    Code: XML  [Auswählen]
    <td colspan="2" width="100%"><strong><table><tr><td>......

    Im Template in der Datei checkout_payment_block.html steht diese Zeile:

    Code: XML  [Auswählen]
    <td class="payright" colspan="2" width="100%">{$module_data.description}</td>

    Ich möchte dort '<strong>' '</strong> entfernen und finde nicht heraus in welcher Datei es sich befindet.

    Auch hier wäre ich für jede Hilfe dankbar.

    Grüsse aus Hamburg
    11 Antworten
    7802 Aufrufe
    28. September 2012, 15:50:22 von nkuegler
    1 Antworten
    2739 Aufrufe
    09. Juni 2010, 19:05:40 von 0815
    7 Antworten
    4251 Aufrufe
    11. Mai 2015, 23:23:54 von toppi
               
    anything