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?
Widget klappt nicht!!!
-
-
- Gerade eben
- 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)
-
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_sidebarFindet 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. ;)
-
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.phpPHP
Alles anzeigenadd_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", ) ); }sidebar.php
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 bin schon am verzweifeln :-(
-
Was soll ein »Line-Fehler« sein? Poste die exakte Fehlermeldung bitte. Und vergewissere dich, daß dein Theme die Sidebar überhaupt aufruft.
-
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
PHP
Alles anzeigen<div class="SR"><div class="SRL"> dynamic_sidebar( 'sidebar-1' ); <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>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
PHP
Alles anzeigen<?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; } } ?> -
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:
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.
Zitatvon 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.
-
Kann ich die Datei so benennen wie ich will?
-
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:
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:
Sie sollte so aussehen:
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:
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...
-
hiermit wuerde es gehen:
damit kriegt jedes widget eine eigene, individuelle css id.
http://codex.wordpress.org/Function_Refer…egister_sidebar
Jetzt mitmachen!
Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!