Tipps, WordPress

WordPress WYSIWYG-Editor TinyMCE erweitern #2

Das schöne am Leben ist ja: man lernt immer dazu und nie aus. Auch in diesem Bereich ist das mal wieder so, denn ein alter Artikel auf diesem meinem kleinen Blog hier, hat mal erklärt, wie man den Editor TinyMCE in WordPress an seine Bedürfnisse anpassen kann – sträflich, denn ich habe damals die Core-Dateien von WordPress angefasst.

Um so wichtiger, dass ich eine bessere Lösung aufzeige und wiedermal, in dem Fall auch mich, darauf hinweise, dass man die Core-Dateien von Systemen nicht anfasst! Aber der Artikel scheint recht beliebt und scheinbar wollen auch viele Nutzer diesen Editor anpassen. Im ersten Schritt sucht man dann nach Plugins und nicht immer wird man fündig. Es gibt also noch immer Bedarf im Plugin-Sektor von WordPress; wie im übrigen auch meine Mails zeigen.
Weiterlesen

Standard
Themes, Tipps, WordPress

WP – Tutorial, wir schreiben ein WordPress Theme – Teil 4

Es ist viel Zeit seit dem letzten Teil dieser Serie vergangen. Liegt einerseits daran, dass ich viele Projekte bearbeite, andererseits daran, dass das Feedback zur Serie so gering ausgefallen ist, dass ich dachte: Kein Interesse, dann muss ich mich auch nicht weiter bemühen. Offensichtlich habe ich aber doch einige Leser, denen das Tutorial hilft und somit mache gibt es nun einen weiteren Teil 4.

In diesem Abschnitt der Serie werden wir den Loop kennen lernen. Denn dieser stellt den Kern bei der Ausgabe im Frontend von WordPress dar. Eine ganze Reihe von Template Tags sind nur im Loop funktionstüchtig und nur im Loop hat man einfachen Zugriff auf die Datenbank. Der Loop sieht außerdem im Standard eine ganze Reihe von Daten, mit denen die einzelnen Template Tags oder eigene Funktionen arbeiten. Weiterlesen

Standard
Themes, Tipps, WordPress

WP – Tutorial, wir schreiben ein WordPress Theme – Teil 3

Nachdem wir im zweiten Teil der Serie „Ein WordPress Theme selbst erstellen” das Stylesheet mit Hilfe der Template Tags eingebunden haben, sollen nun im dritten Teil alle weiteren Daten aus dem Backend von WordPress geladen werden. Damit wird die Grundlage geschaffen, dass ein Theme die Einstellungen des jeweiligen Weblogs nutzt und das Theme in jedem beliebigen Weblog einsetzbar ist.

Gleich vorweg, es wird in diesem Artikel eine ganze Reihe an Code kommen. Bitte nicht verzweifeln, wenn es der erste Kontakt mit PHP-Syntax ist. Mit der Zeit kommt die Übung, ganz gleich wie das Lernen von HTML. Außerdem werde ich gleichzeitig auf eine Reihe Template Tags und Funktionen eingehen, die für das erstellen eines Themes von Relevanz sind und in diesem Teil des Tutorials nötig sind.

Im diesem Abschnitt des Tutorials werden wir den head-Abschnitt der index.php erweitern. Es werden nicht nur die statischen Daten so erweitert, dass die Werte aus der Datenbank gezogen werden, sondern ich erweitere gleich um eine Reihe weiterer Zeilen und Zeichen, um die Möglichkeiten und nach meiner Meinung wichtigen Daten zu integrieren. Weiterlesen

Standard
Themes, Tipps, WordPress

WP – Tutorial, wir schreiben ein WordPress Theme – Teil 2

Im ersten Teil des Tutorial zum erstellen eines WordPress-Themes haben wir Grundsteine gelegt. Ich hoffe, dass sich alle Teilnehmer mit den Markups und CSS-Styles der verschiedenen Layouts auseinander gesetzt haben?

Prinzipiell kann nun mit jedem beliebigen Layout weiter gearbeitet werden. Die Basis stellt immer eine statische HTML-Datei dar. So hat man die Möglichkeit das Layout in verschiedenen Browsern zu testen und einen Überblick über eventuelle Probleme zu erhalten.
Weiterlesen

Standard
Themes, Tipps, WordPress

WP – Tutorial, wir schreiben ein WordPress Theme – Teil 1

Inhalt:

Das Schreiben eines eigenen Themes, womit das komplette Layout einer WordPress-Applikation gemeint ist, ist das Ziel einer ganzen Reihe von WordPress-Nutzern.
Mit meinem Buch „WordPress – Weblogs einrichten und administrieren“ habe ich einen kleinen Einblick in das Erstellen in ein eigenes Theme gegeben. Immer wieder gibt es Fragen und die Tiefe des Kapitels wird kritisiert. Leider war es im Umfang des Buches nicht möglich tiefer und detaillierter auf den Entstehungsprozess eines eigenen Themes einzugehen. Außerdem kann ich in diesem Blog schreiben wie mir der Schnabel gewachsen ist und die Strings gehen mir damit leichter von der Hand.

In diesem Zusammenhang wird in den naher Zukunft hier ein komplettes Tutorial entstehen, insofern ich durch halte. Im Vorfeld habe ich schon in einem Beitrag angefragt, welches Layout bevorzugt für den Entstehungsprozess gewünscht ist. Schaut man sich die Kommentare an, dann ist schnell erkennbar, dass die Anforderungen sehr unterschiedlich sind und die Grundlagen für das Erstellen eines eigenen Themes sehr verschieden verteilt sind. Oft werden Begriffe im Umfeld von WordPress und Webdesign durcheinander geworfen und erschweren so das Verständnis.

Aus diesem Grund möchte ich im ersten Abschnitt auf Grundlagen und Vereinbarungen eingehen. Ebenso stelle ich Layouts vor, mit denen dann im Anschluss in den folgenden Teilen gearbeitet wird.

Ich wünsche Euch und mir viel Spaß mein Erstellen und Lernen. Die Artikel entstehen parallel zur Arbeit an verschiedenen Projekten, werden nur in der Freizeit oder in Wachphasen erstellt. Ich bitte also um Geduld und Einfühlungsvermögen. Ebenso bitte ich darum, dass Fehler und Verbesserungen in den Kommentaren oder Mail an mich bekannt gegeben werden. Ich erhebe nicht den Anspruch auf fehlerfreie Arbeit und freue mich über positive Kommentare, genauso wie über konstruktive Kritik.

Wenn wir eines durchs Internet lernen können, ist es Folgendes: Alle profitieren davon, wenn die wesentlichen Ressourcen frei verfügbar bleiben und kostenlos zugänglich sind.
Dann können alle etwas für sie Passendes darauf aufbauen.Lawrance Lessig

Weiterlesen

Standard
Code, PHP, Webküche

Spam mit Hilfe von CSS bekämpfen

Formulare sind ein begehrtes Ziel für Spamer. Es gibt die unterschiedlichsten Methoden um diese Spamer fern zu halten oder zu filtern. Eine Möglichkeit ist die Integration eines zusätzlichen input-Feldes, welches bei aktivem JavaScript ausgeblendet wird. Dieses Feld übergibt einen Schlüssel. Besuchen Leser die Seite ohne JS, dann müssen sie diesen Schlüssel eingeben. Dies ist nicht so einfach für den Spamer, der auch ohne JS kommt, wenn man diverse Möglichkeiten ausschöpft. Diese Möglichkeit habe ich bereits erfolgreich im Einsatz und nähere Informationen kann man im Artikel „JS AntiSpam“ nachlesen.

Eine ähnliche simple Methode ist aber ebenfalls mit CSS möglich. Leider ist diese einfache und effektive Methode nicht von mir, sondern wurde hier lediglich verwirklicht. Die Idee stammt von modernblue.
Auch CSS lässt es zu, dass man Bereiche des HTML ausblenden kann – display: none;. Nun ist es so, dass Spamer an sich dumm sind und jedes Feld, welches sie in einem Formular antreffen, ausfüllen. Dies lässt sich ohne Probleme abfragen, in meinem Beispiel mittels PHP. Ist also das Feld gefüllt, so handelt es sich um einen Spamer und es werden keine weiteren Aufgaben abgearbeitet.
Damit nun der Besucher nicht extra eine Anleitung lesen muss, bevor er das Formular nutzen kann, blenden wir dieses input-Feld aus.

Demo

Die verwirklichte Idee kann man sich ansehen und den Code ebenfalls downloaden.

HTML, Formular

Das Formular bekommt also ein weites Feld:


<input name="spamcheck" class="spamcheck" type="text" />

Damit könnte ein einfaches Formular folgendermaßen aussehen.


<form method="post" action="MACH_WAS">  
<fieldset>
	<label>Name: </label><input name="name" type="text" /><br />
	<label>E-Mail: </label><input name="email" type="text" /><br />
	<label>Mitteilung: </label><input name="message" type="text" />

	<input name="spamcheck" class="spamcheck" type="text" /><br />

	<input type="hidden" name="process" value="gesendet" />
	<input value="Senden" type="submit" />
</fieldset>
</form>

CSS-Stylesheet

Mit Hilfe von CSS wird das Feld ausgeblendet, für menschliche Besucher nicht sichtbar.


.spamcheck {
display: none !important;
}

Weitere Informationen zum Code und Demo sind unter unter diesem Link zu finden.

Standard
Tipps, Webküche, WordPress

Tipps für das Schreiben guter WordPress Tipps

Mit diesem Thema befasst Lorelle auf Blog Herald in einem aktuellen Artikel. Angesichts der Tatsache, dass die Anzahl der Tipps zur Webpublishing Plattform WordPress immer größer wird, ist dieser Artikel recht interessant.

Der Artikel weist auf einige grundlegende Regeln hin, die man eingehalten sollte – Begründungen sind hinzugefügt und die Aussagen stehen nicht leer im Raum.

Kurz und bündig, sehen die Tipps folgendermaßen aus.

  • Schreibe WordPress, nicht WordPress!
    Der Artikel verliert an Glanz und Glaubwürdigkeit, wenn man nicht das eingetragene Warenzeichen kennt. (Fällt mir auch immer wieder in Zeitschriften und auch Büchern auf)
  • Tipps zu WordPress sollten auch auf der Plattform WordPress präsentiert werden.
  • Achte auf die Darstellung von Code. Der Code sollte fehlerfrei und sauber integriert sein, ohne Character Entities
  • Bringe es auf den Punkt. Tipps sollen helfen und nicht langatmige Geschichten erzählen.
  • Innerhalb des Beitrags ist sparsam mit Werbung umzugehen.
  • Leute kommen über Suchmaschinen auf den Artikel, sie kennen die Hintergründe des Problems nicht. Erkläre also mehr als die Lösung, erkläre wozu und warum du sie anwendest.
  • Kopiere nicht den Inhalt oder den Code anderer Beiträge, wenn es nicht eine Bereicherung gibt. Ebenso gehört es sich, die Quelle zu nennen und darauf hinzuweisen.

Der Artikel geht wesentlich tiefer und beleuchtet die verschiedenen Facetten und Hintergründe – Lesebefehl für alle, die Tipps zum Thema WordPress veröffentlichen: „Tips For Writing Good WordPress Tips“.

Standard
Tipps, WordPress

WordPress WYSIWYG-Editor TinyMCE erweitern

Der Editor TinyMCE, der seit Version 2.1 von WordPress dabei ist hat eine ganze Reihe von Funktionen, die allerdings nicht standardmäßig ersichtlich sind. Außerdem gibt es die Funktion HTML-Code, die überhaupt nicht berücksichtigt wurde.

TinyMCE erweitert

Ich habe für ein Projekt den Editor verändert, so dass die Autoren leichter an die Zusatzfunktion kommen, einfach den zugehörigen Button klicken, und einen zusätzlichen Button für die Bearbeitung des kompletten HTML-Codes haben, in einem extra Fester.

Dazu muss die Konfigurationsdatei vom Editor bearbeitet werden: /wp-includes/js/tinymce/tiny_mce_config.php

Ändert den Code bei $mce_buttons in folgenden, oder passt ihn an.


$mce_buttons = apply_filters( 'mce_buttons', array( 'bold', 'italic', 'strikethrough', 'separator', 'bullist', 'numlist', 'outdent', 'indent', 'separator', 'justifyleft', 'justifycenter', 'justifyright', 'separator', 'link', 'unlink', 'image', 'wp_more', 'separator', 'spellchecker', 'separator', 'wp_help', 'wp_adv', 'wp_adv_start', 'formatselect', 'underline', 'justifyfull', 'forecolor', 'separator', 'pastetext', 'pasteword', 'separator', 'removeformat', 'cleanup', 'separator', 'charmap', 'separator', 'undo', 'redo', 'separator', 'code', 'wp_adv_end' ) );
$mce_buttons = implode( $mce_buttons, ',' );

Der Button HTML kommt durch die Erweiterung von code. Der Button für das Ein-/Ausschalten der Zusatzfunktionen kommt daher, weil ich den Tag wp_adv vorgezogen habe, vor wp_ad_start.

Weitere Links:

Standard
Tipps, WordPress

Umzug des WordPress-Blogs auf einen neuen Hosting-Provider

Es kommt leider vor, dass man umziehen muss oder möchte – aus welchen Gründen auch immer.

Um dies ohne großen Ärger zu bewerkstelligen wird im folgenden eine kleine Anleitung Schritt für Schritt hinterlegt. Außerdem gehe ich auf bekannte Probleme ein und stelle einige Lösungen bereit.
Weiterlesen

Standard
Code, PHP, Tipps, WordPress

WordPress Track- und Pingbacks seperat listen, ohne Plugin

Will man die Track- und Pingbacks im Kommentarbereich extra darstellen so kann man mit dem Plugin Trackbacklist arbeiten und dabei hilft einem die Anleitung von Peruns Weblog.
Man kann aber auch das Theme bearbeiten und dabei die Template-Datei comments.php anpassen, in dem man mit WordPress-Template-Tags arbeitet.

Im folgenden ein kleines Beispiel, wie man die Trackbacks und Pingbacks zu einem Beitrag seperat auflisten kann. Da sind der Phantasie und Abfragemechanismen keine Grenzen gesetzt. Ansehen kann man das Ganze auf dieser aktuellen Website zum Beispiel unter diesem Link. Die Track- und Pingbacks befinden sich innerhalb der Kommentare, sehen aber anders aus und enthalten keinen Text. Aus der Liste wollte ich sie nicht entfernen, da dann die Kommentare mt Bezug auf eine Kommentarnummer nicht mehr stimmen. Um die Ping- und Trackbacks komplett auszulagern, habe ich am Ende ein Code-Beispiel für eine komplette comments.php hinterlegt.
Noch mehr Tipps und vorallem Diskussion gibt es bei Robert’s Artikel „Trackbacks von Kommentaren kennen“ in den Kommentaren.

Übrigens, wer noch ein wenig Nachhilfe bei dem Begriff Trackback benötigt, der findet eine tolle Erklärung bei Michael – Was sind Trackbacks? Erklärung im Sendung-mit-der-Maus-Stil

Zuerst fragen wir ab, ob es Kommentare zu Beitrag gibt:

if ($comments)

Nun bauen wir die foreach-Schleife aus, in dem wir eine weitere Abfrage einbauen:

if ((get_comment_type() == "trackback") || (get_comment_type() == "pingback"))

Der Tag get_comment_type übergibt uns, um was für einen Kommentar es sich handelt, und in dem Fall lassen wir alle Kommentare zu, die per Trackback oder Pingback kommen. Im Ganzen sieht der Code dann folgendermaßen aus.


<?php if ($comments) : ?>
	<ol class="trackbacklist">
	<?php foreach ($comments as $comment) : if ((get_comment_type() == "trackback") || (get_comment_type() == "pingback")) : ?>

		<li id="comment-<?php comment_ID() ?>" >
			<?php comment_type('Kommentar', 'Trackback', 'Pingback'); ?><small> von </small><cite><?php comment_author_link() ?></cite>
			<br />
			<small class="commentmetadata"><?php comment_date('j. F Y') ?> um <?php comment_time('H:i') ?> <?php edit_comment_link('· bearbeiten','',''); ?></small>

			<?php comment_text() ?>
		</li>

	<?php endif; endforeach; /* end for each comment */ ?>
	</ol>
 <?php endif; ?>

Damit nun der Kommentarbereich auch wirklich nur Kommentare aus dem Textfeld übernimmt, müssen wir die Abfrage dort noch erweitern, denn noch werden ja alle Kommentare, ob Track- oder Pingback dort dargestellt. Dazu erweitert man die Schleife.
Suche nach:

<?php foreach ($comments as $comment) : ?>

und ersetze mit:

<?php foreach ($comments as $comment) : if (get_comment_type() == "comment") : ?>

Außerdem müssen wir beim Schließen der foreach-Schleife die Abfrage beenden:
Suche nach:

<?php endforeach; ?>

und ersetze mit:

<?php endif; endforeach; ?>

Die Darstellung der Kommentaranzahl wird üblicherweise mit dem Tag comments_number() erstellt, die aber alle Kommentare zählt, egal ob Track-, Pingback oder Kommentar. Dagegen hilft nur eine weiter Abfrage – WP – Trackbacks und Kommentare getrennt zählen. In diesem Artikel erkläre ich dann diese Funktion näher.

We noch mehr Tipps zum Anpassen des Kommentarbereiches möchte, der findet drei weitere Möglichkeiten im Artikel WP – Kommentarbereich anpassen. Dort erläuter ich kurz, wie man einen Counter einbaut, die Kommentare des Beitragsautors hervorhebt und wie man Gravatare zu den Kommentarautoren darstellt.

Beispiel einer kompletten comments.php mit Track- und Pingback am Ende


<?php
/*********************************************************************
comments-template mit counter, trackback, Hervorhebung des Autors 
und Trennung Kommentare zu Track- und Pingback
**********************************************************************/
?>

<div id="comments">
<?php // Do not delete these lines
	if ('comments.php' == basename($_SERVER['SCRIPT_FILENAME']))
		die ('Bitte diese Seite nicht direkt laden. Danke !');

				if (!empty($post->post_password)) { // if there's a password
						if ($_COOKIE['wp-postpass_' . COOKIEHASH] != $post->post_password) {  // and it doesn't match the cookie
				?>
				
				<p class="nocomments">Dieser Beitrag ist passwortgesch&#252;tzt. Bitte gebe das Passwort an um die Kommentare zu sehen.</p><p>
				
				<?php
				return;
						}
				}

		/* alternating varibale for comment background */
		$oddcomment = 'alt';
?>

<?php if ($comments) : ?>
	<h2 class="twost"><?php comments_number('0 Kommentare', '1 Kommentar', '% Kommentare' );?> zu &#8222;<?php the_title(); ?>&#8220;</h2>

	<ol class="commentlist">

	<?php $gravatar_default = "ADRESSE_ZUM_DEFAULTBILD"; ?>

	<?php $count = 0; foreach ($comments as $comment) : if (get_comment_type() == "comment") : $count++; ?>

		<li id="comment-<?php comment_ID() ?>"
			<?php global $comment;
				if ( ($comment->comment_author_email == get_the_author_email()) && ($comment->user_id != 0) ) {
						echo " class=\"autor_kommentar\"";
				} else {
						echo " class=\"" . $oddcomment . "\"";
				}
			?>>
			<p class="comment-number"><a href="#comment-<?php comment_ID() ?>"><?php echo $count; ?></a></p>

			<?php $gravatar_url = "http://www.gravatar.com/avatar.php?gravatar_id=" . md5(get_comment_author_email()) . "&amp;default=" . urlencode($gravatar_default) . "&amp;size=30"; ?>
			<img class="gravatar" src="<?php echo $gravatar_url ?/>" title="<?php comment_author(); ?>'s Gravatar" alt="id" />
	
			<?php comment_type('Kommentar', 'Trackback', 'Pingback'); ?><small> von </small><cite><?php comment_author_link() ?></cite>
			<?php if ($comment->comment_approved == '0') : ?>
			<em>Dein Kommentar muss noch moderiert werden.</em>
			<?php endif; ?>
			<br />
			<small class="commentmetadata"><?php comment_date('j. F Y') ?> um <?php comment_time('H:i') ?> <?php edit_comment_link('&middot; bearbeiten','',''); ?></small>

			<?php comment_text() ?>
		</li>

	<?php /* Changes every other comment to a different class */  
		if ('alt' == $oddcomment) $oddcomment = '';
		else $oddcomment = 'alt';
	?>

	<?php endif; endforeach; /* end for each comment */ ?>
	</ol>

 <?php else : // this is displayed if there are no comments so far ?>

	<?php if ('open' == $post->comment_status) : ?> 
		<!-- If comments are open, but there are no comments. -->
		
	 <?php else : // comments are closed ?>

		</p><p class="nocomments">Kommentare sind gechlossen.</p>
		
	<?php endif; ?>
<?php endif; ?>

<?php if ('open' == $post->comment_status) : ?>

<h2 class="threest" id="writecomment">Kommentar schreiben</h2>

<?php if ( get_option('comment_registration') && !$user_ID ) : ?>
<p>Du musst <a href="<?php echo get_option('siteurl'); ?>/wp-login.php?redirect_to=<?php the_permalink(); ?>">angemeldet</a> sein um einen Kommentar zu schreiben.</p>
<?php else : ?>

	<form action="<?php echo get_option('siteurl'); ?>/wp-comments-post.php" method="post" id="commentform">
		
		<?php if ( $user_ID ) : ?>	
			<p>Angemeldet als <a href="<?php echo get_option('siteurl'); ?>/wp-admin/profile.php"><?php echo $user_identity; ?></a>. <a href="<?php echo get_option('siteurl'); ?>/wp-login.php?action=logout" title="Log out of this account">Abmelden &raquo;</a></p>	
		<?php else : ?>
	
			<p>
				<input type="text" name="author" id="author" value="<?php echo $comment_author; ?/>" size="20" tabindex="1" />
				<label for="author">Name <?php if ($req) echo "<small>Pflichtfeld"; ?></label>
			</p>
			<p>
				<input type="text" name="email" id="email" value="<?php echo $comment_author_email; ?/>" size="20" tabindex="2" />
				<label for="email">eMail (bleibt versteckt) <?php if ($req) echo "<small>Pflichtfeld"; ?></label>
			</p>	
			<p>
				<input type="text" name="url" id="url" value="<?php echo $comment_author_url; ?/>" size="20" tabindex="3" />
				<label for="url">Website</label>
			</p>
			<?php if ( function_exists('math_comment_spam_protection') ) { $mcsp_info = math_comment_spam_protection();?>
			<p>
				<input type="text" name="mcspvalue" id="mcspvalue" value="" size="20" tabindex="4" />
				<label for="mcspvalue">Spamschutz: <?php echo $mcsp_info['operand1'] . ' + ' . $mcsp_info['operand2'] . ' = ?' ?> <small>Pflichtfeld</small></label>
				<input type="hidden" name="mcspinfo" value="<?php echo $mcsp_info['result']; ?/>" />
			</p>
			<?php } ?>
				
		<?php endif; ?>
			<p class="textfeld" >Textfeld &raquo; <a href="javascript:change_textbox_size(-80);" title="Textfeld verkleinern" >kleiner</a> &middot; <a href="javascript:change_textbox_size(80);" title="Textfeld vergr&ouml;&szlig;ern" >gr&ouml;&szlig;er</a></p>
			<p>
				<textarea name="comment" id="comment" cols="30" rows="5" tabindex="4"></textarea>
			</p>
			<p>
				<input name="submit" type="submit" id="submit" tabindex="6" value="Kommentar absenden" />
				<input type="hidden" name="comment_post_ID" value="<?php echo $id; ?/>" />
			</p>
		<?php do_action('comment_form', $post->ID); ?>
	</form>
	<?php endif; // If registration required and not logged in ?>

<?php endif; // if you delete this the sky will fall on your head ?>

<?php if ($comments) : ?>
	<ol class="trackbacklist">

	<?php foreach ($comments as $comment) : if ((get_comment_type() == "trackback") || (get_comment_type() == "pingback")) : $count++?>

		<li id="comment-<?php comment_ID() ?>" class="<?php echo $oddcomment; ?>">
			<p class="comment-number"><a href="#comment-<?php comment_ID() ?>"><?php echo $count; ?></a></p>
			<?php comment_type('Kommentar', 'Trackback', 'Pingback'); ?><small> von </small><cite><?php comment_author_link() ?></cite>
			<br />
			<small class="commentmetadata"><?php comment_date('j. F Y') ?> um <?php comment_time('H:i') ?> <?php edit_comment_link('&middot; bearbeiten','',''); ?></small>

			<?php //comment_text() ?>
		</li>

	<?php /* Changes every other comment to a different class */  
		if ('alt' == $oddcomment) $oddcomment = '';
		else $oddcomment = 'alt';
	?>

	<?php endif; endforeach; /* end for each comment */ ?>
	</ol>
 <?php else : // this is displayed if there are no comments so far ?>

	<?php if ('open' == $post->comment_status) : ?> 
		<!-- If comments are open, but there are no comments. -->
		
	 <?php else : // comments are closed ?>

		<p class="nocomments">Trackpacks/Pingbacks sind gechlossen.</p>
		
	<?php endif; ?>
<?php endif; ?>

</div>
Standard