Startseitenaufteilung Problem

  • Hallo,

    Mein Code der index.php sieht jetzt so aus:

    Ich möchte nun gerne, dass "der normale Artikel ganz oben" nicht auf Start erscheint, sondern nur meine Programmierungen am "cat", also ab hier:

    Ich bekomme es nicht hin.
    Könnt ihr mir bitte sagen wie der Code sein muss ?

    • 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

  • Du bist lustig Marx :)

    Genau das eiß ich doch nicht. Also ich weiß nicht was im Code ich löschen muss, damit nur die Cats unten, also nicht der Standartbericht (den das Kubrick von vorne herein oben stehen hat) angezeigt wird.

    Was muss ich dazu löschen ?

  • Wenn du dir deine Frage von oben mal genau durchliest, dann kommst du auch selbst drauf:

    Zitat von stevie99

    Ich möchte nun gerne, dass "der normale Artikel ganz oben" nicht auf Start erscheint, sondern nur meine Programmierungen am "cat", also ab hier:
    (PHP-Code entfernt)

    Dann weißt du (aus anderen Postings hier), dass <div class="narrowcolumn"> stehen bleiben muss. Auch if have_posts() wäre wichtig. Danach kommt ein "normaler" Loop, erkennbar an while( have_posts() )... auch das kennst du, sonst hättest du nicht die weiteren Codes eintragen können. Danach folgt die Ausgabe der Navigationslinks (auch leicht erkennbar, z.B. an der class). Und jetzt kommt schon dein Code.

    So, jetzt solltest du wieder etwas voran kommen.

  • Hallom

    ja, das habe ich verstanden. Danke.

    Aber: Ich weiss nicht, wie ich dann weiter machen muss bzw. wie es exakt und korrekt eingefügt gehört (das cats mit seinen Klassen).

    Wärest Du vielleicht so lieb und würdest mir das einmal zusammenkopieren (also code) so wie es sich gehört ?
    Dann bekomme ich keine fehlermeldungen mehr und weiß es für alle Zeiten :) ?????

    Oder machen wirs so: Was ist daran noch falsch:

    Einmal editiert, zuletzt von jottlieb (15. November 2007 um 16:48)

  • Wenn die Seite PHP-Fehler enthält, dann bekommst du ne (mehr oder weniger) aussagekräftige Fehlermeldung.

    HTML-Fehler überprüfst du am besten mit einem HTML-Validator, z.B. The W3C Markup Validation Service oder lokal mit dem HTML-Validator-Addon für den Firefox.

    Auf nen groben Blick würde ich sagen, dass der Code okay ist. id="cat" tritt öfters auf, solltest du ne Class draus machen (IDs dürfen nur 1x im Dokument auftauchen). Den DOCTYPE würde ich noch ändern.

  • Aber was angezeigt wird ist absoluter Schwachsinn auf der Seite.

    Es muss schon was Gravierendes falsch sein

    Und wie mache ich ne class aus der ID, wie muss das dann aussehen ?

    Ich habe mal alles rausgeschmissen und nur 1CAT drin !

    Code ist jetzt so:

    Jetzt wiederholt er aber das CAT immer und immer wieder endlos

    Einmal editiert, zuletzt von stevie99 (15. November 2007 um 17:01)

  • Du solltest dir erstmal Grundkenntnisse in HTML und CSS sowie in WP-Template-Tags aneignen, bevor du dir ein eigenes Theme baust.

    id="cats" -> class="cats"
    Und dann entsprechend im CSS ändern (#cats -> .cats)

    Solche Konstrukte sind natürlich Blödsinn:

    HTML
    <a href="/schlager-boulevard"<div class="kategorie-start">Boulevard</div></a>


    Was heißt "es wird Schwachsinn" angezeigt? Der Code wird dir einige Male hintereinander die neuesten 3 Posts aus der Kategorie 14 anzeigen. Was möchtest du ausgegeben haben?

  • query_posts() muss vor have_posts() aufgerufen werden. Eigentlich logisch - have_posts() gibt ja in einer Schleife (dem "Loop" -> while-Schleife) die Postings aus, die du mit query_posts() aus der Datenbank geholt hast.

  • Ok...also so: ????

    Einmal editiert, zuletzt von jottlieb (15. November 2007 um 19:07)

  • Nein, vor have_posts(). Der Ablauf ist eigentlich logisch: du holst dir mittels query_posts() die gewünschten Beiträge aus der Datenbank, danach prüfst du mit have_posts(), ob überhaupt Beiträge da sind. WENN welche da, dann gibst du die im Loop aus ("while have posts"), SONST gib eine Meldung aus.
    (Übersetze die groß geschriebenen Wörter ins Englische, dann hast du schon den halben PHP-Code: IF...ELSE...)

    Ansonsten hat ein wenig Try & Error (ausprobieren und Fehler umgehen) auch noch keinem geschadet. ;-)

  • Wenn ich einen Cat reinbaue geht es.

    Bei mehreren steigt der Server aus. Wieso ??


    P.S.: So wie ich es oben in dem Code hatte haben mehrere untereinander funktioniert komischer Weise

    Einmal editiert, zuletzt von stevie99 (16. November 2007 um 00:47)

  • Da fehlen jeweils die endifs zu den if-Anweisungen.

    Wenn du davon ausgehst, dass du immer Beiträge in den Kategorien haben wirst, dann kannst du das ganze if...else...endif auch weglassen.

    Ansonsten ist "steigt der Server aus" keine tollen Fehlerbeschreibungen. WAS passiert? WAS hast du erwartet? Gibt der Server eine Fehlermeldung aus? Wenn ja welche? DU kannst es einem ganz schön schwer machen dir zu helfen... :-?

  • Also wenn och den Code zweimalhintereinander eingegeben habe, wie folgt:

    dann erhalte ich die folgende Fehlermeldung:

    Parse error: syntax error, unexpected $end in /home/www/web44/html/wp-content/themes/default_de/index.php on line 56


    Gebe ich ihn aber ein so wie ich ihn hier hatte:

    [COLOR=#000000]<div id="content" class="narrowcolumn">

    [COLOR=#0000cc]<?php [/COLOR][COLOR=#006600]if ([/COLOR][COLOR=#0000cc]have_posts[/COLOR][COLOR=#006600]()) : [/COLOR][COLOR=#0000cc]?>
    [/COLOR]
    <div class="kategorie-start">Boulevard</div>
    <div class="entry">
    <div id="cats">
    [COLOR=#0000cc]<?php query_posts[/COLOR][COLOR=#006600]([/COLOR][COLOR=#cc0000]'cat=14&showposts=3'[/COLOR][COLOR=#006600]); [/COLOR][COLOR=#0000cc]?>[/COLOR]
    [COLOR=#0000cc]<?php [/COLOR][COLOR=#006600]while ([/COLOR][COLOR=#0000cc]have_posts[/COLOR][COLOR=#006600]()) : [/COLOR][COLOR=#0000cc]the_post[/COLOR][COLOR=#006600](); [/COLOR][COLOR=#0000cc]?>
    [/COLOR]<h2><a href="[COLOR=#0000cc]<?php the_permalink[/COLOR][COLOR=#006600]() [/COLOR][COLOR=#0000cc]?>[/COLOR]">[COLOR=#0000cc]<?php the_title[/COLOR][COLOR=#006600](); [/COLOR][COLOR=#0000cc]?>[/COLOR]</a></h2> [COLOR=#0000cc]<?php the_content_limit[/COLOR][COLOR=#006600]([/COLOR][COLOR=#0000cc]400[/COLOR][COLOR=#006600], [/COLOR][COLOR=#cc0000]"mehr..."[/COLOR][COLOR=#006600]);[/COLOR][COLOR=#0000cc]?>
    [/COLOR]
    </div>
    </div> [/COLOR]


    dann geht es

    oder wenn ich das [COLOR=#000000][COLOR=#0000cc]<?php [/COLOR][COLOR=#006600]if ([/COLOR][COLOR=#0000cc]have_posts[/COLOR][COLOR=#006600]()) : [/COLOR][COLOR=#0000cc]?> weglasse[/COLOR][/COLOR], dann geht es auch.

    P.S.: Es ist sichergestellt, dass es in jeder Kategorie immer Posts gibt !

    Einmal editiert, zuletzt von stevie99 (16. November 2007 um 12:06)

  • Parse error: syntax error, unexpected $end in /home/www/web44/html/wp-content/themes/default_de/index.php on line [B]56


    Das bedeutet, dass irgendwo ein Block nicht geschlossen wurde. Wie ich oben bereits sagte, wird das bei dir wahrscheinlich der if-Block sein.

    Zitat

    oder wenn ich das [COLOR=#000000][COLOR=#0000cc]<?php [/COLOR][COLOR=#006600]if ([/COLOR][COLOR=#0000cc]have_posts[/COLOR][COLOR=#006600]()) : [/COLOR][COLOR=#0000cc]?> weglasse[/COLOR][/COLOR], dann geht es auch.

    P.S.: Es ist sichergestellt, dass es in jeder Kategorie immer Posts gibt !


    Dann lass die if-Blöcke jeweils weg. Das "if ( have_posts() )" fragt ja nur ab, ob Beiträge vorhanden sind, und gibt im "else"-Zweig eine Meldung aus, falls keine gefunden wurden. Das könntest du in deinen Blöcken auch weglassen.

    [SIZE="1"]PS: Wie jottlieb schon sagte, verwende bitte die code/php-Tags um längere Codeblöcke hier im Forum zu kennzeichnen.[/SIZE]

  • Oh shit. Jetzt ist das schon wieder passiert. Ich versuche, dass es nicht mehr vorkommt. Entschuldigung !

    Kannst Du mir mal bitte sagen, wie so ein Code dann aussehen müsste ?
    Ach ja und funktioniert es auch ohne diese Abfrage, ob Beiträge da sind ?


  • So müsste der Code stimmen. Ich hab mal noch ein paar Einrückungen und Kommentare zur Übersicht hinzugefügt.

    Wenn have_posts() "false" liefert, also keine (weiteren) Posts da sind, dann wird die while-Schleife nicht ausgeführt. Egal ob sie vorher schon mal ausgeführt wurde oder nicht. Also auf gut deutsch: Die while-Schleife gibt aus, was da ist. Ist nichts da, dann gibt sie auch nichts aus. (Nur gibt es so halt keine Meldung, wenn keine Posts da sind.)

Jetzt mitmachen!

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