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: sitemap.html validiert nicht

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.990
    • Geschlecht:
    sitemap.html validiert nicht
    am: 04. Dezember 2011, 18:29:20
    Hallo zusammen.
    Da ich weder im Forum noch im Wiki noch im SVN trunk etwas darüber gefunden habe, hier also für alle zum Nachvollziehen:

    Die "/templates/YOUR_TEMPLATE/modules/sitemap.html" validiert nicht, da wenn eine Kategorie keine Unterkategorie besitzt, leere ul-tags erstellt werden.

    Dies liegt an folgendem Code:

    Code: PHP  [Auswählen]
    <div class="sitemapheader"><a href="{$module_data.CAT_LINK}">{$module_data.CAT_NAME}</a></div>
    <div class="sitemapcontent">
            <ul>
                    {foreach key=key_data item=item_data from=$module_data.SCATS}
                    <li><a href="{$item_data.link}">{$item_data.text}</a></li>
                    {/foreach}
            </ul>
    </div>
    </div>

    Um die ul-tags nur auszugeben, wenn auch Unterkategorien vorhanden sind muß man etwas wie folgendes tun:

    Code: PHP  [Auswählen]
    <div class="sitemapheader"><a href="{$module_data.CAT_LINK}">{$module_data.CAT_NAME}</a></div>
    <div class="sitemapcontent">
    {if $item_data.text ==''} {*added by noRiddle to prevent ul from displaying when no sub-categories => w3c validation*}
            <ul>
                    {foreach key=key_data item=item_data from=$module_data.SCATS}
                    <li><a href="{$item_data.link}">{$item_data.text}</a></li>
                    {/foreach}
            </ul>
    {/if} {*END added by noRiddle to prevent ul from displaying when no sub-categorie*}
    </div>
    </div>

    Nachdem ich vergeblich nach einer Lösung des nicht validen Codes gesucht hatte, hat mich folgender Post darauf gebracht, welcher in einem anderen Zusammenhang gepostet wurde:
    Sitemap Fehler 404

    Wenn ich ehrlich bin, hatte ich es mit dem Gegenteil versucht, nämlich:

    Code: PHP  [Auswählen]
    {if $item_data.text !==''}

    denn nur wenn es keine Subkat gibt, sollen ja keine ul-tags ausgegeben werden.
    Das funktionierte aber nicht, statt dessen eben das Gegenteil.  :-?

    Wer kann mich erhellen ?

    Zumindest, funktioniert es so und der Code validiert jetzt, da es keine leeren ul-tags mehr gibt.

    Grüsse an die Community,
    noRiddle

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

    Matt

    • Experte
    • Beiträge: 4.241
    Re: sitemap.html validiert nicht
    Antwort #1 am: 04. Dezember 2011, 19:47:31
    [...]
    Das funktionierte aber nicht, statt dessen eben das Gegenteil.  :-?
    [...]

    "item_data.text" steht an der Stelle noch gar nicht zur Verfügung und wird daher bei einem Vergleich auf einen leeren String auch immer "false" zurückgeben.

    [...]
    Zumindest, funktioniert es so und der Code validiert jetzt, da es keine leeren ul-tags mehr gibt.
    [...]

    Das Template hat im Bezug auf semantischen Quelltext IMHO ganz andere Probleme als eine nicht validierende Sitemap.

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.990
    • Geschlecht:
    Re: sitemap.html validiert nicht
    Antwort #2 am: 04. Dezember 2011, 20:25:08
    Hallo Matt.
    Das habe ich mir schon gedacht, daß die Variable noch nicht zur Verfügung steht an der Stelle.
    Warum aber funktioniert es dann ?

    Code: PHP  [Auswählen]
    {if $item_data.text !==''}

    muß dann aber doch auch "false" ergeben.
    In diesem Fall tauchen die leeren ul-tags aber wieder auf.

    Was verstehe ich nicht ?  :-?

    Schönen Sonntagabend,
    noRiddle

    P.S.: Semantischer Quelltext, tja, da arbeite ich im Template auch dran, Validierung ist aber wichtig und wird ja auch beworben (obwohl leider nicht korrekt).

    EDIT: Ist das nicht alles Quatsch was wir hier sagen ?
    Nur wenn die if -Abfrage "true" ergäbe, würden dann doch bei Kategorien mit Unterkategorien (zu recht) ul-tags gebildet.

    Matt

    • Experte
    • Beiträge: 4.241
    Re: sitemap.html validiert nicht
    Antwort #3 am: 04. Dezember 2011, 23:41:54
    [...]
    Code: PHP  [Auswählen]
    {if $item_data.text !==''}

    muß dann aber doch auch "false" ergeben.
    [...]

    Tut es auch. Schrieb ich bereits.

    [...]
    Code: PHP  [Auswählen]
    [...]
    {if $item_data.text ==''} [...]
    [...]

    gibt "true", weil leer (nicht gesetzt). Wenn du das Gegenteil von obigem meintest:

    Code: PHP  [Auswählen]
    {if $item_data.text ===''}

    würde auch "false" geben.

    [...]
    P.S.: Semantischer Quelltext, tja, da arbeite ich im Template auch dran, Validierung ist aber wichtig und wird ja auch beworben (obwohl leider nicht korrekt).
    [...]

    Semantik sollte vor Validität gehen, zumal Semantik Validität automatisch mit sich bringt wenn sauber implementiert. Der User, der aufgrund semantischem Markup trotz z.B. einer Sehbehinderung bei dir kaufen konnte, bringt dir Umsatz, der Button für 0 Fehler beim Validierungstest kostet dich nur Bandbreite, wenn du ihn einbindest.

    [...]
    Nur wenn die if -Abfrage "true" ergäbe, würden dann doch bei Kategorien mit Unterkategorien (zu recht) ul-tags gebildet.

    Gibt sie ja auch. Vermutlich ist "item_data" nur gesetzt wenn Unterkategorien vorhanden sind und "item_data.text" ergibt dann "true". So tief bin ich in Smarty auch nicht drin.

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.990
    • Geschlecht:
    Re: sitemap.html validiert nicht
    Antwort #4 am: 05. Dezember 2011, 07:55:09
    Hallo Matt.
    habe ich dich da verkehrt verstanden ?
    Schriebst du nicht:

    [...]
    "item_data.text" steht an der Stelle noch gar nicht zur Verfügung und wird daher bei einem Vergleich auf einen leeren String auch immer "false" zurückgeben.
    [...]

    Damit hast du doch gesagt, daß:

    Code: PHP  [Auswählen]
    {if $item_data.text ==''}

    "false" ergibt.
    Jetzt sagst du es ergibt "true".

    Dann sagst du, daß:

    Code: PHP  [Auswählen]
    {if $item_data.text ===''}

    das Gegenteil von obigem meint.

    Wie das ? Es sagt doch lediglich, daß hier auch der Typ verglichen wird, also integer, boleen, float, string, usw.

    Wenn "$item_data" noch nicht vergeben ist, wird in der Tat nur die 1. Variante "true" ergeben.
    Der Typenvergleich setzt ja voraus, daß "$item_data" bekannt ist und einen leeren String beinhaltet, was ja dann "false" ergeben muß und

    Code: PHP  [Auswählen]
    {if $item_data.text !==''}

    muß "false" ergeben, weil "$item_data.text" nicht gefüllt ist.

    Okay, soweit verstehe ich (hoffentlich).

    Das heißt, daß in dem von mir angewendeten Fall ul-tags ausgegeben werden, da ja die Aussage

    Code: PHP  [Auswählen]
    {if $item_data.text ==''}

    "true" ergibt.

    Warum aber werden keine leeren ul-tags ausgegeben, wenn "$item_data" nicht vorhanden ist ?
    Das kann ja nur passieren wenn die obige Aussage "false" ergibt.

    Irgendwie verstehe ich nur Bahnhof.

    Was du am Schluß sagst:

    [...]
    Gibt sie ja auch. Vermutlich ist "item_data" nur gesetzt wenn Unterkategorien vorhanden sind und "item_data.text" ergibt dann "true". So tief bin ich in Smarty auch nicht drin.

    geht ja überhaupt nicht, denn meine Abfrage nimmt ja den Fall an, daß der String leer ist.

    Sollte ich auf dem Schlauch stehen, bitte ich um Nachsicht.

    noRiddle

    P.S.: Vielleicht kann ja noch jemand anders Stellung nehmen ?

    Matt

    • Experte
    • Beiträge: 4.241
    Re: sitemap.html validiert nicht
    Antwort #5 am: 05. Dezember 2011, 08:42:17
    Ich hab's mir jetzt mal in meinem Testshop angesehen. Ich hatte darauf vertraut, dass das stimmt, was du oben schreibst. Dem ist nicht so. Dein Code verhindert keine leeren ul's, siehe http://xtc.wibros.de/shop_content.php?coID=8 (ul's zur besseren Erkennbarkeit auch ohne Blick in den Quellcode mit rotem Rahmen).

    Was am Ende des Tages auch nicht wirklich verwundert, denn {$item_data.text} ist immer leer, weil es noch gar nicht zur Verfügung steht. Es ist aber nie ein leere String.

    Wenn du wirklich leere ul's verhindern willst musst du auf die Größe des Arrays prüfen, über das iteriert werden soll.

    Code: PHP  [Auswählen]
    {if $module_data.SCATS|@sizeof!=0}

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.990
    • Geschlecht:
    Re: sitemap.html validiert nicht
    Antwort #6 am: 05. Dezember 2011, 08:48:55
    Du irrst.
    In deinem Testshop hast du ja das ul (oder sein li) rot umrahmt, welches dargestellt werden soll.
    In der ersten Kategorie, welche nur "Test" heißt gibt es eben keine leeren ul-tags.
    Ohne meine if-Anweisung gibt es dort aber leere ul-tags.

    Ich verstehe es ja auch nicht warum es funktioniert.

    Deine if-Anweisung klingt wenigstens logisch, werde ich gleich mal ausprobieren.

    Grüsse,
    noRiddle

    Matt

    • Experte
    • Beiträge: 4.241
    Re: sitemap.html validiert nicht
    Antwort #7 am: 05. Dezember 2011, 08:59:34
    Ja, großartig, falscher Code drin. Jetzt ist wieder deiner drin. :)

    http://xtc.wibros.de/shop_content.php?coID=8

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.990
    • Geschlecht:
    Re: sitemap.html validiert nicht
    Antwort #8 am: 05. Dezember 2011, 09:07:17
    Ja ist denn das... ?

    Bei mir funktioniert "mein" Code,
    d.h. es werden keine leeren ul-tags ausgegeben.

    Nochmal zum Klarstellen:
    Mit folgendem Code:

    Code: PHP  [Auswählen]
    <div class="sitemapcontent">
    {if $item_data.text == ''} {*added by noRiddle to prevent ul from displaying when no sub-categories => w3c validation*}
    <ul>
    {foreach key=key_data item=item_data from=$module_data.SCATS}
    <li>&raquo; <a href="{$item_data.link}">{$item_data.text}</a></li>
    {/foreach}
    </ul>
    {/if} {*END added by noRiddle to prevent ul from displaying when no sub-categories*}
    </div>

    Version 1.05 SP1a

     :nixweiss:  :nixweiss:

    Dein Code funktioniert und ist logisch, danke dafür.

    noRiddle

    DokuMan

    • modified Team
    • Beiträge: 6.669
    • Geschlecht:
    Re: sitemap.html validiert nicht
    Antwort #9 am: 05. Dezember 2011, 10:41:47
    Matts Lösung ist jetzt in r2438 im Trunk. :)
    Danke dafür!

    Tomcraft

    • modified Team
    • Gravatar
    • Beiträge: 46.369
    • Geschlecht:
    Re: sitemap.html validiert nicht
    Antwort #10 am: 05. Dezember 2011, 11:45:18
    Danke euch allen! :thx:

    Grüße

    Torsten
    1 Antworten
    2105 Aufrufe
    21. März 2016, 18:22:57 von Bonsai
               
    anything