Individuelles Seitenblätter

  • Hallo,
    ich habe eine frage zur ausgabe der seitenblätter funktion.

    ich würde gerne beim seiten blättern nicht den gesamten titel des nächsten beitrages ausgeben sondern nur eine bestimmte zeichenanzahl. wie ist das machbar?

    den code habe ich gefunden:

    <?php
    $prev_link = get_previous_post_link('&laquo; %link');
    $next_link = get_next_post_link('%link &raquo;');
    ?>

    wenn ich jetzt %link ändere wird es zwar gezeigt funktioniert aber nicht....

    danke für eure hilfe

    ps: ich suche schon eine weile und habe nichts gefunden

    • 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

  • dein code weist nur den inhalt von 'next_post_link()' an eine varibel zu, genannt $next_link (ausgabe erfolgt wahrscheinlich an einer anderen stelle).

    die variabel kannst du zB mit 'substr()' verkuerzen (im beispiel auf 20 zeichen):

    PHP
    <?php
    $next_link = get_next_post_link('%link &raquo;');
    $next_link = substr($next_link,0,20);
    ?>



    genauso mit $prev_link;

    http://www.w3schools.com/php/func_string_substr.asp

  • danke für deine schnelle antwort... habe das mal versucht ander stelle einzubauen, funktioniert aber nicht... ist es nicht möglich einfach die ausgabe zu ändern wie in den kommentaren?

    also: letzter beitrag - nächster beitrag

    das ist der gesamte code aus der single.php

    leider funktioniert das so nicht... was mache ich falsch???

    Einmal editiert, zuletzt von Nagual (27. Mai 2010 um 17:08)

  • diese zeile ist verbaut:

    PHP
    $next_link = substr($previous_link,0,20);



    sollte so aussehen:

    PHP
    $prev_link = substr($prev_link,0,20);



    die nummer 20 ist natuerlich nur ein beispiel

    ps: 'funktioniert aber nicht' ist ziemlich unbrauchbar als fehlerbeschreibung.
    besser waere, mitzuteilen, was nicht geht; zB: 'die prev-links werden nicht angezeigt' oder so...

  • also wenn ich es so versuche zeigt es mir gar nichts mehr an...

    orginal: so wird der gesamte titel angezeigt (zu lang und unschön)

    HTML
    <?php
    $prev_link = get_previous_post_link('&laquo; %link');
    $next_link = get_next_post_link('%link &raquo;');
    ?>

    geändert: wird gar nichts mehr angezeigt und layout verbogen

    HTML
    <?php
    $prev_link = substr($prev_link,0,20);
    $next_link = substr($next_link,0,20);
    ?>

    oder setz ich das an die falsche stelle?

    ps: sorry php greenhorn :|

    Einmal editiert, zuletzt von Nagual (27. Mai 2010 um 17:23)

  • habe es in allen erdenklichen variationen versucht einzufügen... bekomme es einfach nicht geändert.... möchte nur das der titel nicht komplett angezeigt wird... kann mir keiner auf die sprünge helfen???

  • mein fehler;
    ich hatte nicht aufgepasst, und uebersehen, dass 'get_next_post_link()' keine original wordpress funktion ist, sondern zum artisteer theme gehoert.
    ausserdem war ich faelschlicherweise davon ausgegangen, dass die funktion nur den text wiedergibt, und nicht den gesamten link-code.
    das macht meinen vorschlag unbrauchbar.

    das ganze ist leider wesentlich aufwendiger.

    im prinzip muesstest du versuchen, den code der funktion in den templatedateien vom theme zu finden (vielleicht in functions.php), und dann sehen, ob darin direkt was an der laenge des titels geandert werden kann.

    oder du versuchst, den inhalt des strings '$next_link' bzw '$prev_link' zu zerlegen, und den eigentlichen titel zu isolieren, dann zu kuerzen, und wieder zusammenzubauen.
    der erste schritt dazu waere, den html-code im browser anzusehen, und die entsprechende stelle zu finden, wo der link ausgegeben wird.

    wenn du einen link zu deiner seite posten kannst, kann vielleicht jemand hier im forum einen blick darauf werfen, und was dazu sagen.

  • [INDENT]mein fehler;
    ich hatte nicht aufgepasst, und uebersehen, dass 'get_next_post_link()' keine original wordpress funktion ist, sondern zum artisteer theme gehoert.[/INDENT]

    mein fehler.... habe es mit keinem wort erwähnt das es sich um artisteer handelt :)

    das projekt ist leider noch nicht online, deswegen kann ich keinen link posten...

    das ist die functions.php (leider konnte ich nicht die ganze posten - zu viele zeichen) aber ich vermute mal das man es in diesem bereich ändern kann

    vielen dank für deine hilfe

  • kann man den code nicht an dieser stelle erweitern?


    HTML
    ob_start();
    		previous_posts_link($label);
                    substr($previous_link,0,20);
    		return ob_get_clean();
  • PHP
    if (!function_exists('get_previous_posts_link')) {
        function get_previous_posts_link($label)
        {
            ob_start();
            previous_posts_link($label);
            return ob_get_clean();
        }
    }



    dieser code, zum beispiel, prueft nur ob die artisteer-eigene funktion vorhanden ist, und wenn nicht, verwendet dann mit einem programmiertrick die entsprechende wortpress funktion, um diesen 'previous_post' - link als eine variabel zu erzeugen.

    das ist jedoch genug information, um einen weiteren versuch zu starten:

    der original code:

    PHP
    <?php
    $prev_link = get_previous_post_link('&laquo; %link');
    $next_link = get_next_post_link('%link &raquo;');
    ?>




    versuchsweise (ohne garantie, dass es funktioniert)
    anstelle des original codes einzusetzen:



    wenn die artisteer-funktion in etwa dasselbe ausgibt, wie die entsprechende wordpress-funktion, dann besteht eine gute chance, dass es funktioniert.

    das vorgehen ist, den totalen string in teile zu zerschiessen ( info zur php explode() funktion http://www.w3schools.com/php/func_string_explode.asp )
    und dann den titel zu isolieren und kuerzen; und ales danach wieder zusammenzukleben ( zur php implode() funktion http://www.w3schools.com/php/func_string_implode.asp )

    wenn alles generell funktioniert: wenn das ergebnis zu 'abgeschnitten' aussieht, kann man mit stringbearbeitung noch ein '...' am ende eines gekuerzten titels anhaengen (und kurze titel unveraendert lassen):

    am beispiel des $prev_link:

    PHP
    $prev_link = get_previous_post_link('&laquo; %link');
     
      $bits = explode('">',$prev_link); 
      $link_text = explode('</a>',$bits[1]);
      if( strlen($link_text[0]) >= 20) :  
      $link_text[0] = substr($link_text[0],0,20).'&hellip;'; endif;
      $bits[1] = implode('</a>',$link_text);
    $prev_link = implode('">',$bits);
  • RESPEKT ALCHYMYTH!!! so funktioniert es sehr gut... habe es genaus so eingesetzt. vielen herzlichen dank!!! wenn ich am ende der beiträge angekommen bin zeigt es mit statt leer das (">) an. woran könnte das liegen?

    kann man über diese codezeile auch die ausgabe verändern? also statt dem titelauschnitt "nächster beitrag/vorheriger beitrag"?

    auf jedenfall an dieser stelle nochmal ein dickes dankeschön für deine hilfe!!!

  • also: vorheriger beitrag / nächster beitrag habe ich inzwischen rausgefunden... :wink:

    orginal:

    HTML
    <div class="navigation">
    	<div class="alignleft"><?php echo $prev_link; ?></div>
    	<div class="alignright"><?php echo $next_link; ?></div>
    </div>

    geändert:

    HTML
    <div class="navigation">
    <div class="alignleft"><?php previous_post_link('%link','&laquo; Vorheriger Beitrag') ?></div>
    <div class="alignright"><?php next_post_link('%link','N&auml;chster Beitrag &raquo;'); ?></div>
    </div>
  • zum vorletzten beitrag:
    die anzeige von '">' kommt davon, dass dieser code auch bei einem leeren feld ausgefuehrt wird;
    ich hatte vergessen, das im code zu checken:
    verbesserung:




    bemerkung zu '[COLOR=black]previous_post_link()' und 'next_post_link()':[/COLOR]
    [COLOR=black]wenn du diese wordpress eigenenen funktionen (template tags) verwendest, verlierst du leider wieder die kontrolle ueber die laenge des ausgegebenen titels.[/COLOR]
    [COLOR=black][/COLOR]

  • alles bestens problem gelöst!!! funktioniert einwandfrei!!! das ist ein forum in dem man wirklich hilfe bekommt :D

    VIELEN DANK

Jetzt mitmachen!

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