single.php wird nicht immer gleich angezeigt

  • Hallo Leute,

    habe ein Problem, was mich gerade in den Wahnsinn treibt und ich hoffe, einer von euch kann mir helfen.

    Ich habe auf unserer Website http://www.polo-magazin.de den Blog nur als Newsspalte in der Mitte eingefügt, der Rest drumherum ist normales HTML. Und es funktioniert auch alles, wie es sein sollte. Nur bei einigen News wird auf der Unterseite die rechte Spalte nicht richtig angezeigt. Z.b. im alleresten Beitrag auf der Seite. Im zweiten Beitrag ist sie dann aber wieder richtig.
    Wie kann das sein? Schließlich ist die Vorlage - single.php - immer gleich. Wie kann das da dann unterschiedlich aussehen?

    Hoffe sehr, dass mir jemand weiterhelfen kann, denn ich weiß überhaupt, woran das liegen könnte.
    Freue mich auf eure Antworten.

    Gruß
    Katrin

    • Anzeige

    Hallo!

    Wenn du gerade an deiner Website arbeitest oder dein aktuelles Hosting überdenkst: Wir betreiben mit NetzLiving eine Hosting-Plattform, die speziell auf Performance, Sicherheit und einfache Verwaltung ausgelegt ist.

    • ✔️ Schnelle Ladezeiten (optimiert für WordPress & Co.)
    • ✔️ Deutsche Server & DSGVO-konform
    • ✔️ Persönlicher Support (kein 0815-Ticket-System)

    Mehr erfahren

  • Also ich schaue gerade im FF 3.5 und da klebt die rechte Sidebar in der Einzelansicht immer unter dem Beitrag, zumindest bei allen, die ich gerade getestet habe. Das ist insofern schon konsistent und passt zu den 143 Validierungsfehlern, die mir bei einem der Beiträge angezeigt wurden. Und ehrlich gesagt fange ich da nicht mal an in den Quelltext zu schauen, wenn so viel am Theme nicht stimmt. ;-)

  • Danke für deine Antwort.
    Bin leider noch Anfänger und das ist das erste Mal, das ich was mit Wordpress zu tun habe. Hoffe, das entschuldigt die vielen Fehler ein wenig.

    Ich selber benutze Firefox 2.0 (ich weiß, ist veraltet, aber es wird ja auch wahrscheinlich nicht jeder Nutzer der Website den neuesten haben) und da ist die Sidebar beim ersten Beitrag unterhalb des Artikels und beim zweiten Beitrag an der richtigen Stelle rechts neben dem Beitrag.

    Danke aber für den Hinweis. Werd mir dann mal den neuesten Firefox holen und vielleicht lässt sich das Problem dann ja besser lösen.

    Gruß
    Katrin

  • Zitat

    Ich selber benutze Firefox 2.0 (ich weiß, ist veraltet, aber es wird ja auch wahrscheinlich nicht jeder Nutzer der Website den neuesten haben)

    Doch, da würde ich beim Firefox durchaus von aus gehen. Durch das automatische Update ist es den Nutzern ja sehr leicht gemacht zu aktualisieren. ;-)

    Ich habe eben auch noch mal im IE8 geschaut: Richtig ist es bei Beitrag 2, falsch bei Beitrag 1, 3 und 4. Weiter habe ich da jetzt nicht getestet. Irgendwas stimmt da auf jeden Fall nicht.

    Den Validator kennst Du aber, oder?
    http://validator.w3.org/check?verbose=…o-magazin.de%2F

    Für die Startseite zeigt er leider obendrein auch noch einen Encoding-Fehler an.

    Für den Firefox würde ich Dir ansonsten die Web Developer Toolbar und/oder Firebug empfehlen. Mit beiden Tools kommt man Problemen dieser Art schnell auf die Spur.

  • Hab jetzt auch auf Firefox 3.5 upgedatet. Nur leider habe ich auch dann immer noch das gleiche Bild wie du beim IE8.

    Das Problem mit der Sidebar hatte ich übrigens noch nicht, als ich alles noch im Wordpress-Ordner hatte. Erst als ich die URL, in der das Blog angezeigt wurde, in den Stammordner verlegt hatte, tauchten die Probleme auf.

    Werd wohl noch ein wenig suchen müssen. Danke auf jeden Fall für deine Hilfe :-)

    Das mit dem Encoding Fehler hab ich auch schon bemerkt. Muss irgendwie mit Wordpress zusammenhängen. Obwohl da alles auf utf-8 eingestellt wird, werden Umlaute etc. nicht richtig angezeigt.

  • Hat jemand vielleicht noch ne Idee?
    Ich find das echt merkwürdig.
    Es kann doch nicht sein, dass die Sidebar mal richtig rechts und mal falsch unter dem Text ist. Die nutzen ja beiden die gleiche Datei single.php
    Wie kann es denn sein, dass die Darstellung so variiert?!
    Bin für jeden Hinweis dankbar.

    Gruß
    Katrin

  • Also in Deinem Theme steht oben (header.php vermutlich) das hier drin:

    PHP
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

    Das müsste natürlich auch UTF-8 heißen. Da der Server die Dateien als UTF-8 rausschickt, stellt der Browser sie auch so dar. Ich sehe jetzt auf Anhieb auch keine kaputten Umlaute.

    Update: Der kaputte Umlaut, den der Validator bemängelt, steht im meta-keywords-Tag. Wo auch immer die Keywords herkommen, sie werden offenbar nicht korrekt gespeichert. Falls sie fest in der header.php stehen, musst Du die Datei mal bitte als UTF-8 (ohne BOM!) abspeichern. Jeder gute Text-Editor kann das.

    Update 2: Aktuell sehe ich die Sidebar immer korrekt neben dem Text anstatt darunter. Hast Du was geändert? Die Variation kann auch durch Fehler im Inhalt des Beitrags kommen. Der kann ja HTML enthalten, und wenn das nicht korrekt ist, zerhaut es dann die nachfolgende Sidebar.

    Update 3: Die Validierungsfehler bleiben. Es sieht fast so aus, als würdest Du ein normales HTML-Template als XHTML ausgeben, deswegen die vielen Fehler wegen z.B. nicht geschlossener Tags. Wenn sich dazwischen ein echter Fehler verbirgt, sieht man ihn natürlich nicht. Außerdem spielt Dein Server irgnedwie mit dem Validator nicht richtig zusammen, ich kriege jedenfalls eine Einzelseite nicht validiert, außer ich lade den Quelltext hoch. Sehr komisch...

    Einmal editiert, zuletzt von Ammaletu (25. November 2009 um 11:41)

  • Also in Deinem Theme steht oben (header.php vermutlich) das hier drin:

    PHP
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

    Das müsste natürlich auch UTF-8 heißen. Da der Server die Dateien als UTF-8 rausschickt, stellt der Browser sie auch so dar. Ich sehe jetzt auf Anhieb auch keine kaputten Umlaute.

    Update: Der kaputte Umlaut, den der Validator bemängelt, steht im meta-keywords-Tag. Wo auch immer die Keywords herkommen, sie werden offenbar nicht korrekt gespeichert. Falls sie fest in der header.php stehen, musst Du die Datei mal bitte als UTF-8 (ohne BOM!) abspeichern. Jeder gute Text-Editor kann das.

    Hab das geändert. Der Fehler bleibt aber trotzdem.

    Zitat


    Update 2: Aktuell sehe ich die Sidebar immer korrekt neben dem Text anstatt darunter. Hast Du was geändert? Die Variation kann auch durch Fehler im Inhalt des Beitrags kommen. Der kann ja HTML enthalten, und wenn das nicht korrekt ist, zerhaut es dann die nachfolgende Sidebar.

    Das ist ja seltsam.
    Hab nichts geändert. Und bei mir wird die Sidebar leider auch weiterhin unterschiedlich angezeigt.
    Und der Fehler kommt auch, wenn ich einfach nur Text ohne HTML im Beitrag habe.

    Zitat


    Update 3: Die Validierungsfehler bleiben. Es sieht fast so aus, als würdest Du ein normales HTML-Template als XHTML ausgeben, deswegen die vielen Fehler wegen z.B. nicht geschlossener Tags. Wenn sich dazwischen ein echter Fehler verbirgt, sieht man ihn natürlich nicht. Außerdem spielt Dein Server irgnedwie mit dem Validator nicht richtig zusammen, ich kriege jedenfalls eine Einzelseite nicht validiert, außer ich lade den Quelltext hoch. Sehr komisch...

    Ich habe kein reines Wordpress-Theme, sondern nur den Loop in einen bestehenden HTML-Rahmen eingefügt. Diese index.php mit dem Loop und dem HTML-Rahmen liegt im Wordpress-Theme (unter wordpressPolo). Im Stammordner der URL liegt eine weitere index.php mit

    PHP
    require('./wordpressPolo/wp-blog-header.php');

    statt

    PHP
    require('./wp-blog-header.php');

    single.php sowie die eingebundene rechte Spalte (infospalte_wordpress.php) liegen ebenfalls im Theme-Ordner.

  • Der Umlaut-Fehler in den meta-Keywords ist noch drin. Die Angabe im content-type-Element muss "UTF-8" lauten, nicht "utf-8" (Groß- und Kleinschreibung ist da meines Wissens nach wichtig).

    Aus welchen Dateien Dein Theme aufgebaut ist, ändert nichts daran, dass es als XHTML ausgeliefert wird (laut Angabe im doctype), sich aber nicht an die XHTML-Konventionen hält. Damit meine ich z.B. das hier:

    PHP
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

    Was so aussehen sollte:

    PHP
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

    Das meckert der Validator bei Deiner Seite recht massiv an, und falls tatsächlich noch echte Fehler bestehen, kann man diese dazwischen halt nicht wirklich sehen.

    Einmal editiert, zuletzt von Ammaletu (25. November 2009 um 19:08)

  • Danke für den Tipp!
    Jetzt funktioniert das auch mit dem Validator.
    Allerdings gibt er jede Menge Errors aus, die ich nicht wirklich verstehe - sorry *zerknirscht guck*

    Kann man beim Überfliegen erkennen, ob da irgendwas verantwortlich für den Sidebar Fehler ist?

    Gruß
    Katrin

  • Ich poste hier mal den Code der single.php, vielleicht hilft das ja weiter?
    Wär für jeden Hinweis dankbar.



    Gruß
    Katrin

  • Nachtrag

    Wenn ich die folgenden drei Zeilen vor dem Loop lösche, dann habe ich auf den Seiten, auf denen es ein 'Bild_Unterseite' gibt (das jetzt ja nicht mehr angezeigt wird), das gleiche Problem, dass die Sidebar unterhalb des Textes klebt (statt rechts).

    PHP
    <?php $bild_single = get_post_meta($post->ID, 'Bild_Unterseite', $single = true);?>
    <?php $headline_U = get_post_meta($post->ID, 'headline_Unterseite', $single = true);?>
    <?php $subtitle_U = get_post_meta($post->ID, 'subheadline_Unterseite', $single = true);?>

    Vielleicht ist das ja ein Hinweis?

    Gruß
    Katrin

  • Zitat

    Kann man beim Überfliegen erkennen, ob da irgendwas verantwortlich für den Sidebar Fehler ist?

    Höchstens per Zufall, das ist doch gerade mein Argument dafür, die Seite möglichst fehlerfrei zu kriegen. ;-)


    Zitat

    Allerdings gibt er jede Menge Errors aus, die ich nicht wirklich verstehe - sorry *zerknirscht guck*

    Der Validator gibt unter jeder Fehlermeldung eigentlich eine halbwegs brauchbare Erklärung des Fehlers aus. Aber gut, schauen wir mal:
    - "required attribute" sollte klar sein, fehlt halt
    - "ID already defined" sollte auch klar sein -- IDs müssen eindeutig sein, dürfen also nicht doppelt vorkommen --> Mit Klassen statt ID arbeiten falls möglich.
    - "document type does not allow element "div" here" --> Nicht jedes Element draf überall stehen. In diesem Fall steht ein div innerhalb eines a-Elementes. Das ist ein Inline-Element und darf kein Block-Element enthalten. Mach ein span aus dem div.
    - "end tag omitted" --> XHTML, also Tags immer schließen. Für hr, br, img, meta etc. als <hr /> schreiben.
    - " character "&amp;" is the first character of a delimiter but occurred as data" --> Die spitzen Klammern, das Anführungszeichen und das Ampersand (&) muss immer maskiert werden, wenn es im Text auftaucht. Das Kaufmannsund als "&amp;".

    So, alle 300+ Fehler gehe ich nun auch nicht durch. Wie man sieht ist dadurch der Validator als Hilfsmittel zur Fehlersuche effektiv ausgeschaltet. :-/

    Ich schaue vielleicht später noch mal, woher die falsche Verschachtelung kommt, falls ich Zeit habe.

    Update:
    Wie ich dachte, es ist im Beitrag falsches HTML enthalten. Das hier ist z.B. ein Eintrag:

    PHP
    <div class="entry">
        <p>Die Chucker der vergangenen Saison 2009 national und international, Polo People, Nachwuchstalente, Stickmaker George Wood, die Berenberg Trilogie (Hamburg, München, Düsseldorf), Polo auf Sylt, Polo in Berlin, die Deutschen Meisterschaften High Goal – die neue Ausgabe von Polo+10 verspricht spannende und aktuelle Themen. Bis die druckfrischen Hefte ausgeliefert werden, dauert es nicht mehr lange. Wer bis dahin nicht warten kann: Das aktuelle Heft bereits jetzt als Download<br />
     <a href="http://www.netpurse.com/download/12" onclick="return NPclick(this)" class="link" >>> Download</a> (12,2 MB)</div>
     </div>

    Die beiden nicht maskierten ">" kann der Browser vielleicht noch ignorieren, aber dann wird ein div statt einem p geschlossen, und damit hast Du dann das entry-div zu früh zugemacht und alles nachfolgende rutscht auf die falsche Ebene. "#topbutton" und "#zurueck" sind plötzlich nicht mehr Teil von "#contentU" und "#infospalte_wordpress" ist nicht mehr Teil von "#main" sondern kommt erst danach.

    Das div musst Du manuell korrigieren, falls das so in den Beitrag eingefügt wurde (Schaue gerade in die single.php -- Ja, sieht nicht so aus, als käme das aus der Themedatei). Bei den nicht maskierten ">" bin ich mir aber nicht sicher, wie das passieren konnte: Das sollte WP eigentlich in jedem Fall beim Speichern korrekt ersetzen.

    Diesen Fehler sieht man mit Firebug übrigens in wenigen Minuten, wenn man eine korrekte Seite mit einer defekten vergleicht (oder die beabsichtigte Seitenstruktur kennt).

    Einmal editiert, zuletzt von Ammaletu (25. November 2009 um 19:33)

  • Aktueller Stand der Dinge

    Inzwischen ist es so, dass alle Einträge bis auf den dritten von oben die Sidebar an der richtigen Stelle haben.
    Gemacht habe ich eigentlich nichts, ich habe nur den Inhalt der single.php in eine neue Datei kopiert und diese wieder unter single.php abgespeichert.

    Trotzdem verstehe ich immer noch nicht, wie es zu diesem Fehler kommt.
    Hat jemand eine Erklärung dafür?
    Was kann man da machen?

    Gruß
    Katrin

  • Nachtrag

    Danke erstmal für deine auführliche Antwort und Hilfe.

    Hab allerdings noch eine Frage zu dem Update von dir:

    Zitat


    Update:
    Wie ich dachte, es ist im Beitrag falsches HTML enthalten. Das hier ist z.B. ein Eintrag:

    PHP
    <div class="entry">
        <p>Die Chucker der vergangenen Saison 2009 national und international, Polo People, Nachwuchstalente, Stickmaker George Wood, die Berenberg Trilogie (Hamburg, München, Düsseldorf), Polo auf Sylt, Polo in Berlin, die Deutschen Meisterschaften High Goal – die neue Ausgabe von Polo+10 verspricht spannende und aktuelle Themen. Bis die druckfrischen Hefte ausgeliefert werden, dauert es nicht mehr lange. Wer bis dahin nicht warten kann: Das aktuelle Heft bereits jetzt als Download<br />
     <a href="http://www.netpurse.com/download/12" onclick="return NPclick(this)" class="link" >>> Download</a> (12,2 MB)</div>
     </div>

    Die beiden nicht maskierten ">" kann der Browser vielleicht noch ignorieren, aber dann wird ein div statt einem p geschlossen, und damit hast Du dann das entry-div zu früh zugemacht und alles nachfolgende rutscht auf die falsche Ebene. "#topbutton" und "#zurueck" sind plötzlich nicht mehr Teil von "#contentU" und "#infospalte_wordpress" ist nicht mehr Teil von "#main" sondern kommt erst danach.


    Muss gestehen, dass ich das nicht ganz verstehe. Die <p> füge ja nicht ich hinzu, sondern das macht wordpress ja automatisch. Ich hab auch grad im Beitrag nachgesehen, da ist auch kein manuell eingefügtes <p> drin. Kann ich denn da überhaupt was machen?


    Gruß
    Katrin

  • Tja, so ganz verstehe ich im Moment auch nicht, wie das passiert. Wie gesagt, die spitzen Klammern sollte WP selber korrekt maskieren. Das p fügt WP ein, es müsste aber eigentlich auch das schließende p dafür einfügen. Wo kommt denn das schließende div in dem Eintrag her? Steht das so im Quelltext des Beitrages drin?

  • Das p fügt WP ein, es müsste aber eigentlich auch das schließende p dafür einfügen.

    Wenn ich mir das im Firebug ansehe, ist bei das schließende p übrigens zu sehen.


    Wo kommt denn das schließende div in dem Eintrag her? Steht das so im Quelltext des Beitrages drin?

    Das soll das

    PHP
    <div class="entry">

    schließen. Aber wahrscheinlich sollte ich hier wohl besser das div weglassen und dann die Klasse schließen, oder?


    Hab übrigens grad noch ein Problem, das ich auch schon unter "Allgemeines" hier gepostet habe. Aber du scheinst dich ja sehr gut mit Wordpress auszukennen und vielleicht hast du da ja auch einen Tipp für mich.
    Der Punkt: Ich komme nicht mehr ins Backend, ich kann mich nicht mehr als Admin einloggen, andere Benutzer funktionieren auch nicht mehr. Es ist zum Verzweifeln. Gestern lief noch alles und heute morgen kommen beim Anmeldeversuch nur Fehlermeldungen. Was ist denn auf einmal passiert?!
    Hier der Link zur Anmeldungsseite:

    http://www.polo-magazin.de/wordpressPolo/wp-admin/

    Was kann da los sein?
    Ich muss doch schließlich ins Backend.

    Gruß
    Katrin

  • Das div wird schon in der Themedatei geschlossen, da wo es auch aufgemacht wird. Das hat nichts im Eintrag verloren. Ich könnte mir vorstellen, dass deswegen auch das schließende p fehlt, weil WP dann durch das /div durcheinander kommt. Firebug stellt das immer als Baum dar, das heißt aber nicht, dass es so im Quelltext auch drinsteht.

  • Tja, in den Beitrag kann ich ja nicht direkt reinschauen, in die DB auch nicht. Aber im HTML-Output steht eben hinter "[COLOR=#000000][COLOR=#007700][/COLOR][COLOR=#0000BB]Download[/COLOR][COLOR=#007700][/COLOR][COLOR=#0000BB][/COLOR][COLOR=#007700] ([/COLOR][COLOR=#0000BB]12[/COLOR][COLOR=#007700],[/COLOR][COLOR=#0000BB]2 MB[/COLOR][COLOR=#007700][/COLOR][/COLOR])" ein schließendes div, was da nicht hingehört. Das ist die Ursche für die Sidebar-Verschiebung, und es wäre halt die Frage, wo es herkommt. WP wird von sich aus eher nicht ein öffendes p mit einem schließenden div einfügen, will ich doch mal hoffen zumindest. Steht der Download-Link denn so im Quelltext des Beitrags oder wird der irgendwie anders eingefügt? Über ein Plugin generiert oder so?

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!