Widget klappt nicht!!!

  • Hallo,

    ich bin ein neuer Blogger, demnach auch neu hier im Forum. Ich hatte mich für ein Theme entschieden, allerdings habe ich erst später gemerkt, das dass Theme kein Widget unterstützt. Nun hatte ich mich auf die Suche gemacht, um mein Theme Widgetfähig zu machen. Habe auf Wordpress gefunden wie man es macht. Habe die Sidbar.php und die Function.php bearbeitet. Es schien so, dass es geklappt hat, aber vergeblich. Folgendes:

    Im Backend unter Design/Widgets kann ich per Dropp & Down meine Sidebar gestalten. Nach dem Speichern, wird die Sidebar, aber nicht im Frontend angezeigt.

    Woran liegt das?

    • 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

  • Hi,

    eventuell wäre es hilfreich, wenn du uns mitteilst, welches Theme du nutzen willst.

    Vermutlich ist die Anweisung get_sidebar nicht eingebaut?
    http://codex.wordpress.org/Function_Reference/get_sidebar

    Findet sich meistens in der index.php, single.php, post.php, search.php usw.

    Am besten schaust du dir ein anderes WP-Theme mal an, dann kannst du schnell herausbekommen, in welche Dateien die Anweisung überall untergebracht werden muss, damit die Sidebar auch immer zur Verfügung steht. ;)

    Bitte keine Fragen per PM, oder Foren-Chat. Für Fragen ist das öffentliche Forum da. Meine Uerdinger Seite

  • Ich nutze folgendes Theme:

    illacrimo 1.01 von [COLOR=#21759b]Design Disease[/COLOR]

    Also, ich habe in der datei, function.php folgendes unter <?php eingeragen:

    if ( function_exists('register_sidebar') )
    register_sidebar(array(
    'before_widget' => '',
    'after_widget' => '',
    'before_title' => '<div class="title">',
    'after_title' => '</div>',
    ));

    und in der sidebar.php unter <div class="SR"><div class="SRL"> folgendes:

    <?php if ( !function_exists('dynamic_sidebar') || !dynamic_sidebar($name_or_number) ) : endif;
    ?>

    Muss ich nach diesen schritten noch weitere Dateien bearbeiten? Waren die Einträge überhaupt an der richtigen Stelle? Meine Seite zeigt zumindest keine Fehler an.

    Gruß
    Resul

  • Du bist mit den Variablen etwas durcheinander gekommen. Und das function_exists() kannst du dir auch sparen.

    So geht es:
    functions.php

    sidebar.php

    PHP
    dynamic_sidebar( 'sidebar-1' );

    Wenn du weitere Widgetbereiche anlegen willst, ergänze einfach die Funktion resul_sidebar_setup() um einen Block mit register_sidebar() und einer höheren Nummer.

  • Danke erstmal toscho,

    die function.php zeigt keine fehler, aber die sidebar habe ich so übernommen, wie du es gepostet hast, dort zeigt meine Seite ein Line-Fehler. Das Problem besteht weiterhin. Im Backend eingestellte sidebar ist im Frontend nicht sichtbar. :-(((

  • Ich kopiere dir mal die gesamte function und sidebar hier rein

    Sidebar:

    <div class="SR"><div class="SRL">
    <?php if ( !function_exists('dynamic_sidebar') || !dynamic_sidebar($name_or_number) ) : endif;
    ?>


    <div class="Search">

    <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">

    <input type="text" name="s" class="keyword" />

    <div id="buttonsearch"><input name="submit" type="image" class="search" title="Search" src="<?php bloginfo('template_url'); ?>/images/ButtonTransparent.png" alt="Search" />

    </div>

    </form>

    </div>


    <div class="Syn"><div class="SynTop"></div>


    <ul>


    <li><a href="<?php bloginfo('rss2_url'); ?>">News</a> (RSS)</li>

    <li><a href="<?php bloginfo('comments_rss2_url'); ?>">Kommentare</a> (RSS)</li>

    </ul>

    </div>


    <!-- Start Flickr Photostream -->

    <?php if (function_exists('get_flickrrss')) { ?>

    <div class="Flickr">

    <h3>PhotoStream</h3>

    <ul>

    <?php get_flickrrss(); ?>

    </ul>

    </div>

    <?php } ?>

    <!-- End Flickr Photostream -->


    <div class="Categ">

    <h3>Categories</h3>

    <ul>

    <?php wp_list_cats(); ?>

    </ul>

    </div>


    <!-- Start Recent Comments -->

    <?php if (function_exists('mdv_recent_comments')) { ?>

    <div class="LatestCom">

    <h3>Letzte Kommentare</h3>

    <ul>

    <?php mdv_recent_comments('10'); ?>

    </ul>

    </div>

    <?php } ?>

    <!-- End Recent Comments -->


    </div><div class="SRR">


    <h3>Links</h3>

    <ul><?php get_links('-1', '<li>', '</li>', '', FALSE, 'id', FALSE,

    FALSE, -1, FALSE); ?>

    </ul>


    <br />


    <h3>Archiv</h3>

    <ul>


    <?php wp_get_archives('type=monthly'); ?>

    </ul>


    <br />


    <h3>Meta</h3>

    <ul>

    <?php wp_register(); ?>

    <li><?php wp_loginout(); ?></li>


    <?php wp_meta(); ?>

    </ul>


    </div></div>


    Function:

    <?php


    /*

    Plugin Name: Recent Comments

    Plugin URI: http://mtdewvirus.com/code/wordpress-plugins/

    Description: Retrieves a list of the most recent comments.

    Version: 1.18

    Author: Nick Momrik

    Author URI: http://mtdewvirus.com/

    */

    add_action( 'widgets_init', 'resul_sidebar_setup' );

    function resul_sidebar_setup()
    {
    register_sidebar(
    array (
    'name' => 'Sidebar 1',
    'id' => 'sidebar-1',
    'before_widget' => '<div id="sidebar-1">',
    'after_widget' => "</div>\n",
    )
    );
    }

    if (function_exists('mdv_recent_comments')) {

    }else{


    function mdv_recent_comments($no_comments = 10, $comment_lenth = 5, $before = '<li class="off" onmouseover=this.className="on"; onmouseout=this.className="off";>', $after = '</li>', $show_pass_post = false, $comment_style = 0) {

    global $wpdb;

    $request = "SELECT ID, comment_ID, comment_content, comment_author, comment_author_url, post_title FROM $wpdb->comments LEFT JOIN $wpdb->posts ON $wpdb->posts.ID=$wpdb->comments.comment_post_ID WHERE post_status IN ('publish','static') ";

    if(!$show_pass_post) $request .= "AND post_password ='' ";

    $request .= "AND comment_approved = '1' ORDER BY comment_ID DESC LIMIT $no_comments";

    $comments = $wpdb->get_results($request);

    $output = '';

    if ($comments) {

    foreach ($comments as $comment) {

    $comment_author = stripslashes($comment->comment_author);

    if ($comment_author == "")

    $comment_author = "anonymous";

    $comment_content = strip_tags($comment->comment_content);

    $comment_content = stripslashes($comment_content);

    $words=split(" ",$comment_content);

    $comment_excerpt = join(" ",array_slice($words,0,$comment_lenth));

    $permalink = get_permalink($comment->ID)."#comment-".$comment->comment_ID;


    if ($comment_style == 1) {

    $post_title = stripslashes($comment->post_title);


    $url = $comment->comment_author_url;


    if (empty($url))

    $output .= $before . $comment_author . ' on ' . $post_title . '.' . $after;

    else

    $output .= $before . "<a href='$url' rel='external'>$comment_author</a>" . ' on ' . $post_title . '.' . $after;

    }

    else {

    $output .= $before . '' . $comment_author . ': <a href="' . $permalink;

    $output .= '" title="View the entire comment by ' . $comment_author.'">' . $comment_excerpt.'</a>' . $after;

    }

    }

    $output = convert_smilies($output);

    } else {

    $output .= $before . "None found" . $after;

    }

    echo $output;

    }

    }

    ?>

    Also ich verstehe davon garnichts, ich will nur das meine blog seite richtig klappt. :-)

  • Warum verwendest du in der Sidebar noch den alten, kaputten Aufruf:

    PHP
    <?php if ( !function_exists('dynamic_sidebar') || !dynamic_sidebar($name_or_number) ) : endif;
    ?>

    Ich habe dir oben den korrekten Code geliefert. Benutze ihn.

    Das Plugin hat übrigens in der functions.php überhaupt nichts verloren.

    Und bitte packe Codeschnipsel hier in die entsprechenden Tags, oben rechts findest du einen Button mit der Aufschrift »PHP« dafür.

  • Ok, sorry, bin wie gesagt sehr neu hier.

    Also ich habe deinen Code so eingegeben folgender fehler taucht auf:

    Schau es dir auf meiner Seite an: Home

    Sidebar

    Was muss ich denn jetzt genau in der Function wegmachen, wenn du sagst Plugin hat da nichts zu suchen, kann ich leider nicht viel mit anfangen. Wie gesagt, ich kann zwar einige sachen ausführen, laden und einigermaßen lesen, aber von PHP verstehe ich gleich Null.

    Hier nochmal meine Function.php

  • Aaaah, ich glaub ich habe gesehen was du meinst mit dem Plugin im function.php. Ok habs gelöscht, aber ich komme immernoch nicht weiter mit meiner Sidebar:|

  • Der Sidebaraufruf ist PHP-Code, der gehört in PHP-Tags:

    PHP
    <div class="SR"><div class="SRL">
    <?php dynamic_sidebar( 'sidebar-1' ); ?>

    Zur functions.php: Alles außer dem Code, den ich oben gepostet habe, ist ein Plugin. Dieser Code gehört in eine separate Datei, die du dann ins Pluginverzeichnis schiebst und im Backend aktivierst.

    Zitat

    von PHP verstehe ich gleich Null


    Du solltest so etwas wirklich delegieren. PHP ist eine Programmiersprache mit weitreichenden Zugriffsrechten auf dem Server. Wenn du hier etwas falsch machst, kannst du dir sehr böse Sicherheitslücken schaffen.

    Such dir jemanden, der ein bißchen davon versteht und dir das abnimmt. Man muß nicht immer alles selbst machen.

  • Also, kannste mir den Ablauf mit der function.php erklären. Ich weiß ich nerve, aber danach kriege ich den rest schon hin glaube ich.

    Ich lass in der Function.php nur deinen Code drin, also in PHP-Tags denke ich mal. Der rest kommt in eine sepparate Datei? Ist der Name Relevant? In welches Verzeichnis, wo der function auch drin ist?

  • Super, zumindest sehe ich jetzt meine sidebar, was ich im backend einstelle. Es klappt. Jetzt nur noch die function bearbeiten, da warte ich lieber auf deine Antwort.

  • So, nach langem rumfummeln, habe ich es geschafft. Den zweiten Widget-Bereich habe ich auch hingekriegt. Die Plugins aus der Sidebar, habe ich rausgehauen. Falls ich die nochmal brauche, habe ich sie vorsichtshalber kopiert. Aber ich habe ähnliche Plugins als Widget, vondaher erübrigt sich das.

    So langsam könnte ich mal einige Tags und Kommandos von PHP lernen. Verstanden habe ichs ja, auch wenn es jetzt zwei tage gedauert hat.

    Danke nochmal für deine Geduld und deine Hilfe. Und allen anderen natürlich auch.

    Gruß
    Resul

  • Prima. War doch nicht so schwer. :)

    Wenn das die komplette functions.php deines Themes ist, dann weiß der Autor über WordPress auch nicht viel mehr als du. Naja, läuft ja auch so.

    Schreib noch diese Zeile rein:

    PHP
    wp_clear_scheduled_hook( 'wp_update_themes' );

    Denn sonst wird dir vielleicht ein Update deines Themes angeboten, und du überschreibst dann ungewollt deine Änderungen.

    Ändere noch in der Datei header.php diese Zeile:

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

    Sie sollte so aussehen:

    PHP
    <meta http-equiv="Content-Type" content="text/html; charset=<?php bloginfo( 'charset' ); ?>" />

    Momentan behauptest du dort nämlich, dein Blog werde in ISO-8859-1 ausgeliefert. Wird es aber nicht. Du verwendest das bessere UTF-8.

    Im Moment bekommst du damit noch kein Problem, weil WordPress per HTTP die richtige Zeichenkodierung angibt und HTTP über deine falsche HTML-Angabe siegt. Speicherst aber jemand eine deiner Seiten lokal ab und sieht sie sich dann im Browser an, so sind alle Umlaute futsch.

  • Super, das habe ich auch hingekriegt. Ich habe noch andere überlegungen, z.b. das logo oben im Kopf der Seite neben der Schrift, Integrationsblogger. Mal schauen, wollte erstmal gucken, dass ich selbst damit klarkomme. Zumindest habe ich jetzt eine Struktur. Wollte die Seite dezent haben, nicht soviel schnick schnack wie manch andere Blogger.

  • So, heut Mittag erstmals Wordpress installiert/probiert, eigenes Theme geschrieben und dank dem Thread hier auch die Widgets untergebracht, aber, kleine Ergänzung:

    PHP
    'before_widget' => '<div id="sidebar-1">'

    ist ein bissl ein Sch***, denn da bekommt JEDES Widget in einer Sidebar dieselbe ID mit. So jedenfalls war bei mir die Ausgabe. Hab das jetzt in ne Klasse geändert - wollen ja weitgehend W3C-konform bleiben :wink:

    Nichtsdestotrotz, schönen Restfeiertag noch...

Jetzt mitmachen!

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