Eigenes Theme – Teil 6 – Mehr zu den Beiträgen

Bis jetzt haben wir nur den Titel und den Inhalt des Beitrags augegeben. Hier gehört noch getuned.

Metadaten

Von den Metadaten möchte ich in der Übersicht nur das Datum und die Kategorie.
Beim Datum wird abgefragt ob eine function namens relative_date vorhanden ist. Diese Funktion werden wir später noch einfügen. Derzeit ist die Funktion nicht verfügbar weshalb die normale Datumsfunktion benützt wird (Monat und Jahr). Wenn du genauere Erklärungen zu den Funktionen suchst, dann such im Codex. Hilfreich ist es auch einfach in Google die funktion und “codex wordpress” einzugeben. Ist meist schneller als im Codex selbst zu suchen.

Inhalt des Posts

Ich möchte bei meinem Blog die Nutzung der Einzelseiten für einen Beitrag focieren. Dies hat einerseits SEO Gründe, andererseits gefallen mir Blogs nicht, die auf der Startseite die ganzen Beiträge listen. Sieht gerade bei langen Beiträgen unmöglich aus. Ich will daher auf der Startseite nur den Anfang eines Beitrags zeigen und so zum Klick auf die Einzelseite animieren. Wordpress stellt hier das sogenannte Excerpt zur Verfügung, das leider nicht ganz optimal ist. Es gibt daher einige Plugins die das Excerpt verbessern, ich wähle hier aber eine andere Variante, die Mitarbeit des Autors vorausgesetzt, die schönste Lösung bietet. Ich werde längere Beiträge mit dem more-Tag trennen. Es wird so nur der Beitrag bis zum more Tag angezeigt. Der more Tag kann per Editor eingefügt werden.
Sollte der Autor beim Feld “Auszug” etwas eintragen, dann wird dieser Auszug angezeigt.
Ansonsten möchte ich den ganzen Beitrag auf der Übersichtsseite, was bei kurzen Beiträgen eine sinnvolle Variante ist.

Wordpress bietet diese Funktionalität nicht an, sie ist aber leicht programmiert.

single.php oder index.php für Einzelseiten

Wordpress sucht bei der Anzeige eines Einzelartikels nach der Datei single.php im Theme. Ist dieses nicht vorhanden, dann stellt es Einzelbeiträge auch mit der index.php dar. Dieses Verhalten ist auch bei Kategorieseiten, Suchseiten usw. implementiert und ist genial. Dem Themeentwickler ist es nun freigestellt, ob er Ansichten extra codieren will, oder nicht. Nachdem es Ziel ist unser Theme extrem schlank zu halten, bleiben wir vorerst nur bei einer index.php. Vorteil ist auch, dass Änderungen leicht durchzuführen sind und nur die index.php angepaßt werden muss. Unterschiedliche Darstellungen müssen aber so natürlich programmiert werden, weil man ja z.b. in der Einzelanzeige immer den ganzen Text sehen will und nicht nur den Auszug. Wordpress stellt dafür die Funktion is_single zur Verfügung. Gleichzeitig stellen wir unter dem Beitrag in der Single View auch noch ein paar zusätzliche Metadaten und die Kommentare dar. Für die Kommentare gibt es die Funktion comments_template, die die Datei comments.php inkludiert. Nachdem wir diese Datei noch nicht erstellt haben verwendet Wordpress die Datei aus dem Default Theme.

Dann sollen die Titel der Beiträge noch mit den Einzelseiten verlinkt werden, weil man diese ja sonst nicht aufrufen kann.
Hier also der neue Teil innerhalb des Loops:

            <h1 id="post-<?php the_ID(); ?>" class="titel">
            <a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title(); ?>">
            <?php the_title(); ?>
            </a>
            </h1>
 
		 	<div class="metadata">
			 	<?php // --- datum - falls funktion "relative date" installiert ist, das relative Datum, sonst normal 
				if (function_exists('relative_date')) relative_date('<span class="datum">','</span>'); 
			    else {echo('im <span class="datum">'); the_time('M/y'); echo('</span>');} ?>
 
				<?php echo("&nbsp;abgelegt unter&nbsp;"); the_category(', ') ?>
			</div> <!-- end metadata -->
 
		    <div class="text">
		          <?php 
		          if (has_excerpt() and !is_single()) 
					echo $post->post_excerpt;
		           	else the_content('mehr davon...');
 
		          if (is_single()) { ?>	
		          	 <div class="postinfo">
            			<dl>
                		<dt>Info: </dt>
                		<dd><em><?php the_title(); ?></em> ist Beitrag Nr. <?php the_ID(); ?></dd>
                		<dt><?php _e('Author:'); ?> </dt>
                		<dd><?php the_author(); ?> am <?php the_date(); ?> um <?php the_time(); ?></dd>
                		<dt><?php _e('Category:'); ?> </dt>
                		<dd><?php the_category(','); ?></dd>
                		<dd><?php the_tags(''); ?> &nbsp;</dd>
                		<dt>Trackback: </dt>
                		<dd><a href="<?php trackback_url() ?>">Trackback URI</a></dd>
            			</dl>
            		</div>
 
		            <p class="prevnextpost"><?php previous_post_link(); ?>&nbsp;-&nbsp;
		            <?php next_post_link(); ?></p>
 
		    	<?php } // endif is_single() ?>
		    </div>
    		<?php comments_template(); // inkludiert comments.php in single beiträgen ?>

Das stylen erfolgt über die Klasse prevnextpost und postinfo. Das überlass ich mal dem eigenen Geschmack, ansonsten kann man sich eine Version des Themes in einem späteren Artikel downloaden.

Im Prinzip haben wir mit nicht mal sehr vielen Zeilen Code einen bereits fertig funktionsfähigen Blog erzeugt. Es gibt eine Übersicht, Einzelseiten und Kommentarfunktion. Die Posts machen wir im folgenden Beitrag noch etwas schöner.

«  -  »


Gib deinen Senf dazu

XHTML: Du kannst in deiner Antwort folgende Tags benützen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="">